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() |