Files
GaCy-GO/internal/common/currency_wars_xaodev_test.go
T

64 lines
1.9 KiB
Go
Raw Normal View History

package common
import "testing"
func TestCurrencyWarsXaodevRulesMatchCapturedDivisions(t *testing.T) {
c := loadCurrencyWarsTestCatalog(t)
v, err := LoadCurrencyWarsXaodev(c)
if err != nil {
t.Fatal(err)
}
for _, d := range v.Divisions {
for _, r := range v.NodeRules {
add, err := v.BranchDifficulty(d.DivisionID, r.ID)
if err != nil {
t.Fatalf("division %d option %d: %v", d.DivisionID, r.ID, err)
}
if d.BinaryNodeDiffAddRule == 0 && add != 0 {
t.Fatalf("division %d with zero rule adds difficulty %d", d.DivisionID, add)
}
if r.Quality == v.Policy.NormalQuality && add != 0 {
t.Fatal("normal branch adds difficulty")
}
}
}
if _, err := v.BranchDifficulty(0, 0); err == nil {
t.Fatal("unknown rule accepted")
}
changed := *c
changed.ClientVersion += "-mismatch"
if _, err := LoadCurrencyWarsXaodev(&changed); err == nil {
t.Fatal("revision mismatch accepted")
}
}
func TestCurrencyWarsBattleNodeExperienceUsesModeChapterAndBoss(t *testing.T) {
c := loadCurrencyWarsTestCatalog(t)
for _, boss := range []bool{false, true} {
kind, scalar, array := "Monster", "GridFight_GainExpWhenWaveEnd", "GridFight_OCGainExpWhenWaveEndList"
if boss {
kind, scalar, array = "Boss", "GridFight_GainExpWhenBossWaveEnd", "GridFight_OCGainExpWhenBossWaveEndList"
}
want, err := c.IntegerRule(scalar)
if err != nil {
t.Fatal(err)
}
got, err := c.BattleNodeExperience(false, 1, kind)
if err != nil || uint64(got) != uint64(want) {
t.Fatalf("normal %s: gain=%d err=%v", kind, got, err)
}
values, err := c.IntegerArrayRule(array)
if err != nil {
t.Fatal(err)
}
for index, want := range values {
got, err := c.BattleNodeExperience(true, uint32(index+1), kind)
if err != nil || got != want {
t.Fatalf("OC %s chapter %d: gain=%d err=%v", kind, index+1, got, err)
}
}
if _, err := c.BattleNodeExperience(true, uint32(len(values)+1), kind); err == nil {
t.Fatal("missing chapter accepted")
}
}
}