1package ndr 2 3import ( 4 "bufio" 5 "bytes" 6 "encoding/binary" 7 "encoding/hex" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11) 12 13func TestReadFloat32(t *testing.T) { 14 tests := []struct { 15 hexStr string 16 value float32 17 order binary.ByteOrder 18 }{ 19 {"3E200000", 0.15625, binary.BigEndian}, 20 {"00000000", 0.0, binary.BigEndian}, 21 {"3F800000", 1.0, binary.BigEndian}, 22 {"BF800000", -1.0, binary.BigEndian}, 23 {"00000001", 1.4e-45, binary.BigEndian}, 24 {"00400000", 5.877472e-39, binary.BigEndian}, 25 {"007FFFFF", 1.1754942e-38, binary.BigEndian}, 26 {"00800000", 1.1754944e-38, binary.BigEndian}, 27 {"7F7FFFFF", 3.4028235e38, binary.BigEndian}, 28 //TODO need some littleendian test vectors 29 } 30 for i, test := range tests { 31 b, _ := hex.DecodeString(test.hexStr) 32 //t.Logf("%s %08b\n", test.hexStr,b) 33 r := bufio.NewReader(bytes.NewReader(b)) 34 dec := Decoder{ 35 r: r, 36 ch: CommonHeader{Endianness: test.order}, 37 } 38 f, err := dec.readFloat32() 39 if err != nil { 40 t.Errorf("could not read float32 test %d: %v", i, err) 41 } 42 assert.Equal(t, test.value, f, "float32 not as expect for test %d: %s", i, test.hexStr) 43 } 44} 45