From a2cea3da193bdbf0e2754109982befafd8db7858 Mon Sep 17 00:00:00 2001 From: Thomas Harning Jr Date: Fri, 7 Sep 2007 23:55:20 -0400 Subject: event_buffer: drain learned spec notes, get_data learned negative values, many tests written The additional tests added were tests for: * Obtaining partial data using get_data * Reading lines using various line ending mixes/etc * Draining values w/ negative value --- test/event_buffer-tests.lua | 46 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'test') diff --git a/test/event_buffer-tests.lua b/test/event_buffer-tests.lua index 02c25fc..468747e 100644 --- a/test/event_buffer-tests.lua +++ b/test/event_buffer-tests.lua @@ -112,6 +112,52 @@ function bufferTests:test_drain() self.buffer:drain(5) end) testDataEqual("", self.buffer) + self.buffer:add("123456789") + testDataEqual("123456789", self.buffer) + assert_pass([[Should be able to apply negative draining to cause draining `all data` + (see source comments for why)]], function() + self.buffer:drain(-1) + end) + testDataEqual("", self.buffer) +end + +function bufferTests:test_getPartial() + self.buffer:add("123456789") + assert_equal("1234", self.buffer:get_data(4)) + assert_equal("1234", self.buffer:get_data(1,4)) + assert_equal("5678", self.buffer:get_data(5,4)) + assert_equal("5", self.buffer:get_data(5,1)) + assert_equal("56789", self.buffer:get_data(5,100000000), "Data length is capped at max obtainable") + assert_equal("56789", self.buffer:get_data(5,-100), "Negative sizes capture entire remaining string") + assert_equal("9", self.buffer:get_data(-1, 1, "Negative position causes wraparound")) + assert_equal("89", self.buffer:get_data(-2,2, "Negative wraparound does not cause length inversion")) +end + +local lineData = [[1 +2 +3]] +local splitLineData = { + "1","2",nil +} +local mixedLineData = "1\r2\n3\r\n4\n\r5\r\r6\n\n7\r\n\r8\r\n\r9" +local splitMixedLineData = { + "1","2","3","4","5","","6","","7","","8","", nil +} +function bufferTests:test_readline() + self.buffer:add(lineData) + testDataEqual(lineData, self.buffer) + for _, data in ipairs(splitLineData) do + assert_equal(data, self.buffer:readline()) + end + testDataEqual("3", self.buffer, "Failed readline doesn't affect buffer contents") + self.buffer:drain(-1) + testDataEqual("", self.buffer) + self.buffer:add(mixedLineData) + testDataEqual(mixedLineData, self.buffer) + for _, data in ipairs(splitMixedLineData) do + assert_equal(data, self.buffer:readline()) + end + testDataEqual("9", self.buffer) end lunit.run() \ No newline at end of file -- cgit v1.2.3