Removed RCS-style IDs.
[ruby-eet.git] / test / test_chunk.rb
1 require "eet"
2 require "test/unit"
3
4 class ChunkTest < Test::Unit::TestCase
5         def setup
6                 @data = Eet::Chunk.new("tag", "foo\0bar\0baz").to_s
7         end
8
9         def test_serialize
10                 assert_equal("CHnK\017\0\0\0tag\0foo\0bar\0baz", @data)
11         end
12
13         def test_deserialize
14                 chunk = nil
15
16                 assert_nothing_raised do
17                         chunk, = Eet::Chunk.deserialize(@data)
18                 end
19
20                 assert_equal("tag", chunk.tag)
21                 assert_equal("foo\0bar\0baz", chunk.data)
22         end
23
24         def test_deserialize_invalid
25                 assert_raise(Eet::ChunkError) do
26                         Eet::Chunk.deserialize("foobar" << "\377" * 4 << "tagdata")
27                 end
28
29                 assert_raise(Eet::ChunkError) do
30                         Eet::Chunk.deserialize("CHnK" << "\377" * 4 << "tagdata")
31                 end
32
33                 assert_raise(Eet::ChunkError) do
34                         Eet::Chunk.deserialize("CHnK\010\0\0\0tag0data")
35                 end
36
37                 assert_nothing_raised do
38                         Eet::Chunk.deserialize("CHnK\10\0\0\0tag\0data")
39                 end
40         end
41
42         def test_catch_invalid_tag
43                 assert_raise(ArgumentError) do
44                         Eet::Chunk.new("foo\0bar", "data")
45                 end
46         end
47 end