Removed RCS-style IDs.
[ruby-eet.git] / test / test_list.rb
1 require "eet"
2 require "test/unit"
3 require "common"
4
5 class ListTestData
6         def initialize
7                 @strings = {}
8                 @strings2 = []
9
10                 5.times do |i|
11                         @strings[i] = WrappedString.new("rubyrocks%i" % i)
12                 end
13
14                 #(6..10).each do |i|
15                 5.times do |i|
16                         @strings2 << WrappedString.new("rubyrocks%i" % i)
17                 end
18         end
19
20         private
21         def to_eet_name
22                 "ListTest"
23         end
24
25         def to_eet_properties
26                 {"stringlist_a" => [@strings],
27                  "stringlist_h" => [@strings2]}
28         end
29 end
30
31 class ListTest < Test::Unit::TestCase
32         def test_list
33                 data = ListTestData.new.to_eet
34                 assert_not_nil(data)
35
36                 stream = nil
37
38                 assert_nothing_raised do
39                         stream = Eet::Stream.deserialize(data)
40                 end
41
42                 assert_equal(1, stream.length)
43                 assert_equal("ListTest", stream.first.tag)
44
45                 assert_nothing_raised do
46                         stream = Eet::Stream.deserialize(stream.first.data)
47                 end
48
49                 assert_equal(10, stream.length)
50
51                 ["stringlist_a", "stringlist_h"].each do |tag|
52                         stringlist = stream.find_all { |c| c.tag == tag }
53                         assert_equal(5, stringlist.length)
54
55                         (0..4).each do |i|
56                                 str_stream = nil
57
58                                 assert_nothing_raised do
59                                         d = stringlist.shift.data
60                                         str_stream = Eet::Stream.deserialize(d)
61                                 end
62
63                                 assert_equal(1, str_stream.length)
64                                 assert_equal("String", str_stream.first.tag)
65
66                                 foo = nil
67
68                                 assert_nothing_raised do
69                                         foo = Eet::Stream.deserialize(str_stream.first.data)
70                                 end
71
72                                 assert_equal(1, foo.length)
73                                 assert_equal("buf", foo.first.tag)
74                                 assert_equal("rubyrocks%i\0" % i, foo.first.data)
75                         end
76
77                         assert_equal([], stringlist)
78                 end
79         end
80 end