diff --git a/encoding_test.go b/encoding_test.go index 61199c0..3e67a30 100644 --- a/encoding_test.go +++ b/encoding_test.go @@ -36,4 +36,70 @@ func TestDefaultCodecRegistry(t *testing.T) { assert.Equal(t, c, decoder) }) + + t.Run("CodecNotFound", func(t *testing.T) { + registry := NewCodecRegistry() + + _, err := registry.Encoder("myformat") + require.Error(t, err) + + _, err = registry.Decoder("myformat") + require.Error(t, err) + }) + + t.Run("FormatIsCaseInsensitive", func(t *testing.T) { + registry := NewCodecRegistry() + + c := codec{} + + err := registry.RegisterCodec("MYFORMAT", c) + require.NoError(t, err) + + { + encoder, err := registry.Encoder("myformat") + require.NoError(t, err) + + assert.Equal(t, c, encoder) + } + + { + encoder, err := registry.Encoder("MYFORMAT") + require.NoError(t, err) + + assert.Equal(t, c, encoder) + } + + { + decoder, err := registry.Decoder("myformat") + require.NoError(t, err) + + assert.Equal(t, c, decoder) + } + + { + decoder, err := registry.Decoder("MYFORMAT") + require.NoError(t, err) + + assert.Equal(t, c, decoder) + } + }) + + t.Run("OverrideDefault", func(t *testing.T) { + registry := NewCodecRegistry() + + c := codec{} + + err := registry.RegisterCodec("yaml", c) + require.NoError(t, err) + + encoder, err := registry.Encoder("yaml") + require.NoError(t, err) + + assert.Equal(t, c, encoder) + + decoder, err := registry.Decoder("yaml") + require.NoError(t, err) + + assert.Equal(t, c, decoder) + }) }