MCPcopy Create free account
hub / github.com/astercloud/aster / TestMarshalDeterministic_Struct

Function TestMarshalDeterministic_Struct

pkg/util/json_test.go:85–138  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

83}
84
85func TestMarshalDeterministic_Struct(t *testing.T) {
86 type Inner struct {
87 Z int `json:"z"`
88 A int `json:"a"`
89 }
90
91 type Outer struct {
92 Name string `json:"name"`
93 Data map[string]int `json:"data"`
94 Inner Inner `json:"inner"`
95 Extra map[string]Inner `json:"extra,omitempty"`
96 }
97
98 o := Outer{
99 Name: "test",
100 Data: map[string]int{"c": 3, "a": 1, "b": 2},
101 Inner: Inner{
102 Z: 26,
103 A: 1,
104 },
105 Extra: map[string]Inner{
106 "second": {Z: 2, A: 0},
107 "first": {Z: 1, A: 0},
108 },
109 }
110
111 data, err := MarshalDeterministic(o)
112 if err != nil {
113 t.Fatalf("MarshalDeterministic failed: %v", err)
114 }
115
116 // 验证结果是确定性的
117 var results []string
118 for range 5 {
119 d, _ := MarshalDeterministic(o)
120 results = append(results, string(d))
121 }
122
123 for i, r := range results {
124 if r != results[0] {
125 t.Errorf("Iteration %d differs: %s", i, r)
126 }
127 }
128
129 // 解析验证结构正确
130 var parsed map[string]any
131 if err := json.Unmarshal(data, &parsed); err != nil {
132 t.Fatalf("Failed to parse result: %v", err)
133 }
134
135 if parsed["name"] != "test" {
136 t.Errorf("Expected name 'test', got %v", parsed["name"])
137 }
138}
139
140func TestMarshalDeterministic_NilValues(t *testing.T) {
141 var nilMap map[string]int

Callers

nothing calls this directly

Calls 1

MarshalDeterministicFunction · 0.85

Tested by

no test coverage detected