github.com/hamba/avro/v2@v2.22.1-0.20240518180522-aff3955acf7d/converter_test.go (about) 1 package avro 2 3 import ( 4 "bytes" 5 "strconv" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 ) 10 11 func TestLongConverter(t *testing.T) { 12 tests := []struct { 13 data []byte 14 typ Type 15 want int64 16 }{ 17 { 18 data: []byte{0xE2, 0xA2, 0xF3, 0xAD, 0x07}, 19 typ: Int, 20 want: 987654321, 21 }, 22 } 23 24 for i, test := range tests { 25 test := test 26 t.Run(strconv.Itoa(i), func(t *testing.T) { 27 r := NewReader(bytes.NewReader(test.data), 10) 28 29 got := createLongConverter(test.typ)(r) 30 31 assert.Equal(t, test.want, got) 32 }) 33 } 34 } 35 36 func TestFloatConverter(t *testing.T) { 37 tests := []struct { 38 data []byte 39 typ Type 40 want float32 41 }{ 42 { 43 data: []byte{0xE2, 0xA2, 0xF3, 0xAD, 0x07}, 44 typ: Int, 45 want: 987654321, 46 }, 47 { 48 data: []byte{0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01}, 49 typ: Long, 50 want: 9223372036854775807, 51 }, 52 } 53 54 for i, test := range tests { 55 test := test 56 t.Run(strconv.Itoa(i), func(t *testing.T) { 57 r := NewReader(bytes.NewReader(test.data), 10) 58 59 got := createFloatConverter(test.typ)(r) 60 61 assert.Equal(t, test.want, got) 62 }) 63 } 64 } 65 66 func TestDoubleConverter(t *testing.T) { 67 tests := []struct { 68 data []byte 69 typ Type 70 want float64 71 }{ 72 { 73 data: []byte{0xE2, 0xA2, 0xF3, 0xAD, 0x07}, 74 typ: Int, 75 want: 987654321, 76 }, 77 { 78 data: []byte{0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x01}, 79 typ: Long, 80 want: 9223372036854775807, 81 }, 82 { 83 data: []byte{0x62, 0x20, 0x71, 0x49}, 84 typ: Float, 85 want: float64(float32(987654.124)), 86 }, 87 } 88 89 for i, test := range tests { 90 test := test 91 t.Run(strconv.Itoa(i), func(t *testing.T) { 92 r := NewReader(bytes.NewReader(test.data), 10) 93 94 got := createDoubleConverter(test.typ)(r) 95 96 assert.Equal(t, test.want, got) 97 }) 98 } 99 }