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
63
|
import("core.base.bytes")
function test_ctor(t)
t:are_equal(bytes("123456789"):str(), "123456789")
t:are_equal(bytes(bytes("123456789")):str(), "123456789")
t:are_equal(bytes(bytes("123456789"), 3, 5):str(), "345")
t:are_equal(bytes("123456789"):size(), 9)
t:are_equal(bytes(10):size(), 10)
t:are_equal(bytes(bytes("123"), bytes("456"), bytes("789")):str(), "123456789")
t:are_equal(bytes({bytes("123"), bytes("456"), bytes("789")}):str(), "123456789")
end
function test_clone(t)
t:are_equal(bytes(10):clone():size(), 10)
t:are_equal(bytes("123456789"):clone():str(), "123456789")
end
function test_slice(t)
t:are_equal(bytes(10):slice(1, 2):size(), 2)
t:are_equal(bytes("123456789"):slice(1, 4):str(), "1234")
end
function test_index(t)
local b = bytes("123456789")
t:are_equal(b[{1, 4}]:str(), "1234")
t:will_raise(function() b[1] = string.byte('2') end)
b = bytes(9)
b[{1, 9}] = bytes("123456789")
t:are_equal(b:str(), "123456789")
b[1] = string.byte('2')
t:are_equal(b:str(), "223456789")
t:will_raise(function() b[100] = string.byte('2') end)
end
function test_concat(t)
t:are_equal((bytes("123") .. bytes("456")):str(), "123456")
t:are_equal(bytes(bytes("123"), bytes("456")):str(), "123456")
end
function test_copy(t)
t:are_equal(bytes(9):copy("123456789"):str(), "123456789")
t:are_equal(bytes(5):copy("123456789", 5, 9):str(), "56789")
end
function test_copy2(t)
t:are_equal(bytes(18):copy("123456789"):copy2(10, "123456789"):str(), "123456789123456789")
t:are_equal(bytes(14):copy("123456789"):copy2(10, "123456789", 5, 9):str(), "12345678956789")
end
function test_move(t)
t:are_equal(bytes(9):copy("123456789"):move(5, 9):str(), "567896789")
t:are_equal(bytes(9):copy("123456789"):move2(2, 5, 9):str(), "156789789")
end
function test_int(t)
t:are_equal(bytes(1):u8_set(1, 1):u8(1), 1)
t:are_equal(bytes(10):u8_set(5, 255):u8(5), 255)
t:are_equal(bytes(10):u16le_set(5, 12346):u16le(5), 12346)
t:are_equal(bytes(10):u16be_set(5, 12346):u16be(5), 12346)
t:are_equal(bytes(20):u32le_set(5, 12345678):u32le(5), 12345678)
t:are_equal(bytes(20):u32be_set(5, 12345678):u32be(5), 12345678)
end
|