summaryrefslogtreecommitdiff
path: root/test/yaml
diff options
context:
space:
mode:
authortenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-16 17:27:05 +0000
committertenderlove <tenderlove@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2009-11-16 17:27:05 +0000
commit8f90252c5250b086309be9c613cc231fe2475706 (patch)
tree6166f75e06708c66d5c340a9c3982bd549c86434 /test/yaml
parent31ee9fd9666986451a7709e77978efb1b3f063f6 (diff)
Adding yaml tests [ruby-core:26732]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25804 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/yaml')
-rw-r--r--test/yaml/test_array.rb18
-rw-r--r--test/yaml/test_class.rb18
-rw-r--r--test/yaml/test_exception.rb46
-rw-r--r--test/yaml/test_hash.rb18
-rw-r--r--test/yaml/test_string.rb45
-rw-r--r--test/yaml/test_symbol.rb22
-rw-r--r--test/yaml/test_yaml_properties.rb64
7 files changed, 231 insertions, 0 deletions
diff --git a/test/yaml/test_array.rb b/test/yaml/test_array.rb
new file mode 100644
index 0000000000..95ff94b959
--- /dev/null
+++ b/test/yaml/test_array.rb
@@ -0,0 +1,18 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestArray < Test::Unit::TestCase
+ def setup
+ @list = [{ :a => 'b' }, 'foo']
+ end
+
+ def test_to_yaml
+ assert_equal @list, YAML.load(@list.to_yaml)
+ end
+
+ def test_dump
+ assert_equal @list, YAML.load(YAML.dump(@list))
+ end
+ end
+end
diff --git a/test/yaml/test_class.rb b/test/yaml/test_class.rb
new file mode 100644
index 0000000000..9ea9db3096
--- /dev/null
+++ b/test/yaml/test_class.rb
@@ -0,0 +1,18 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestClass < Test::Unit::TestCase
+ def test_to_yaml
+ assert_raises(::TypeError) do
+ TestClass.to_yaml
+ end
+ end
+
+ def test_dump
+ assert_raises(::TypeError) do
+ YAML.dump TestClass
+ end
+ end
+ end
+end
diff --git a/test/yaml/test_exception.rb b/test/yaml/test_exception.rb
new file mode 100644
index 0000000000..f9354ffe2b
--- /dev/null
+++ b/test/yaml/test_exception.rb
@@ -0,0 +1,46 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestException < Test::Unit::TestCase
+ class Wups < Exception
+ attr_reader :foo, :bar
+ def initialize *args
+ super
+ @foo = 1
+ @bar = 2
+ end
+ end
+
+ def setup
+ @wups = Wups.new
+ end
+
+ def test_to_yaml
+ w = YAML.load(@wups.to_yaml)
+ assert_equal @wups, w
+ assert_equal 1, w.foo
+ assert_equal 2, w.bar
+ end
+
+ def test_dump
+ w = YAML.load(@wups.to_yaml)
+ assert_equal @wups, w
+ assert_equal 1, w.foo
+ assert_equal 2, w.bar
+ end
+
+ def test_to_yaml_properties
+ class << @wups
+ def to_yaml_properties
+ [:@foo]
+ end
+ end
+
+ w = YAML.load(YAML.dump(@wups))
+ assert_equal @wups, w
+ assert_equal 1, w.foo
+ assert_nil w.bar
+ end
+ end
+end
diff --git a/test/yaml/test_hash.rb b/test/yaml/test_hash.rb
new file mode 100644
index 0000000000..afcdcaca7b
--- /dev/null
+++ b/test/yaml/test_hash.rb
@@ -0,0 +1,18 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestHash < Test::Unit::TestCase
+ def setup
+ @hash = { :a => 'b' }
+ end
+
+ def test_to_yaml
+ assert_equal @hash, YAML.load(@hash.to_yaml)
+ end
+
+ def test_dump
+ assert_equal @hash, YAML.load(YAML.dump(@hash))
+ end
+ end
+end
diff --git a/test/yaml/test_string.rb b/test/yaml/test_string.rb
new file mode 100644
index 0000000000..26229a62f5
--- /dev/null
+++ b/test/yaml/test_string.rb
@@ -0,0 +1,45 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestString < Test::Unit::TestCase
+ def test_binary_string_null
+ string = "\x00"
+ yml = YAML.dump string
+ assert_match(/binary/, yml)
+ assert_equal string, YAML.load(yml)
+ end
+
+ def test_binary_string
+ string = binary_string
+ yml = YAML.dump string
+ assert_match(/binary/, yml)
+ assert_equal string, YAML.load(yml)
+ end
+
+ def test_non_binary_string
+ string = binary_string(0.29)
+ yml = YAML.dump string
+ refute_match(/binary/, yml)
+ assert_equal string, YAML.load(yml)
+ end
+
+ def test_string_with_ivars
+ food = "is delicious"
+ ivar = "on rock and roll"
+ food.instance_variable_set(:@we_built_this_city, ivar)
+
+ str = YAML.load YAML.dump food
+ assert_equal ivar, food.instance_variable_get(:@we_built_this_city)
+ end
+
+ def binary_string percentage = 0.31, length = 100
+ string = ''
+ (percentage * length).to_i.times do |i|
+ string << "\b"
+ end
+ string << 'a' * (length - string.length)
+ string
+ end
+ end
+end
diff --git a/test/yaml/test_symbol.rb b/test/yaml/test_symbol.rb
new file mode 100644
index 0000000000..c5358aa19d
--- /dev/null
+++ b/test/yaml/test_symbol.rb
@@ -0,0 +1,22 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestSymbol < Test::Unit::TestCase
+ def test_to_yaml
+ assert_equal :a, YAML.load(:a.to_yaml)
+ end
+
+ def test_dump
+ assert_equal :a, YAML.load(YAML.dump(:a))
+ end
+
+ def test_stringy
+ assert_equal :"1", YAML.load(YAML.dump(:"1"))
+ end
+
+ def test_load_quoted
+ assert_equal :"1", YAML.load("--- :'1'\n")
+ end
+ end
+end
diff --git a/test/yaml/test_yaml_properties.rb b/test/yaml/test_yaml_properties.rb
new file mode 100644
index 0000000000..48bb878a01
--- /dev/null
+++ b/test/yaml/test_yaml_properties.rb
@@ -0,0 +1,64 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+ class TestYamlProperties < Test::Unit::TestCase
+ class Foo
+ attr_reader :a, :b, :c
+ def initialize
+ @a = 1
+ @b = 2
+ @c = 3
+ end
+
+ def to_yaml_properties
+ [:@a, :@b]
+ end
+ end
+
+ def test_object_dump_yaml_properties
+ foo = YAML.load(YAML.dump(Foo.new))
+ assert_equal 1, foo.a
+ assert_equal 2, foo.b
+ assert_nil foo.c
+ end
+
+ class Bar < Struct.new(:foo, :bar)
+ attr_reader :baz
+ def initialize *args
+ super
+ @baz = 'hello'
+ end
+
+ def to_yaml_properties
+ []
+ end
+ end
+
+ def test_struct_dump_yaml_properties
+ bar = YAML.load(YAML.dump(Bar.new('a', 'b')))
+ assert_equal 'a', bar.foo
+ assert_equal 'b', bar.bar
+ assert_nil bar.baz
+ end
+
+ def test_string_dump
+ string = "okonomiyaki"
+ class << string
+ def to_yaml_properties
+ [:@tastes]
+ end
+ end
+
+ string.instance_variable_set(:@tastes, 'delicious')
+ v = YAML.load YAML.dump string
+ assert_equal 'delicious', v.instance_variable_get(:@tastes)
+ end
+
+ def test_string_load
+ str = YAML.load("--- !str \nstr: okonomiyaki\n:@tastes: delicious\n")
+ assert_equal 'okonomiyaki', str
+ assert_equal 'delicious', str.instance_variable_get(:@tastes)
+ end
+ end
+end