ut_indexed_dict.py 1.3 KB

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