diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2020-10-20 21:34:14 +0900 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-20 21:34:14 +0900 |
commit | d76e5fc1d2cedeba29fe7a5292f5d451dea0da57 (patch) | |
tree | a7b26f7d3d1debb29000b1de774e3c62a49170cf /tests | |
parent | 01e4823ee1b9837d7289ae4eb35c9d74535e0f5e (diff) | |
parent | 9bf8aa21b36de3bd90bed85e6c85412426b03d9d (diff) | |
download | json-d76e5fc1d2cedeba29fe7a5292f5d451dea0da57.tar.gz |
Merge pull request #447 from Shopify/global-freeze-option
Implement a freeze: parser option
Diffstat (limited to 'tests')
-rw-r--r-- | tests/json_parser_test.rb | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/tests/json_parser_test.rb b/tests/json_parser_test.rb index 514441e..e29f3f1 100644 --- a/tests/json_parser_test.rb +++ b/tests/json_parser_test.rb @@ -218,6 +218,17 @@ class JSONParserTest < Test::Unit::TestCase end end + def test_freeze + assert_predicate parse('{}', :freeze => true), :frozen? + assert_predicate parse('[]', :freeze => true), :frozen? + assert_predicate parse('"foo"', :freeze => true), :frozen? + + if string_deduplication_available? + assert_same -'foo', parse('"foo"', :freeze => true) + assert_same -'foo', parse('{"foo": 1}', :freeze => true).keys.first + end + end + def test_parse_comments json = <<EOT { @@ -468,6 +479,16 @@ EOT private + def string_deduplication_available? + r1 = rand.to_s + r2 = r1.dup + begin + (-r1).equal?(-r2) + rescue NoMethodError + false # No String#-@ + end + end + def assert_equal_float(expected, actual, delta = 1e-2) Array === expected and expected = expected.first Array === actual and actual = actual.first |