package domain import "testing" func TestRealmFullName(t *testing.T) { if got := RealmFullName(2, 1); got != "筑基期·初期" { t.Fatalf("RealmFullName(2,1) = %s, want 筑基期·初期", got) } if got := RealmFullName(5, 3); got != "化神期·圆满" { t.Fatalf("RealmFullName(5,3) = %s, want 化神期·圆满", got) } // 非法境界返回未知,不 panic if got := RealmFullName(99, 99); got != "未知境界·未知" { t.Fatalf("RealmFullName(99,99) = %s, want 未知境界·未知", got) } } func TestDefaultExpToNext(t *testing.T) { cases := []struct { tier, minor int32 want int64 }{ {1, 1, 1000}, {1, 2, 2500}, {1, 3, 10000}, {2, 1, 5000}, {3, 2, 62500}, {6, 3, 30000000}, } for _, c := range cases { if got := DefaultExpToNext(c.tier, c.minor); got != c.want { t.Fatalf("DefaultExpToNext(%d,%d) = %d, want %d", c.tier, c.minor, got, c.want) } } } func TestDefaultTribulationBaseRate(t *testing.T) { // 大境界渡劫成功率应低于同境界层内小境界突破 if got := DefaultTribulationBaseRate(2, true); got != 0.55 { t.Fatalf("DefaultTribulationBaseRate(2,true) = %v, want 0.55", got) } if got := DefaultTribulationBaseRate(2, false); got != 0.70 { t.Fatalf("DefaultTribulationBaseRate(2,false) = %v, want 0.70", got) } if got := DefaultTribulationBaseRate(6, true); got != 0.35 { t.Fatalf("DefaultTribulationBaseRate(6,true) = %v, want 0.35", got) } // 炼气期不存在渡劫,应为 100% if got := DefaultTribulationBaseRate(1, false); got != 1.0 { t.Fatalf("DefaultTribulationBaseRate(1,false) = %v, want 1.0", got) } } func TestThunderAndFireLayerCoef(t *testing.T) { // 境界越高,系数越大 thunderCases := map[int32]float64{2: 1.0, 3: 1.2, 4: 1.5, 5: 1.8, 6: 2.2} for tier, want := range thunderCases { if got := ThunderLayerCoef(tier); got != want { t.Fatalf("ThunderLayerCoef(%d) = %v, want %v", tier, got, want) } } fireCases := map[int32]float64{2: 1.0, 3: 1.3, 4: 1.6, 5: 2.0, 6: 2.5} for tier, want := range fireCases { if got := FireLayerCoef(tier); got != want { t.Fatalf("FireLayerCoef(%d) = %v, want %v", tier, got, want) } } }