package controller import ( "blazing/common/data/xmlres" "blazing/logic/service/player" playermodel "blazing/modules/player/model" blservice "blazing/modules/player/service" "testing" ) func TestUsePetItemOutOfFightAppliesToBackupPetInMemory(t *testing.T) { petID := firstPetIDForControllerTest(t) backupPet := playermodel.GenPetInfo(petID, 31, 0, 0, 50, nil, 0) if backupPet == nil { t.Fatal("failed to generate backup pet") } if backupPet.MaxHp <= 1 { t.Fatalf("expected generated pet to have max hp > 1, got %d", backupPet.MaxHp) } backupPet.Hp = 1 testPlayer := player.NewPlayer(nil) testPlayer.Info = &playermodel.PlayerInfo{ UserID: 1, PetList: []playermodel.PetInfo{}, BackupPetList: []playermodel.PetInfo{*backupPet}, } testPlayer.Service = blservice.NewUserService(testPlayer.Info.UserID) itemID, recoverHP := firstRecoverHPItemForControllerTest(t) if recoverHP <= 0 { t.Fatalf("expected positive recover hp for item %d, got %d", itemID, recoverHP) } _, err := (Controller{}).UsePetItemOutOfFight(&C2S_USE_PET_ITEM_OUT_OF_FIGHT{ CatchTime: backupPet.CatchTime, ItemID: int32(itemID), }, testPlayer) if err != 0 { t.Fatalf("expected backup pet item use to succeed in-memory, got err=%d", err) } updatedPet := testPlayer.Info.BackupPetList[0] if updatedPet.Hp <= 1 { t.Fatalf("expected backup pet hp to increase in memory, got hp=%d", updatedPet.Hp) } } func firstRecoverHPItemForControllerTest(t *testing.T) (uint32, int) { t.Helper() for id, cfg := range xmlres.ItemsMAP { if cfg.HP > 0 { return uint32(id), cfg.HP } } t.Fatal("xmlres.ItemsMAP has no HP recovery item") return 0, 0 }