1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
|
require "test_helper"
class FrameTest < Minitest::Test
# Frame.parse!
def test_parse_header_uncomplete
buffer = "\x00\x00\x00" << "\x00" << "\x00"
buffer.force_encoding(Encoding::BINARY)
buffer_orig = buffer.dup
assert_nil(Plum::Frame.parse!(buffer))
assert_equal(buffer_orig, buffer)
end
def test_parse_body_uncomplete
buffer = "\x00\x00\x03" << "\x00" << "\x00" << "\x00\x00\x00\x00" << "ab"
buffer.force_encoding(Encoding::BINARY)
buffer_orig = buffer.dup
assert_nil(Plum::Frame.parse!(buffer))
assert_equal(buffer_orig, buffer)
end
def test_parse
# R 0x1, stream_id 0x4, body "abc"
buffer = "\x00\x00\x03" << "\x00" << "\x09" << "\x00\x00\x00\x04" << "abc" << "next_frame_data"
buffer.force_encoding(Encoding::BINARY)
frame = Plum::Frame.parse!(buffer)
assert_equal(3, frame.length)
assert_equal(:data, frame.type)
assert_equal([:end_stream, :padded], frame.flags)
assert_equal(0x04, frame.stream_id)
assert_equal("abc", frame.payload)
assert_equal("next_frame_data", buffer)
assert_equal(true, frame.frozen?)
end
# Frame#assemble
def test_assemble
frame = Plum::Frame.new(type: :push_promise, flags: [:end_headers, :padded], stream_id: 0x678, payload: "payl")
bin = "\x00\x00\x04" << "\x05" << "\x0c" << "\x00\x00\x06\x78" << "payl"
assert_equal(bin, frame.assemble)
end
# Frame#generate
def test_new
frame = Plum::Frame.new(type: :data,
stream_id: 12345,
flags: [:end_stream, :padded],
payload: "ぺいろーど".encode(Encoding::UTF_8))
assert_equal("ぺいろーど", frame.payload)
assert_equal("ぺいろーど".bytesize, frame.length)
assert_equal(:data, frame.type) # DATA
assert_equal([:end_stream, :padded], frame.flags) # 0x01 | 0x08
assert_equal(12345, frame.stream_id)
end
def test_inspect
frame = Plum::Frame.new(type: :data,
stream_id: 12345,
flags: [:end_stream, :padded],
payload: "ぺいろーど")
frame.inspect
end
end
|