1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package ndr
- import (
- "bufio"
- "bytes"
- "encoding/binary"
- "encoding/hex"
- "testing"
- "github.com/stretchr/testify/assert"
- )
- func TestReadFloat32(t *testing.T) {
- tests := []struct {
- hexStr string
- value float32
- order binary.ByteOrder
- }{
- {"3E200000", 0.15625, binary.BigEndian},
- {"00000000", 0.0, binary.BigEndian},
- {"3F800000", 1.0, binary.BigEndian},
- {"BF800000", -1.0, binary.BigEndian},
- {"00000001", 1.4e-45, binary.BigEndian},
- {"00400000", 5.877472e-39, binary.BigEndian},
- {"007FFFFF", 1.1754942e-38, binary.BigEndian},
- {"00800000", 1.1754944e-38, binary.BigEndian},
- {"7F7FFFFF", 3.4028235e38, binary.BigEndian},
- //TODO need some littleendian test vectors
- }
- for i, test := range tests {
- b, _ := hex.DecodeString(test.hexStr)
- //t.Logf("%s %08b\n", test.hexStr,b)
- r := bufio.NewReader(bytes.NewReader(b))
- dec := Decoder{
- r: r,
- ch: CommonHeader{Endianness: test.order},
- }
- f, err := dec.readFloat32()
- if err != nil {
- t.Errorf("could not read float32 test %d: %v", i, err)
- }
- assert.Equal(t, test.value, f, "float32 not as expect for test %d: %s", i, test.hexStr)
- }
- }
|