def test_sequence_counter(self): seq = stentura._SequenceCounter() actual = [seq() for x in xrange(512)] expected = range(256) * 2 self.assertEqual(actual, expected) seq = stentura._SequenceCounter(67) actual = [seq() for x in xrange(512)] expected = range(67, 256) + range(256) + range(67) self.assertEqual(actual, expected)
def test_read(self): request_buf = array.array('B') response_buf = array.array('B') stroke_buf = array.array('B') event = threading.Event() tests = ([0b11000001] * (3 * 512 + 28), [0b11010101] * 4, [0b11000010] * 8) for data in tests: data = str(buffer(array.array('B', data))) requests, responses = make_readc_packets(data) port = MockPacketPort(responses, requests) seq = stentura._SequenceCounter() response = stentura._read(port, event, seq, request_buf, response_buf, stroke_buf) self.assertEqual(data, str(response))
def make_readc_packets(data): requests, responses = [], [] seq = stentura._SequenceCounter() buf = array.array('B') block, byte = 0, 0 while data: s = seq() chunk = buffer(data, 0, 512) data = buffer(data, 512) q = stentura._make_read(buf, s, block, byte) requests.append(str(q)) r = make_read_response(s, chunk) responses.append(str(r)) byte += len(chunk) if byte >= 512: block += 1 byte -= 512 s = seq() q = stentura._make_read(buf, s, block, byte) requests.append(str(q)) r = make_read_response(s) responses.append(str(r)) return requests, responses