handler.py (1742B)
1 import logging 2 import datetime 3 import unittest 4 import os 5 import copy 6 7 import lxml.etree 8 from whee.mem import MemStore 9 10 from usawa.store import LedgerStore 11 from usawa.service import Handler 12 13 logging.basicConfig(level=logging.DEBUG) 14 logg = logging.getLogger() 15 16 testdir = os.path.realpath(os.path.dirname(__file__)) 17 18 19 def zero_handler(v): 20 logg.debug('zero handler arg 0x{}'.format(v.hex())) 21 return b'\x00' 22 23 24 def create_handler(): 25 handler = Handler() 26 handler.register(0, zero_handler) 27 return handler 28 29 30 class TestHandler(unittest.TestCase): 31 32 def setUp(self): 33 self.store = MemStore() 34 35 36 def test_handler(self): 37 handler = create_handler() 38 b = b'\x00\x00\x00\x00' 39 r = handler.scan(b) 40 handler.harvest() 41 self.assertEqual(r, 0) 42 43 44 def test_handler_pair_invalid(self): 45 handler = create_handler() 46 b = b'\x00\x00\x00\x00\x09\x00\x00\x00' 47 r = handler.scan(b) 48 self.assertEqual(r, 0) 49 handler.harvest() 50 with self.assertRaises(ValueError): 51 handler.scan(b'') 52 53 54 def test_handler_twopass(self): 55 handler = create_handler() 56 b = b'\x00\x00\x00' 57 r = handler.scan(b) 58 self.assertEqual(r, -1) 59 b = b'\x00' 60 r = handler.scan(b) 61 self.assertEqual(r, 0) 62 63 64 def test_handler_twopass_pair(self): 65 handler = create_handler() 66 b = b'\x00\x00\x00\x00\x09\x00\x00' 67 r = handler.scan(b) 68 self.assertEqual(r, 0) 69 handler.harvest() 70 71 b = b'\x00' 72 r = handler.scan(b'') 73 self.assertEqual(r, -1) 74 with self.assertRaises(ValueError): 75 handler.scan(b'\x00') 76 77 78 if __name__ == '__main__': 79 unittest.main()