Added a test for the :sub format specifier.
authorTilman Sauerbeck <tilman@code-monkey.de>
Wed, 25 May 2005 19:44:06 +0000 (19:44 +0000)
committerTilman Sauerbeck <tilman@code-monkey.de>
Wed, 25 May 2005 19:44:06 +0000 (19:44 +0000)
ChangeLog
test/test_array_sub.rb [new file with mode: 0644]

index 06d4b6ada389e0a0adf56cadf1982808bfee1fbc..6ef487287f9ed7502434ce1b4178e79eb5e8ccd1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,11 @@
 --
-$Id: ChangeLog 42 2005-05-21 18:36:45Z tilman $
+$Id: ChangeLog 43 2005-05-25 19:44:06Z tilman $
 ++
 
+2005-05-25 Tilman Sauerbeck (tilman at code-monkey de)
+        * test/test_array_sub.rb: Added a test for the :sub format
+          specifier
+
 2005-05-19 Tilman Sauerbeck (tilman at code-monkey de)
         * Rakefile: Code cleanup
 
diff --git a/test/test_array_sub.rb b/test/test_array_sub.rb
new file mode 100644 (file)
index 0000000..90c8f1e
--- /dev/null
@@ -0,0 +1,95 @@
+# $Id: test_array_sub.rb 43 2005-05-25 19:44:06Z tilman $
+
+require "eet"
+require "test/unit"
+require "common"
+
+class ArraySubTestData
+       def initialize(v)
+               @value = v
+       end
+
+       protected
+       def to_eet_name
+               "ArraySubTest"
+       end
+
+       def to_eet_properties
+               {"value" => [@value, :sub]}
+       end
+end
+
+class MyArray < Array
+       protected
+       def to_eet_properties
+               {"entries" => [self]}
+       end
+end
+
+class Entry
+       def initialize(v)
+               @value = v
+       end
+end
+
+class ArraySubTest < Test::Unit::TestCase
+       def test_arraysub
+               a = MyArray.new
+               ["foo", "bar", "baz"].each { |s| a << Entry.new(s) }
+
+               data = ArraySubTestData.new(a).to_eet
+
+               assert_not_nil(data)
+
+               stream = nil
+
+               assert_nothing_raised do
+                       stream = Eet::Stream.deserialize(data)
+               end
+
+               assert_equal(1, stream.length)
+               assert_equal("ArraySubTest", stream.first.tag)
+
+               assert_nothing_raised do
+                       stream = Eet::Stream.deserialize(stream.first.data)
+               end
+
+               assert_equal(1, stream.length)
+               assert_equal("value", stream.first.tag)
+
+               assert_nothing_raised do
+                       stream = Eet::Stream.deserialize(stream.first.data)
+               end
+
+               assert_equal(1, stream.length)
+               assert_equal("MyArray", stream.first.tag)
+
+               assert_nothing_raised do
+                       stream = Eet::Stream.deserialize(stream.first.data)
+               end
+
+               assert_equal(3, stream.length)
+
+               ["foo", "bar", "baz"].each_with_index do |s, i|
+                       stream2 = nil
+                       stream3 = nil
+
+                       assert_equal("entries", stream[i].tag)
+
+                       assert_nothing_raised do
+                               stream2 = Eet::Stream.deserialize(stream[i].data)
+                       end
+
+                       assert_equal(1, stream2.length)
+                       assert_equal("Entry", stream2.first.tag)
+
+                       assert_nothing_raised do
+                               stream3 = Eet::Stream.deserialize(stream2.first.data)
+                       end
+
+                       assert_equal(1, stream3.length)
+                       assert_equal("value", stream3.first.tag)
+                       assert_equal(s + "\0", stream3.first.data)
+               end
+       end
+end