@@ -67,36 +67,6 @@ func TestGet(t *testing.T) {
67
67
require .True (t , ok )
68
68
})
69
69
70
- t .Run ("the key is a pointer" , func (t * testing.T ) {
71
- m := orderedmap .New [* string , int ]()
72
-
73
- notExistingKey := toPtr ("not-existing-key" )
74
- require .Equal (t , 0 , m .Get (notExistingKey ))
75
- v , ok := m .GetOk (notExistingKey )
76
- require .Zero (t , v )
77
- require .False (t , ok )
78
-
79
- existingKey := toPtr ("existing-key" )
80
- m .Set (existingKey , 1 )
81
- require .Equal (t , 1 , m .Get (existingKey ))
82
- v , ok = m .GetOk (existingKey )
83
- require .Equal (t , 1 , v )
84
- require .True (t , ok )
85
-
86
- // Using a different pointer with the same value returns no result
87
- require .Equal (t , 0 , m .Get (toPtr ("existing-key" )))
88
- v , ok = m .GetOk (toPtr ("existing-key" ))
89
- require .Zero (t , v )
90
- require .False (t , ok )
91
-
92
- // test empty key
93
- m .Set (nil , 2 )
94
- require .Equal (t , 2 , m .Get (nil ))
95
- v , ok = m .GetOk (nil )
96
- require .Equal (t , 2 , v )
97
- require .True (t , ok )
98
- })
99
-
100
70
t .Run ("custom comparable key" , func (t * testing.T ) {
101
71
type A struct {
102
72
b []byte
@@ -345,6 +315,47 @@ func TestClone(t *testing.T) {
345
315
})
346
316
}
347
317
318
+ func TestMarshallJSON (t * testing.T ) {
319
+ t .Run ("empty map" , func (t * testing.T ) {
320
+ m := orderedmap .New [string , int ]()
321
+ mapJSON , err := m .MarshalJSON ()
322
+ require .NoError (t , err )
323
+ require .JSONEq (t , `{}` , string (mapJSON ))
324
+ })
325
+ t .Run ("respect the order of insertion" , func (t * testing.T ) {
326
+ m := orderedmap .New [string , int ]()
327
+ m .Set ("a" , 1 )
328
+ m .Set ("b" , 2 )
329
+ m .Set ("c" , 3 )
330
+ mapJSON , err := m .MarshalJSON ()
331
+ require .NoError (t , err )
332
+ require .JSONEq (t , `{"a":1,"b":2,"c":3}` , string (mapJSON ))
333
+ })
334
+ t .Run ("can serialize int keys" , func (t * testing.T ) {
335
+ m := orderedmap .New [int , bool ]()
336
+ m .Set (1 , true )
337
+ m .Set (2 , true )
338
+ m .Set (3 , true )
339
+ mapJSON , err := m .MarshalJSON ()
340
+ require .NoError (t , err )
341
+ require .JSONEq (t , `{"1":true,"2":true,"3":true}` , string (mapJSON ))
342
+ })
343
+ t .Run ("can serialize pointer keys" , func (t * testing.T ) {
344
+ m := orderedmap.NewWithConversionFunc [* int , bool , int ](func (i * int ) int {
345
+ if i == nil {
346
+ return 0
347
+ }
348
+ return * i
349
+ })
350
+ m .Set (toPtr (1 ), true )
351
+ m .Set (toPtr (2 ), true )
352
+ m .Set (toPtr (3 ), true )
353
+ mapJSON , err := m .MarshalJSON ()
354
+ require .NoError (t , err )
355
+ require .JSONEq (t , `{"1":true,"2":true,"3":true}` , string (mapJSON ))
356
+ })
357
+ }
358
+
348
359
func toPtr [V any ](v V ) * V {
349
360
return & v
350
361
}
0 commit comments