@@ -87,20 +87,22 @@ defmodule Jason.DecodeTest do
87
87
88
88
test "copying strings on decode" do
89
89
assert parse! ( "{}" , strings: :copy ) == % { }
90
+ as = String . duplicate ( "a" , 101 )
91
+ bs = String . duplicate ( "b" , 102 )
90
92
91
93
# Copy decode, copies the key
92
- assert [ { key , value } ] = Map . to_list ( parse! ( ~s( {"foo ": "bar "}) , strings: :copy ) )
93
- assert key == "foo"
94
- assert value == "bar"
95
- assert :binary . referenced_byte_size ( key ) == 3
96
- assert :binary . referenced_byte_size ( value ) == 3
94
+ assert [ { key , value } ] = Map . to_list ( parse! ( ~s( {"#{ as } ": "#{ bs } "}) , strings: :copy ) )
95
+ assert key == as
96
+ assert value == bs
97
+ assert :binary . referenced_byte_size ( key ) == byte_size ( as )
98
+ assert :binary . referenced_byte_size ( value ) == byte_size ( bs )
97
99
98
100
# Regular decode references the original string
99
- assert [ { key , value } ] = Map . to_list ( parse! ( ~s( {"foo ": "bar "}) ) )
100
- assert key == "foo"
101
- assert value == "bar"
102
- assert :binary . referenced_byte_size ( key ) == 14
103
- assert :binary . referenced_byte_size ( value ) == 14
101
+ assert [ { key , value } ] = Map . to_list ( parse! ( ~s( {"#{ as } ": "#{ bs } "}) ) )
102
+ assert key == as
103
+ assert value == bs
104
+ assert :binary . referenced_byte_size ( key ) > byte_size ( as ) + byte_size ( bs )
105
+ assert :binary . referenced_byte_size ( value ) > byte_size ( bs ) + byte_size ( bs )
104
106
end
105
107
106
108
test "custom object key mapping function" do
0 commit comments