File: dictobj_test.py

package info (click to toggle)
python-dictobj 0.4-4
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 128 kB
  • sloc: python: 176; sh: 9; makefile: 5
file content (89 lines) | stat: -rw-r--r-- 2,549 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
from dictobj import *

import unittest
import doctest

class TestDictionaryObject(unittest.TestCase):
  def setUp(self):
    self.vanilla = DictionaryObject((('a',1),('b',2)))
    self.kinky = DictionaryObject({'a':1, 'b':{'c':True, 'd':[1,2]}, 1:'x'})
    self.default = DictionaryObject((), None, a=3)
    self.mutable = MutableDictionaryObject(a=3, b=4)
    self.mutableDefault = MutableDictionaryObject((), None, b=4)

  def test_pickle(self):
    default = pickle.loads(pickle.dumps(self.default))
    self.assertEqual(default, self.default)

    mutable = pickle.loads(pickle.dumps(self.mutable))
    self.assertEqual(mutable, self.mutable)
    mutable.a = 500
    self.assertNotEqual(mutable, self.mutable)
  
  def test_copy(self):
    m = MutableDictionaryObject(self.default)
    self.assertEqual(m, self.default)

    m.a = 2
    self.assertNotEqual(m, self.default)
    
  def test_len(self):
    self.assertEqual(3, len(self.kinky))

  def test_default(self):
    self.assertEqual(self.default.a, 3)
    self.assertEqual(self.default.b, None)

    self.assertEqual(self.mutableDefault.a, None)
    self.assertEqual(self.mutableDefault.b, 4)

  def test_mutable(self):
    self.assertEqual(self.mutable.a, 3)
    self.assertEqual(self.mutable.b, 4)

    self.mutable.c = 5
    self.assertEqual(self.mutable.c, 5)
    
    self.assertRaises(AttributeError, getattr, self.mutable, 'd')

  def test_mutable_default(self):
    self.assertEqual(self.mutableDefault.b, 4)
    
    self.mutableDefault.c = 5
    self.assertEqual(self.mutableDefault.c, 5)

    self.assertEqual(self.mutableDefault.a, None)
    
  def test_iter(self):
    keys = set([1,'a','b'])
    for i,k in enumerate(self.kinky):
      self.assertTrue(k in keys)

  def test_getattr(self):
    self.assertEqual(self.kinky.a, 1)
    self.assertEqual(self.kinky.b, DictionaryObject({'c':True, 'd':[1,2]}))

  def test_getitem(self):
    self.assertEqual(self.kinky['a'], 1)
    self.assertEqual(self.kinky['b'], DictionaryObject({'c':True, 'd':[1,2]}))
    self.assertEqual(self.kinky[1], 'x')

  def test_exception(self):
    self.assertRaises(AttributeError, setattr, self.kinky, 'c', 3)

  def test_setitem(self):
    self.mutable.x = 500
    self.assertEqual(self.mutable.x, 500)

    self.mutable['y'] = 100
    self.assertEqual(self.mutable.y, 100)

def load_tests(loader, tests, pattern):
  import dictobj
  suite = unittest.TestSuite()
  suite.addTests(tests)
  suite.addTest(doctest.DocTestSuite(dictobj))
  return suite

if '__main__' == __name__:
  unittest.main()