summaryrefslogtreecommitdiff
path: root/test/psych/test_yaml_special_cases.rb
diff options
context:
space:
mode:
authorhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-27 00:44:04 +0000
committerhsbt <hsbt@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-08-27 00:44:04 +0000
commit867581dd755bd202cefc605af5e081ba2ba8c1ec (patch)
tree60b9cfa3907cdddfbd5d3ca840a9c6eb32935e50 /test/psych/test_yaml_special_cases.rb
parente0311eb847bfa1c526aac4485889548ad8152ce3 (diff)
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.rb130
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 00000000000..66448d4efab
--- /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