github.com/wtfutil/wtf@v0.43.0/wtf/numbers_test.go (about) 1 package wtf 2 3 import ( 4 "testing" 5 6 "gotest.tools/assert" 7 ) 8 9 func Test_Round(t *testing.T) { 10 tests := []struct { 11 name string 12 input float64 13 expected int 14 }{ 15 { 16 name: "negative", 17 input: -3, 18 expected: -3, 19 }, 20 { 21 name: "integer", 22 input: 3, 23 expected: 3, 24 }, 25 { 26 name: "float down", 27 input: 3.123456, 28 expected: 3, 29 }, 30 { 31 name: "float up", 32 input: 3.998786, 33 expected: 4, 34 }, 35 } 36 37 for _, tt := range tests { 38 t.Run(tt.name, func(t *testing.T) { 39 actual := Round(tt.input) 40 assert.Equal(t, tt.expected, actual) 41 }) 42 } 43 } 44 45 func Test_TruncateFloat(t *testing.T) { 46 tests := []struct { 47 name string 48 input float64 49 precision int 50 expected float64 51 }{ 52 { 53 name: "negative precision", 54 input: 23.234567, 55 precision: -2, 56 expected: 0, 57 }, 58 { 59 name: "zero precision", 60 input: 23.234567, 61 precision: 0, 62 expected: 23, 63 }, 64 { 65 name: "positive precision", 66 input: 23.234567, 67 precision: 2, 68 expected: 23.23, 69 }, 70 } 71 72 for _, tt := range tests { 73 t.Run(tt.name, func(t *testing.T) { 74 actual := TruncateFloat64(tt.input, tt.precision) 75 assert.Equal(t, tt.expected, actual) 76 }) 77 } 78 }