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  }