[前][次][番号順一覧][スレッド一覧]

ruby-changes:14146

From: tenderlove <ko1@a...>
Date: Mon, 30 Nov 2009 14:15:30 +0900 (JST)
Subject: [ruby-changes:14146] Ruby:r25963 (trunk): Adding tests for YAML types

tenderlove	2009-11-30 14:12:48 +0900 (Mon, 30 Nov 2009)

  New Revision: 25963

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=25963

  Log:
    Adding tests for YAML types

  Added files:
    trunk/test/yaml/test_boolean.rb
    trunk/test/yaml/test_null.rb
    trunk/test/yaml/test_omap.rb

Index: test/yaml/test_boolean.rb
===================================================================
--- test/yaml/test_boolean.rb	(revision 0)
+++ test/yaml/test_boolean.rb	(revision 25963)
@@ -0,0 +1,37 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+  ###
+  # Test booleans from YAML spec:
+  # http://yaml.org/type/bool.html
+  class TestBoolean < Test::Unit::TestCase
+    %w{ yes Yes YES true True TRUE on On ON }.each do |truth|
+      define_method(:"test_#{truth}") do
+        assert_equal true, YAML.load("--- #{truth}")
+      end
+    end
+
+    %w{ no No NO false False FALSE off Off OFF }.each do |truth|
+      define_method(:"test_#{truth}") do
+        assert_equal false, YAML.load("--- #{truth}")
+      end
+    end
+
+    ###
+    # YAML spec says "y" and "Y" may be used as true, but Syck treats them
+    # as literal strings
+    def test_y
+      assert_equal "y", YAML.load("--- y")
+      assert_equal "Y", YAML.load("--- Y")
+    end
+
+    ###
+    # YAML spec says "n" and "N" may be used as false, but Syck treats them
+    # as literal strings
+    def test_y
+      assert_equal "n", YAML.load("--- n")
+      assert_equal "N", YAML.load("--- N")
+    end
+  end
+end
Index: test/yaml/test_null.rb
===================================================================
--- test/yaml/test_null.rb	(revision 0)
+++ test/yaml/test_null.rb	(revision 25963)
@@ -0,0 +1,20 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+  ###
+  # Test null from YAML spec:
+  # http://yaml.org/type/null.html
+  class TestNull < Test::Unit::TestCase
+    def test_null_list
+      assert_equal [nil] * 5, YAML.load(<<-eoyml)
+---
+- ~
+- null
+- 
+- Null
+- NULL
+      eoyml
+    end
+  end
+end
Index: test/yaml/test_omap.rb
===================================================================
--- test/yaml/test_omap.rb	(revision 0)
+++ test/yaml/test_omap.rb	(revision 25963)
@@ -0,0 +1,56 @@
+require 'test/unit'
+require 'yaml'
+
+module YAML
+  class TestOmap < Test::Unit::TestCase
+    def test_keys
+      map = YAML::Omap.new
+      map['foo'] = 'bar'
+      assert_equal 'bar', map['foo']
+    end
+
+    def test_order
+      map = YAML::Omap.new
+      map['a'] = 'b'
+      map['b'] = 'c'
+      assert_equal [%w{a b}, %w{b c}], map.to_a
+    end
+
+    def test_square
+      list = [["a", "b"], ["b", "c"]]
+      map = YAML::Omap[*list.flatten]
+      assert_equal list, map.to_a
+      assert_equal 'b', map['a']
+      assert_equal 'c', map['b']
+    end
+
+    def test_to_yaml
+      map = YAML::Omap['a', 'b', 'c', 'd']
+      yaml = map.to_yaml
+      assert_match('!omap', yaml)
+      assert_match('- a: b', yaml)
+      assert_match('- c: d', yaml)
+    end
+
+    def test_round_trip
+      list = [["a", "b"], ["b", "c"]]
+      map = YAML::Omap[*list.flatten]
+      loaded = YAML.load(YAML.dump(map))
+
+      assert_equal map, loaded
+      assert_equal list, loaded.to_a
+    end
+
+    ###
+    # FIXME: Syck should also support !!omap as shorthand
+    def test_load
+      list = [["a", "b"], ["c", "d"]]
+      map = YAML.load(<<-eoyml)
+--- !omap
+- a: b
+- c: d
+      eoyml
+      assert_equal list, map.to_a
+    end
+  end
+end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]