github.com/RevenueMonster/sqlike@v1.0.6/jsonb/registry_test.go (about) 1 package jsonb 2 3 import ( 4 "reflect" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestRegistry(t *testing.T) { 11 var ( 12 rg = buildDefaultRegistry() 13 err error 14 ) 15 16 t.Run("SetKindCoder", func(t *testing.T) { 17 kind := reflect.String 18 require.Panics(t, func() { 19 rg.SetKindCoder(kind, textMarshalerEncoder(), nil) 20 }) 21 require.Panics(t, func() { 22 rg.SetKindCoder(kind, nil, textUnmarshalerDecoder()) 23 }) 24 }) 25 26 t.Run("SetTypeCoder", func(t *testing.T) { 27 rt := reflect.TypeOf("") 28 require.Panics(t, func() { 29 rg.SetTypeCoder(rt, textMarshalerEncoder(), nil) 30 }) 31 require.Panics(t, func() { 32 rg.SetTypeCoder(rt, nil, textUnmarshalerDecoder()) 33 }) 34 }) 35 36 t.Run("LookupDecoder", func(t *testing.T) { 37 t.Run("", func(t *testing.T) { 38 var str string 39 v := reflect.ValueOf(str) 40 41 dec, err := rg.LookupDecoder(v.Type()) 42 require.NoError(t, err) 43 require.NotNil(t, dec) 44 45 enc, err := rg.LookupEncoder(v) 46 require.NoError(t, err) 47 require.NotNil(t, enc) 48 }) 49 50 t.Run("on missing type", func(t *testing.T) { 51 ch := make(chan interface{}) 52 v := reflect.ValueOf(ch) 53 _, err = rg.LookupDecoder(v.Type()) 54 require.Error(t, err) 55 _, err = rg.LookupEncoder(v) 56 require.Error(t, err) 57 }) 58 }) 59 }