github.com/lynxsecurity/viper@v1.10.0/internal/encoding/encoder_test.go (about) 1 package encoding 2 3 import ( 4 "testing" 5 ) 6 7 type encoder struct { 8 b []byte 9 } 10 11 func (e encoder) Encode(_ interface{}) ([]byte, error) { 12 return e.b, nil 13 } 14 15 func TestEncoderRegistry_RegisterEncoder(t *testing.T) { 16 t.Run("OK", func(t *testing.T) { 17 registry := NewEncoderRegistry() 18 19 err := registry.RegisterEncoder("myformat", encoder{}) 20 if err != nil { 21 t.Fatal(err) 22 } 23 }) 24 25 t.Run("AlreadyRegistered", func(t *testing.T) { 26 registry := NewEncoderRegistry() 27 28 err := registry.RegisterEncoder("myformat", encoder{}) 29 if err != nil { 30 t.Fatal(err) 31 } 32 33 err = registry.RegisterEncoder("myformat", encoder{}) 34 if err != ErrEncoderFormatAlreadyRegistered { 35 t.Fatalf("expected ErrEncoderFormatAlreadyRegistered, got: %v", err) 36 } 37 }) 38 } 39 40 func TestEncoderRegistry_Decode(t *testing.T) { 41 t.Run("OK", func(t *testing.T) { 42 registry := NewEncoderRegistry() 43 encoder := encoder{ 44 b: []byte("encoded value"), 45 } 46 47 err := registry.RegisterEncoder("myformat", encoder) 48 if err != nil { 49 t.Fatal(err) 50 } 51 52 b, err := registry.Encode("myformat", "some value") 53 if err != nil { 54 t.Fatal(err) 55 } 56 57 if string(b) != "encoded value" { 58 t.Fatalf("expected 'encoded value', got: %#v", string(b)) 59 } 60 }) 61 62 t.Run("EncoderNotFound", func(t *testing.T) { 63 registry := NewEncoderRegistry() 64 65 _, err := registry.Encode("myformat", "some value") 66 if err != ErrEncoderNotFound { 67 t.Fatalf("expected ErrEncoderNotFound, got: %v", err) 68 } 69 }) 70 }