GoDoxy/internal/utils/trie/json_test.go

36 lines
711 B
Go

package trie
import (
"encoding/json"
"testing"
)
func TestMarshalUnmarshalJSON(t *testing.T) {
trie := NewTrie()
data := map[string]any{
"foo.bar": 42.12,
"foo.baz": "hello",
"qwe.rt.yu.io": 123.45,
}
for k, v := range data {
trie.Store(NewKey(k), v)
}
// MarshalJSON
bytesFromTrie, err := json.Marshal(trie)
if err != nil {
t.Fatalf("json.Marshal error: %v", err)
}
// UnmarshalJSON
newTrie := NewTrie()
if err := json.Unmarshal(bytesFromTrie, newTrie); err != nil {
t.Fatalf("UnmarshalJSON error: %v", err)
}
for k, v := range data {
got, ok := newTrie.Get(NewKey(k))
if !ok || got != v {
t.Errorf("UnmarshalJSON: key %q got %v, want %v", k, got, v)
}
}
}