ut_indexed_dict.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. #!/usr/bin/env python3
  2. """
  3. test/unit_tests_d/ut_indexed_dict: IndexedDict class unit test for the MMGen suite
  4. """
  5. from mmgen.common import *
  6. class unit_test(object):
  7. def run_test(self,name,ut):
  8. bad_msg = ( 'initializing values via constructor',
  9. 'reassignment to existing key',
  10. 'item deletion',
  11. 'item moving',
  12. 'clearing',
  13. 'updating' )
  14. def bad0(): IndexedDict(arg)
  15. def bad1(): d['a'] = 2
  16. def bad2(): del d['a']
  17. def bad3(): d.move_to_end('a')
  18. def bad4(): d.clear()
  19. def bad5(): d.update(d)
  20. def odie(n): die(4,f'\nillegal action {bad_msg[n]!r} failed to raise exception')
  21. def omsg(e): vmsg(' - ' + e.args[0])
  22. msg_r('Testing class IndexedDict...')
  23. from mmgen.obj import IndexedDict
  24. d = IndexedDict()
  25. d['a'] = 1
  26. d['b'] = 2
  27. vmsg('\nChecking error handling:')
  28. arg = [('a',1),('b',2)]
  29. dict(arg)
  30. for i in range(6):
  31. try: locals()['bad'+str(i)]()
  32. except NotImplementedError as e: omsg(e)
  33. else: odie(i)
  34. try: d.key(2)
  35. except Exception as e: omsg(e)
  36. else: odie('list index out of range')
  37. d['c'] = 3
  38. d_chk = {'a':1,'b':2,'c':3}
  39. assert d == d_chk, d
  40. d_keys_chk = ['a','b','c']
  41. assert d.keys == d_keys_chk, d.keys
  42. A = d.key(0)
  43. assert A == 'a', A
  44. A = d.key(2)
  45. assert A == 'c', A
  46. msg('OK')
  47. return True