test/event_buffer-tests.lua

changeset 37
b7351b503b4b
parent 36
139601546bd9
equal deleted inserted replaced
36:139601546bd9 37:b7351b503b4b
110 testDataEqual("6789", self.buffer) 110 testDataEqual("6789", self.buffer)
111 assert_pass("Should be able to apply draining beyond actual buffer length", function() 111 assert_pass("Should be able to apply draining beyond actual buffer length", function()
112 self.buffer:drain(5) 112 self.buffer:drain(5)
113 end) 113 end)
114 testDataEqual("", self.buffer) 114 testDataEqual("", self.buffer)
115 self.buffer:add("123456789")
116 testDataEqual("123456789", self.buffer)
117 assert_pass([[Should be able to apply negative draining to cause draining `all data`
118 (see source comments for why)]], function()
119 self.buffer:drain(-1)
120 end)
121 testDataEqual("", self.buffer)
122 end
123
124 function bufferTests:test_getPartial()
125 self.buffer:add("123456789")
126 assert_equal("1234", self.buffer:get_data(4))
127 assert_equal("1234", self.buffer:get_data(1,4))
128 assert_equal("5678", self.buffer:get_data(5,4))
129 assert_equal("5", self.buffer:get_data(5,1))
130 assert_equal("56789", self.buffer:get_data(5,100000000), "Data length is capped at max obtainable")
131 assert_equal("56789", self.buffer:get_data(5,-100), "Negative sizes capture entire remaining string")
132 assert_equal("9", self.buffer:get_data(-1, 1, "Negative position causes wraparound"))
133 assert_equal("89", self.buffer:get_data(-2,2, "Negative wraparound does not cause length inversion"))
134 end
135
136 local lineData = [[1
137 2
138 3]]
139 local splitLineData = {
140 "1","2",nil
141 }
142 local mixedLineData = "1\r2\n3\r\n4\n\r5\r\r6\n\n7\r\n\r8\r\n\r9"
143 local splitMixedLineData = {
144 "1","2","3","4","5","","6","","7","","8","", nil
145 }
146 function bufferTests:test_readline()
147 self.buffer:add(lineData)
148 testDataEqual(lineData, self.buffer)
149 for _, data in ipairs(splitLineData) do
150 assert_equal(data, self.buffer:readline())
151 end
152 testDataEqual("3", self.buffer, "Failed readline doesn't affect buffer contents")
153 self.buffer:drain(-1)
154 testDataEqual("", self.buffer)
155 self.buffer:add(mixedLineData)
156 testDataEqual(mixedLineData, self.buffer)
157 for _, data in ipairs(splitMixedLineData) do
158 assert_equal(data, self.buffer:readline())
159 end
160 testDataEqual("9", self.buffer)
115 end 161 end
116 162
117 lunit.run() 163 lunit.run()

mercurial