MCPcopy Create free account
hub / github.com/apache/fory / TestMetaStringResolver

Function TestMetaStringResolver

go/fory/tests/metastring_resolver_test.go:29–107  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

27)
28
29func TestMetaStringResolver(t *testing.T) {
30 resolver := fory.NewMetaStringResolver()
31 encoder := meta.NewEncoder('$', '_')
32 buffer := fory.NewByteBuffer(make([]byte, 512)) // Allocate enough space
33 var bufErr fory.Error
34
35 // Test 1: Regular English string
36 metaStr1, _ := encoder.Encode("hello, world")
37 metaBytes1 := resolver.GetMetaStrBytes(&metaStr1)
38 resolver.WriteMetaStringBytes(buffer, metaBytes1, &bufErr)
39 if bufErr.HasError() {
40 t.Fatalf("write failed: %v", bufErr.Error())
41 }
42 got1, _ := resolver.ReadMetaStringBytes(buffer, &bufErr)
43 if got1.Hashcode != metaBytes1.Hashcode || !bytes.Equal(got1.Data, metaBytes1.Data) {
44 t.Errorf("Mismatch in English string")
45 }
46
47 // Test 2: Manually constructed MetaStringBytes
48 data2 := []byte{0xBF, 0x05, 0xA4, 0x71, 0xA9, 0x92, 0x53, 0x96, 0xA6, 0x49, 0x4F, 0x72, 0x9C, 0x68, 0x29, 0x80}
49 metaBytes2 := fory.NewMetaStringBytes(data2, fory.ComputeMetaStringHash(data2, meta.LOWER_SPECIAL))
50 resolver.WriteMetaStringBytes(buffer, metaBytes2, &bufErr)
51 if bufErr.HasError() {
52 t.Fatalf("write failed: %v", bufErr.Error())
53 }
54 got2, _ := resolver.ReadMetaStringBytes(buffer, &bufErr)
55 if got2.Hashcode != metaBytes2.Hashcode || !bytes.Equal(got2.Data, metaBytes2.Data) {
56 t.Errorf("Mismatch in custom data")
57 }
58
59 // Test 3: Empty string
60 metaStr3, _ := encoder.Encode("")
61 metaBytes3 := resolver.GetMetaStrBytes(&metaStr3)
62 resolver.WriteMetaStringBytes(buffer, metaBytes3, &bufErr)
63 if bufErr.HasError() {
64 t.Fatalf("write failed: %v", bufErr.Error())
65 }
66 got3, _ := resolver.ReadMetaStringBytes(buffer, &bufErr)
67 if got3.Hashcode != metaBytes3.Hashcode || !bytes.Equal(got3.Data, metaBytes3.Data) {
68 t.Errorf("Mismatch in empty string")
69 }
70
71 // Test 4: Chinese string
72 metaStr4, _ := encoder.Encode("你好,世界")
73 metaBytes4 := resolver.GetMetaStrBytes(&metaStr4)
74 resolver.WriteMetaStringBytes(buffer, metaBytes4, &bufErr)
75 if bufErr.HasError() {
76 t.Fatalf("write failed: %v", bufErr.Error())
77 }
78 got4, _ := resolver.ReadMetaStringBytes(buffer, &bufErr)
79 if got4.Hashcode != metaBytes4.Hashcode || !bytes.Equal(got4.Data, metaBytes4.Data) {
80 t.Errorf("Mismatch in Chinese string")
81 }
82
83 // Test 5: Japanese string (more than 16 bytes, triggers hash-based encoding)
84 metaStr5, _ := encoder.Encode("こんにちは世界")
85 metaBytes5 := resolver.GetMetaStrBytes(&metaStr5)
86 resolver.WriteMetaStringBytes(buffer, metaBytes5, &bufErr)

Callers

nothing calls this directly

Calls 7

EncodeMethod · 0.95
GetMetaStrBytesMethod · 0.95
WriteMetaStringBytesMethod · 0.95
HasErrorMethod · 0.95
ErrorMethod · 0.95
ReadMetaStringBytesMethod · 0.95
EqualMethod · 0.45

Tested by

no test coverage detected