test/event_buffer-tests.lua

changeset 36
139601546bd9
child 37
b7351b503b4b
equal deleted inserted replaced
35:4f81725a1e5f 36:139601546bd9
1 require("luaevent.core")
2 local buffer = luaevent.core.buffer
3
4 require("lunit")
5
6 lunit.import("all")
7
8 bufferTests = TestCase("bufferTests")
9
10 function bufferTests:setup()
11 self.buffer = buffer.new()
12 self.buffer2 = buffer.new()
13 end
14
15 function bufferTests:teardown()
16 self.buffer:close()
17 self.buffer2:close()
18 end
19
20 local function testDataEqual(expected, actual, msg)
21 msg = msg or ''
22 assert_equal(expected, actual:get_data(), "Buffer not the same: " .. msg)
23 assert_equal(#expected, actual:length(), "Buffer length not the same: " .. msg)
24 assert_equal(expected, tostring(actual), "Buffer (from tostring) not the same: " .. msg)
25 assert_equal(#expected, #actual, "Buffer length (from #) not zero: " .. msg)
26 end
27
28 function bufferTests:test_empty()
29 testDataEqual("", self.buffer, "Buffer not empty")
30 testDataEqual("", self.buffer2, "Buffer2 not empty")
31 end
32
33 function bufferTests:test_addSimpleString()
34 self.buffer:add("Hello")
35 testDataEqual("Hello", self.buffer)
36 self.buffer:add("Hello")
37 testDataEqual("HelloHello", self.buffer)
38 end
39
40 function bufferTests:test_addMultipleStrings()
41 self.buffer:add("Hello", "Hello")
42 testDataEqual("HelloHello", self.buffer)
43 end
44
45 function bufferTests:test_addDigits()
46 self.buffer:add(1,2,3,4)
47 testDataEqual("1234", self.buffer)
48 self.buffer:add(100)
49 testDataEqual("1234100", self.buffer)
50 self.buffer:add(1.1)
51 testDataEqual("12341001.1", self.buffer)
52 end
53
54 function bufferTests:test_addBuffer()
55 self.buffer:add(self.buffer2)
56 testDataEqual("", self.buffer)
57 testDataEqual("", self.buffer2)
58 self.buffer2:add("Hello")
59 testDataEqual("Hello", self.buffer2)
60 self.buffer:add(self.buffer2)
61 testDataEqual("Hello", self.buffer)
62 testDataEqual("", self.buffer2)
63 assert_error("Cannot self-add buffers", function()
64 self.buffer:add(self.buffer)
65 end)
66 assert_error("Cannot self-add buffers", function()
67 self.buffer2:add(self.buffer2)
68 end)
69 testDataEqual("Hello", self.buffer, "Failures should not affect data content")
70 testDataEqual("", self.buffer2, "Failures should not affect data content")
71 end
72
73 function bufferTests:test_addBadValues_fail()
74 assert_error("Should not be able to add no values", function()
75 self.buffer:add()
76 end)
77 assert_error("Should not be able to add boolean true", function()
78 self.buffer:add(true)
79 end)
80 assert_error("Should not be able to add boolean false", function()
81 self.buffer:add(false)
82 end)
83 assert_error("Should not be able to add functions", function()
84 self.buffer:add(function() end)
85 end)
86 assert_error("Should not be able to add threads", function()
87 self.buffer:add(coroutine.create(function() end))
88 end)
89 assert_error("Should not be able to add non-buffer userdata", function()
90 self.buffer:add(newproxy())
91 end)
92 assert_error("Should not be able to add nil values", function()
93 self.buffer:add(nil)
94 end)
95 assert_error("Multiples including valid values should not affect failure results", function()
96 self.buffer:add("Hello", 1, bufferb, true, false, function() end, newproxy(), nil)
97 end)
98 testDataEqual("", self.buffer, "Buffer not empty after failing additions")
99 end
100
101 function bufferTests:test_drain()
102 self.buffer:add("123456789")
103 testDataEqual("123456789", self.buffer)
104 assert_error("Cannot call drain w/ no args", function()
105 self.buffer:drain()
106 end)
107 self.buffer:drain(1)
108 testDataEqual("23456789", self.buffer)
109 self.buffer:drain(4)
110 testDataEqual("6789", self.buffer)
111 assert_pass("Should be able to apply draining beyond actual buffer length", function()
112 self.buffer:drain(5)
113 end)
114 testDataEqual("", self.buffer)
115 end
116
117 lunit.run()

mercurial