2024-06-24 12:37:05 +03:00
|
|
|
package viper
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
type codec struct{}
|
|
|
|
|
|
|
|
func (codec) Encode(_ map[string]any) ([]byte, error) {
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (codec) Decode(_ []byte, _ map[string]any) error {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDefaultCodecRegistry(t *testing.T) {
|
|
|
|
t.Run("OK", 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)
|
|
|
|
|
|
|
|
decoder, err := registry.Decoder("myformat")
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
assert.Equal(t, c, decoder)
|
|
|
|
})
|
2024-06-24 12:47:00 +03:00
|
|
|
|
|
|
|
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)
|
|
|
|
})
|
2024-06-24 12:37:05 +03:00
|
|
|
}
|