33 lines
1.0 KiB
Go
33 lines
1.0 KiB
Go
package service
|
|
|
|
import "testing"
|
|
|
|
func TestDeriveUserSegment(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
baselinePerDay int
|
|
smokingYears float64
|
|
expectedSegment string
|
|
}{
|
|
{name: "新手用户", baselinePerDay: 6, smokingYears: 1.5, expectedSegment: "newbie"},
|
|
{name: "中度用户_按日均", baselinePerDay: 12, smokingYears: 1, expectedSegment: "moderate"},
|
|
{name: "中度用户_按烟龄", baselinePerDay: 8, smokingYears: 3.2, expectedSegment: "moderate"},
|
|
{name: "重度用户_按日均", baselinePerDay: 20, smokingYears: 2, expectedSegment: "heavy"},
|
|
{name: "重度用户_按烟龄", baselinePerDay: 9, smokingYears: 10, expectedSegment: "heavy"},
|
|
}
|
|
|
|
for _, tc := range tests {
|
|
tc := tc
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
got := deriveUserSegment(tc.baselinePerDay, tc.smokingYears)
|
|
if got != tc.expectedSegment {
|
|
t.Fatalf("deriveUserSegment(%d, %.1f)=%s, want=%s", tc.baselinePerDay, tc.smokingYears, got, tc.expectedSegment)
|
|
}
|
|
})
|
|
}
|
|
}
|