usawa

Signed, immutable accounting.
Info | Log | Files | Refs | Submodules | LICENSE

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