MCPcopy Index your code
hub / github.com/ByteStorage/FlyDB / TestAddExtension

Function TestAddExtension

lib/encoding/messagepack_test.go:179–213  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

177}
178
179func TestAddExtension(t *testing.T) {
180
181 type CustomType struct {
182 Name string
183 }
184
185 // global extention info.
186 const extensionID byte = 1
187
188 encoder := func(rv reflect.Value) ([]byte, error) {
189 ct := rv.Interface().(CustomType)
190 return []byte(ct.Name), nil
191 }
192 decoder := func(rv reflect.Value, b []byte) error {
193 rv.Set(reflect.ValueOf(CustomType{Name: string(b)}))
194 return nil
195 }
196
197 m := NewMessagePackEncoder()
198 err := m.AddExtension(reflect.TypeOf(CustomType{}), extensionID, encoder, decoder)
199 if err != nil {
200 t.Fatalf("Failed adding extension: %v", err)
201 }
202 data := CustomType{Name: "test"}
203 dataVerify := CustomType{}
204 err = m.enc.Encode(&data)
205 assert.NoError(t, err)
206 assert.NotNil(t, m.Bytes())
207 d := NewMessagePackDecoder(m.Bytes())
208 err = d.AddExtension(reflect.TypeOf(CustomType{}), extensionID, encoder, decoder)
209 assert.NoError(t, err)
210 err = d.Decode(&dataVerify)
211 assert.NoError(t, err)
212 assert.EqualValues(t, dataVerify, data)
213}

Callers

nothing calls this directly

Calls 7

NewMessagePackEncoderFunction · 0.85
NewMessagePackDecoderFunction · 0.85
AddExtensionMethod · 0.80
SetMethod · 0.65
EncodeMethod · 0.45
BytesMethod · 0.45
DecodeMethod · 0.45

Tested by

no test coverage detected