github.com/pavlo67/common@v0.5.3/common/mathlib/numbers_test.go (about) 1 package mathlib 2 3 import "testing" 4 5 func TestDivide(t *testing.T) { 6 tests := []struct { 7 name string 8 total int 9 minPart float64 10 maxPart float64 11 minLastRatio float64 12 wantNum int 13 wantPart int 14 wantPartLast int 15 }{ 16 { 17 name: "exact", 18 total: 25, 19 minPart: 4, 20 maxPart: 6, 21 minLastRatio: 0.5, 22 wantNum: 5, 23 wantPart: 5, 24 wantPartLast: 5, 25 }, 26 { 27 name: "bigRest", 28 total: 26, 29 minPart: 4, 30 maxPart: 6, 31 minLastRatio: 0.6, 32 wantNum: 5, 33 wantPart: 5, 34 wantPartLast: 6, 35 }, 36 { 37 name: "smallRest", 38 total: 27, 39 minPart: 4, 40 maxPart: 6, 41 minLastRatio: 0.5, 42 wantNum: 5, 43 wantPart: 6, 44 wantPartLast: 3, 45 }, 46 } 47 for _, tt := range tests { 48 t.Run(tt.name, func(t *testing.T) { 49 gotNum, gotPart, gotPartLast := Divide(tt.total, tt.minPart, tt.maxPart, tt.minLastRatio) 50 if gotNum != tt.wantNum { 51 t.Errorf("Divide() gotNum = %v, wantDistance %v", gotNum, tt.wantNum) 52 } 53 if gotPart != tt.wantPart { 54 t.Errorf("Divide() gotPart = %v, wantDistance %v", gotPart, tt.wantPart) 55 } 56 if gotPartLast != tt.wantPartLast { 57 t.Errorf("Divide() gotPartLast = %v, wantDistance %v", gotPartLast, tt.wantPartLast) 58 } 59 }) 60 } 61 }