go-ml.dev/pkg/base@v0.0.0-20200610162856-60c38abac71b/tests/fixed8_test.go (about) 1 package tests 2 3 import ( 4 "fmt" 5 "go-ml.dev/pkg/base/fu" 6 "gotest.tools/assert" 7 "testing" 8 ) 9 10 type FIX8S struct { 11 f32 float32 12 f8 fu.Fixed8 13 s8 string 14 s8x string 15 err bool 16 } 17 18 var fix8s = []FIX8S{ 19 {0, fu.AsFixed8(0), "0", "0", false}, 20 {0, fu.AsFixed8(0), "0.00", "0", false}, 21 {0, fu.AsFixed8(0), "0.001", "0", false}, 22 {1, fu.AsFixed8(1), "1", "1", false}, 23 {1, fu.AsFixed8(1), "1.000", "1", false}, 24 {-1, fu.AsFixed8(-1), "-1", "-1", false}, 25 {-0.3, fu.AsFixed8(float32(-0.3)), "-0.3", "-0.3", false}, 26 {0.1, fu.AsFixed8(float32(0.1)), "0.1", "0.1", false}, 27 {0.11, fu.AsFixed8(float32(0.11)), "0.11", "0.11", false}, 28 {0.11, fu.AsFixed8(float32(0.11)), "0.111", "0.11", false}, 29 {0.11, fu.AsFixed8(float32(0.11)), "0.111", "0.11", false}, 30 {1.27, fu.AsFixed8(float32(1.27)), "1.271", "1.27", true}, 31 {0, fu.AsFixed8(float32(0)), "1.28", "0", true}, 32 } 33 34 func (x FIX8S) String(v fu.Fixed8) string { 35 return fmt.Sprintf("v: %v, f32: %v, f8: %v, s8: %v, s8x: %v", v, x.f32, x.f8, x.s8, x.s8x) 36 } 37 38 func Test_Fixed8strings(t *testing.T) { 39 for _, x := range fix8s { 40 v, err := fu.Fast8f(x.s8) 41 if err != nil { 42 assert.Assert(t, x.err) 43 } else { 44 assert.Assert(t, v == x.f8, x.String(v)) 45 assert.Assert(t, v.Float32() == x.f32, x.String(v)) 46 assert.Assert(t, fu.AsFixed8(x.f32) == v, x.String(v)) 47 assert.Assert(t, v.String() == x.s8x, x.String(v)) 48 } 49 } 50 }