From d5f3e0387108f1b57e15b74738b083fa9e9e2747 Mon Sep 17 00:00:00 2001 From: Hiroaki Izu Date: Mon, 20 Jul 2020 21:59:48 +0900 Subject: [PATCH] avro: add boolean to resolver --- decoder_union_test.go | 14 ++++++++++++++ encoder_union_test.go | 14 ++++++++++++++ resolver.go | 1 + 3 files changed, 29 insertions(+) diff --git a/decoder_union_test.go b/decoder_union_test.go index 400b2c7e..85ad3d47 100644 --- a/decoder_union_test.go +++ b/decoder_union_test.go @@ -242,6 +242,20 @@ func TestDecoder_UnionInterfaceInMap(t *testing.T) { assert.Equal(t, map[string]interface{}{"foo": 27}, got) } +func TestDecoder_UnionInterfaceInMapWithBool(t *testing.T) { + defer ConfigTeardown() + + data := []byte{0x01, 0x0c, 0x06, 0x66, 0x6F, 0x6F, 0x02, 0x01, 0x00} + schema := `{"type":"map", "values": ["null", "boolean"]}` + dec, _ := avro.NewDecoder(schema, bytes.NewReader(data)) + + var got map[string]interface{} + err := dec.Decode(&got) + + assert.NoError(t, err) + assert.Equal(t, map[string]interface{}{"foo": true}, got) +} + func TestDecoder_UnionInterfaceMap(t *testing.T) { defer ConfigTeardown() diff --git a/encoder_union_test.go b/encoder_union_test.go index 69cc0836..9126d798 100644 --- a/encoder_union_test.go +++ b/encoder_union_test.go @@ -230,6 +230,20 @@ func TestEncoder_UnionInterfaceMap(t *testing.T) { assert.Equal(t, []byte{0x02, 0x01, 0x0a, 0x06, 0x66, 0x6f, 0x6f, 0x36, 0x00}, buf.Bytes()) } +func TestEncoder_UnionInterfaceInMapWithBool(t *testing.T) { + defer ConfigTeardown() + + schema := `{"type":"map", "values": ["null", "boolean"]}` + buf := bytes.NewBuffer([]byte{}) + enc, err := avro.NewEncoder(schema, buf) + assert.NoError(t, err) + + err = enc.Encode(map[string]interface{}{"foo": true}) + + assert.NoError(t, err) + assert.Equal(t, []byte{0x01, 0x0c, 0x06, 0x66, 0x6F, 0x6F, 0x02, 0x01, 0x00}, buf.Bytes()) +} + func TestEncoder_UnionInterfaceArray(t *testing.T) { defer ConfigTeardown() diff --git a/resolver.go b/resolver.go index e3441ee9..f3e49833 100644 --- a/resolver.go +++ b/resolver.go @@ -32,6 +32,7 @@ func NewTypeResolver() *TypeResolver { r.Register(string(Double), float64(0)) r.Register(string(String), "") r.Register(string(Bytes), []byte{}) + r.Register(string(Boolean), bool(true)) return r }