package domain import "testing" func TestSumByTeam(t *testing.T) { ledger := []LedgerEntry{ ledgerFor(1, 10), ledgerForAthlete(1, 101, 10), ledgerFor(2, 6), } got := SumByTeam(ledger, 1) if !nearlyEqual(got[1].Total, 20) || !nearlyEqual(got[1].TeamOnly, 10) || !nearlyEqual(got[1].Individual, 10) { t.Fatalf("单位1汇总 = %+v,期望 总分20 / 单位10 / 个人10", got[1]) } if !nearlyEqual(got[2].Total, 6) { t.Fatalf("单位2汇总 = %+v,期望 6", got[2]) } half := SumByTeam(ledger, 0.5) if !nearlyEqual(half[1].Total, 15) { t.Fatalf("系数 0.5 时单位1总分 = %v,期望 15", half[1].Total) } } func TestSumByAthlete(t *testing.T) { ledger := []LedgerEntry{ ledgerForAthlete(1, 101, 10), ledgerForAthlete(1, 101, 2), ledgerFor(1, 100), // 仅记单位,不进个人榜 } got := SumByAthlete(ledger) if len(got) != 1 || !nearlyEqual(got[101], 12) { t.Fatalf("个人汇总 = %+v,期望只有 101:12", got) } }