diff options
author | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-27 00:44:04 +0000 |
---|---|---|
committer | hsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-08-27 00:44:04 +0000 |
commit | 867581dd755bd202cefc605af5e081ba2ba8c1ec (patch) | |
tree | 60b9cfa3907cdddfbd5d3ca840a9c6eb32935e50 /test/psych/test_yaml_special_cases.rb | |
parent | e0311eb847bfa1c526aac4485889548ad8152ce3 (diff) | |
download | ruby-867581dd755bd202cefc605af5e081ba2ba8c1ec.tar.gz |
Merge psych-3.1.0.pre1.
* Update bundled libyaml-0.2.1 from 0.1.7.
https://github.com/ruby/psych/pull/368
* Unify Psych's API: To use keyword arguments with method call.
https://github.com/ruby/psych/pull/358
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@64544 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/psych/test_yaml_special_cases.rb')
-rw-r--r-- | test/psych/test_yaml_special_cases.rb | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/test/psych/test_yaml_special_cases.rb b/test/psych/test_yaml_special_cases.rb new file mode 100644 index 0000000000..66448d4efa --- /dev/null +++ b/test/psych/test_yaml_special_cases.rb @@ -0,0 +1,130 @@ +# frozen_string_literal: true + +require_relative 'helper' + +require 'stringio' +require 'tempfile' + +module Psych + class TestYamlSpecialCases < TestCase + def setup + super + end + + def test_empty_string + s = "" + assert_equal false, Psych.load(s) + assert_equal [], Psych.load_stream(s) + assert_equal false, Psych.parse(s) + assert_equal [], Psych.parse_stream(s).transform + assert_equal nil, Psych.safe_load(s) + end + + def test_false + s = "false" + assert_equal false, Psych.load(s) + assert_equal [false], Psych.load_stream(s) + assert_equal false, Psych.parse(s).transform + assert_equal [false], Psych.parse_stream(s).transform + assert_equal false, Psych.safe_load(s) + end + + def test_n + s = "n" + assert_equal "n", Psych.load(s) + assert_equal ["n"], Psych.load_stream(s) + assert_equal "n", Psych.parse(s).transform + assert_equal ["n"], Psych.parse_stream(s).transform + assert_equal "n", Psych.safe_load(s) + end + + def test_off + s = "off" + assert_equal false, Psych.load(s) + assert_equal [false], Psych.load_stream(s) + assert_equal false, Psych.parse(s).transform + assert_equal [false], Psych.parse_stream(s).transform + assert_equal false, Psych.safe_load(s) + end + + def test_inf + s = "-.inf" + assert_equal -Float::INFINITY, Psych.load(s) + assert_equal [-Float::INFINITY], Psych.load_stream(s) + assert_equal -Float::INFINITY, Psych.parse(s).transform + assert_equal [-Float::INFINITY], Psych.parse_stream(s).transform + assert_equal -Float::INFINITY, Psych.safe_load(s) + end + + def test_NaN + s = ".NaN" + assert Float::NAN, Psych.load(s).nan? + assert [Float::NAN], Psych.load_stream(s).first.nan? + assert Psych.parse(s).transform.nan? + assert Psych.parse_stream(s).transform.first.nan? + assert Psych.safe_load(s).nan? + end + + def test_0xC + s = "0xC" + assert_equal 12, Psych.load(s) + assert_equal [12], Psych.load_stream(s) + assert_equal 12, Psych.parse(s).transform + assert_equal [12], Psych.parse_stream(s).transform + assert_equal 12, Psych.safe_load(s) + end + + def test_arrows + s = "<<" + assert_equal "<<", Psych.load(s) + assert_equal ["<<"], Psych.load_stream(s) + assert_equal "<<", Psych.parse(s).transform + assert_equal ["<<"], Psych.parse_stream(s).transform + assert_equal "<<", Psych.safe_load(s) + end + + def test_arrows_hash + s = "<<: {}" + assert_equal({}, Psych.load(s)) + assert_equal [{}], Psych.load_stream(s) + assert_equal({}, Psych.parse(s).transform) + assert_equal [{}], Psych.parse_stream(s).transform + assert_equal({}, Psych.safe_load(s)) + end + + def test_thousand + s = "- 1000\n- +1000\n- 1_000" + assert_equal [1000, 1000, 1000], Psych.load(s) + assert_equal [[1000, 1000, 1000]], Psych.load_stream(s) + assert_equal [1000, 1000, 1000], Psych.parse(s).transform + assert_equal [[1000, 1000, 1000]], Psych.parse_stream(s).transform + assert_equal [1000, 1000, 1000], Psych.safe_load(s) + end + + def test_8 + s = "[8, 08, 0o10, 010]" + assert_equal [8, "08", "0o10", 8], Psych.load(s) + assert_equal [[8, "08", "0o10", 8]], Psych.load_stream(s) + assert_equal [8, "08", "0o10", 8], Psych.parse(s).transform + assert_equal [[8, "08", "0o10", 8]], Psych.parse_stream(s).transform + assert_equal [8, "08", "0o10", 8], Psych.safe_load(s) + end + + def test_null + s = "null" + assert_equal nil, Psych.load(s) + assert_equal [nil], Psych.load_stream(s) + assert_equal nil, Psych.parse(s).transform + assert_equal [nil], Psych.parse_stream(s).transform + assert_equal nil, Psych.safe_load(s) + end + + private + + def special_case_cycle(object) + %w[load load_stream parse parse_stream safe_load].map do |m| + Psych.public_send(m, object) + end + end + end +end |