package fight import ( "blazing/logic/service/common" "blazing/modules/player/model" "testing" ) func TestArrangePetsBySlotLimit(t *testing.T) { pets := []model.PetInfo{ {ID: 1, Hp: 10}, {ID: 2, Hp: 10}, {ID: 3, Hp: 10}, {ID: 4, Hp: 10}, {ID: 5, Hp: 10}, {ID: 6, Hp: 10}, } slots := ArrangePetsBySlotLimit(pets, 3) if len(slots) != 3 { t.Fatalf("expected 3 slots, got %d", len(slots)) } if len(slots[0]) != 2 || slots[0][0].ID != 1 || slots[0][1].ID != 4 { t.Fatalf("slot 0 mismatch: %+v", slots[0]) } if len(slots[1]) != 2 || slots[1][0].ID != 2 || slots[1][1].ID != 5 { t.Fatalf("slot 1 mismatch: %+v", slots[1]) } if len(slots[2]) != 2 || slots[2][0].ID != 3 || slots[2][1].ID != 6 { t.Fatalf("slot 2 mismatch: %+v", slots[2]) } } func TestExpandPlayersWithSlotLimit(t *testing.T) { players := []common.PlayerI{&stubPlayer{}, &stubPlayer{}} petsByPlayer := [][]model.PetInfo{ { {ID: 1, Hp: 10}, {ID: 2, Hp: 10}, {ID: 3, Hp: 10}, }, { {ID: 11, Hp: 10}, {ID: 12, Hp: 10}, }, } flatPlayers, flatSlots, err := ExpandPlayersWithSlotLimit(players, petsByPlayer, 1) if err != 0 { t.Fatalf("unexpected err: %v", err) } if len(flatPlayers) != 2 || len(flatSlots) != 2 { t.Fatalf("unexpected flatten result: players=%d slots=%d", len(flatPlayers), len(flatSlots)) } if len(flatSlots[0]) != 3 || flatSlots[0][0].ID != 1 || flatSlots[0][1].ID != 2 || flatSlots[0][2].ID != 3 { t.Fatalf("player0 slot mismatch: %+v", flatSlots[0]) } if len(flatSlots[1]) != 2 || flatSlots[1][0].ID != 11 || flatSlots[1][1].ID != 12 { t.Fatalf("player1 slot mismatch: %+v", flatSlots[1]) } }