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