61 lines
1.6 KiB
Go
61 lines
1.6 KiB
Go
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
|
|
}
|