summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJean Boussier <jean.boussier@gmail.com>2019-07-24 16:01:20 -0400
committerJean Boussier <jean.boussier@gmail.com>2019-11-28 09:35:26 +0000
commit7dae24894df275549c37b2d810541a7e7ea306b3 (patch)
tree7392678721cd2a71c216bfc1598ee10a2133231d /test
parent04f97f7a56d1f0db987d8c6d6ba1b18a77a7c5e9 (diff)
downloadpsych-7dae24894df275549c37b2d810541a7e7ea306b3.zip
Implement `freeze` option for Pysch.load
Diffstat (limited to 'test')
-rw-r--r--test/psych/test_psych.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/psych/test_psych.rb b/test/psych/test_psych.rb
index eeadc86..8fd9d27 100644
--- a/test/psych/test_psych.rb
+++ b/test/psych/test_psych.rb
@@ -192,6 +192,22 @@ class TestPsych < Psych::TestCase
assert_equal({ 'hello' => 'world' }, got)
end
+ def test_load_freeze
+ data = Psych.load("--- {foo: ['a']}", freeze: true)
+ assert_predicate data, :frozen?
+ assert_predicate data['foo'], :frozen?
+ assert_predicate data['foo'].first, :frozen?
+ end
+
+ def test_load_freeze_deduplication
+ unless String.method_defined?(:-@) && (-("a" * 20)).equal?((-("a" * 20)))
+ skip "This Ruby implementation doesn't support string deduplication"
+ end
+
+ data = Psych.load("--- ['a']", freeze: true)
+ assert_same 'a', data.first
+ end
+
def test_load_default_fallback
assert_equal false, Psych.load("")
end