76 lines
1.9 KiB
Go
76 lines
1.9 KiB
Go
package controller
|
|
|
|
import (
|
|
"blazing/common/data/xmlres"
|
|
"blazing/common/socket/errorcode"
|
|
"blazing/logic/service/player"
|
|
playermodel "blazing/modules/player/model"
|
|
"testing"
|
|
)
|
|
|
|
func firstPetIDForControllerTest(t *testing.T) int {
|
|
t.Helper()
|
|
|
|
for id := range xmlres.PetMAP {
|
|
return id
|
|
}
|
|
|
|
t.Fatal("xmlres.PetMAP is empty")
|
|
return 0
|
|
}
|
|
|
|
func TestSetPetExpCapsLevelAt100(t *testing.T) {
|
|
petID := firstPetIDForControllerTest(t)
|
|
petInfo := playermodel.GenPetInfo(petID, 31, 0, 0, 99, nil, 0)
|
|
if petInfo == nil {
|
|
t.Fatal("failed to generate test pet")
|
|
}
|
|
|
|
expPool := petInfo.NextLvExp + 10_000
|
|
testPlayer := player.NewPlayer(nil)
|
|
testPlayer.Info = &playermodel.PlayerInfo{
|
|
ExpPool: expPool,
|
|
PetList: []playermodel.PetInfo{*petInfo},
|
|
}
|
|
|
|
currentPet := &testPlayer.Info.PetList[0]
|
|
result, err := (Controller{}).SetPetExp(&PetSetExpInboundInfo{
|
|
CatchTime: currentPet.CatchTime,
|
|
Exp: expPool,
|
|
}, testPlayer)
|
|
if err != 0 {
|
|
t.Fatalf("expected SetPetExp to succeed, got err=%d", err)
|
|
}
|
|
if currentPet.Level != 100 {
|
|
t.Fatalf("expected pet level to stop at 100, got %d", currentPet.Level)
|
|
}
|
|
if result.Exp != 10_000 {
|
|
t.Fatalf("expected overflow exp to remain in pool, got %d", result.Exp)
|
|
}
|
|
}
|
|
|
|
func TestSetPetExpRejectsPetAtLevel100(t *testing.T) {
|
|
petID := firstPetIDForControllerTest(t)
|
|
petInfo := playermodel.GenPetInfo(petID, 31, 0, 0, 100, nil, 0)
|
|
if petInfo == nil {
|
|
t.Fatal("failed to generate test pet")
|
|
}
|
|
|
|
testPlayer := player.NewPlayer(nil)
|
|
testPlayer.Info = &playermodel.PlayerInfo{
|
|
ExpPool: 50_000,
|
|
PetList: []playermodel.PetInfo{*petInfo},
|
|
}
|
|
|
|
result, err := (Controller{}).SetPetExp(&PetSetExpInboundInfo{
|
|
CatchTime: petInfo.CatchTime,
|
|
Exp: 12_345,
|
|
}, testPlayer)
|
|
if err != errorcode.ErrorCodes.ErrSystemError {
|
|
t.Fatalf("expected level-100 pet to be rejected, got err=%d", err)
|
|
}
|
|
if result.Exp != 50_000 {
|
|
t.Fatalf("expected exp pool to remain unchanged, got %d", result.Exp)
|
|
}
|
|
}
|