Rename test files to test_*.py
[joel/kofoto.git] / src / test / test_iodict.py
1 #! /usr/bin/env python
2
3 import os
4 import sys
5 import unittest
6
7 if __name__ == "__main__":
8     cwd = os.getcwd()
9     libdir = unicode(os.path.realpath(
10         os.path.join(os.path.dirname(sys.argv[0]), "..", "packages")))
11     os.chdir(libdir)
12     sys.path.insert(0, libdir)
13
14 from kofoto.iodict import InsertionOrderedDict
15
16
17 class TestInsertionOrderedDict(unittest.TestCase):
18     def setUp(self):
19         self.iod = InsertionOrderedDict([
20             (1, "a"),
21             (3, "c"),
22             (2, "b"),
23             ])
24
25     def tearDown(self):
26         del self.iod
27
28     def test___cmp__(self):
29         self.assertEqual(cmp(self.iod, self.iod), 0)
30         iom2 = self.iod.copy()
31         self.assertEqual(cmp(self.iod, iom2), 0)
32         del iom2[3]
33         self.assertEqual(cmp(self.iod, iom2), 1)
34         del self.iod[2]
35         del self.iod[3]
36         self.assertEqual(cmp(self.iod, iom2), -1)
37
38     def test___contains__(self):
39         self.assert_(0 not in self.iod)
40         self.assert_("a" not in self.iod)
41         self.assert_(1 in self.iod)
42         self.assert_(2 in self.iod)
43         self.assert_(3 in self.iod)
44
45     def test___delitem__(self):
46         try:
47             del self.iod[0]
48         except KeyError:
49             pass
50         else:
51             self.assert_(False)
52         self.assert_(0 not in self.iod)
53         self.assertEqual(len(self.iod), 3)
54         del self.iod[1]
55         self.assert_(1 not in self.iod)
56         self.assertEqual(len(self.iod), 2)
57         del self.iod[2]
58         del self.iod[3]
59         self.assert_(self.iod._keylist_head.next is self.iod._keylist_tail)
60         self.assert_(self.iod._keylist_tail.prev is self.iod._keylist_head)
61         self.assertEqual(len(self.iod), 0)
62
63     def test___getitem__(self):
64         try:
65             self.iod[0]
66         except KeyError:
67             pass
68         else:
69             assert False
70         assert self.iod[1] == "a"
71         assert self.iod[2] == "b"
72         assert self.iod[3] == "c"
73
74     def test___iter__(self):
75         assert list(self.iod) == [2, 3, 1]
76
77     def test___repr__(self):
78         assert \
79             repr(self.iod) == \
80             "InsertionOrderedDict([(2, 'b'), (3, 'c'), (1, 'a')])"
81
82     def test___setitem__(self):
83         self.iod[0] = "-"
84         assert self.iod.items() == [
85             (0, "-"), (2, "b"), (3, "c"), (1, "a")]
86         self.iod[4] = "d"
87         assert self.iod.items() == [
88             (4, "d"), (0, "-"), (2, "b"), (3, "c"), (1, "a")]
89
90     def test_clear(self):
91         self.iod.clear()
92         assert 1 not in self.iod
93         assert 2 not in self.iod
94         assert 3 not in self.iod
95         assert self.iod._keylist_head.next is self.iod._keylist_tail
96         assert self.iod._keylist_tail.prev is self.iod._keylist_head
97         assert len(self.iod) == 0
98
99     def test_copy(self):
100         assert self.iod.copy() == self.iod
101
102     def test_get(self):
103         assert self.iod.get(0) is None
104         assert self.iod.get(0, "x") is "x"
105         assert self.iod.get(1) == "a"
106
107     def test_has_key(self):
108         assert not self.iod.has_key(0)
109         assert self.iod.has_key(1)
110         assert self.iod.has_key(2)
111         assert self.iod.has_key(3)
112
113     def test_insert_after(self):
114         self.iod.insert_after(1, 1, "z")
115         assert self.iod.items() == [(2, "b"), (3, "c"), (1, "z")]
116         assert len(self.iod) == 3
117         self.iod.insert_after(2, 0, "x")
118         assert self.iod.items() == [(2, "b"), (0, "x"), (3, "c"), (1, "z")]
119         assert len(self.iod) == 4
120         self.iod.insert_after(1, 0, "y")
121         assert self.iod.items() == [(2, "b"), (3, "c"), (1, "z"), (0, "y")]
122         assert len(self.iod) == 4
123         try:
124             self.iod.insert_after(5, 1, "a")
125         except KeyError:
126             pass
127         else:
128             assert False
129         assert self.iod.items() == [(2, "b"), (3, "c"), (1, "z"), (0, "y")]
130         assert len(self.iod) == 4
131
132     def test_insert_before(self):
133         self.iod.insert_before(1, 1, "z")
134         assert self.iod.items() == [(2, "b"), (3, "c"), (1, "z")]
135         assert len(self.iod) == 3
136         self.iod.insert_before(2, 0, "x")
137         assert self.iod.items() == [(0, "x"), (2, "b"), (3, "c"), (1, "z")]
138         assert len(self.iod) == 4
139         self.iod.insert_before(1, 0, "y")
140         assert self.iod.items() == [(2, "b"), (3, "c"), (0, "y"), (1, "z")]
141         assert len(self.iod) == 4
142         try:
143             self.iod.insert_before(5, 1, "a")
144         except KeyError:
145             pass
146         else:
147             assert False
148         assert self.iod.items() == [(2, "b"), (3, "c"), (0, "y"), (1, "z")]
149         assert len(self.iod) == 4
150
151     def test_insert_first(self):
152         self.iod.insert_first(0, "-")
153         assert self.iod.items() == [
154             (0, "-"), (2, "b"), (3, "c"), (1, "a")]
155         self.iod.insert_first(4, "d")
156         assert self.iod.items() == [
157             (4, "d"), (0, "-"), (2, "b"), (3, "c"), (1, "a")]
158
159     def test_insert_last(self):
160         self.iod.insert_last(0, "-")
161         assert self.iod.items() == [
162             (2, "b"), (3, "c"), (1, "a"), (0, "-")]
163         self.iod.insert_last(4, "d")
164         assert self.iod.items() == [
165             (2, "b"), (3, "c"), (1, "a"), (0, "-"), (4, "d")]
166
167     def test_items(self):
168         assert self.iod.items() == [(2, "b"), (3, "c"), (1, "a")]
169
170     def test_iteritems(self):
171         assert list(self.iod.iteritems()) == [(2, "b"), (3, "c"), (1, "a")]
172
173     def test_iterkeys(self):
174         assert list(self.iod.iterkeys()) == [2, 3, 1]
175
176     def test_itervalues(self):
177         assert list(self.iod.itervalues()) == ["b", "c", "a"]
178
179     def test_keys(self):
180         assert self.iod.keys() == [2, 3, 1]
181
182     def test_pop(self):
183         try:
184             self.iod.pop(0)
185         except KeyError:
186             pass
187         else:
188             assert False
189         assert self.iod.pop(0, "x") == "x"
190         assert self.iod.pop(1) == "a"
191         assert 1 not in self.iod
192         assert len(self.iod) == 2
193
194     def test_popitem(self):
195         assert self.iod.popitem() == (2, "b")
196         assert self.iod.popitem() == (3, "c")
197         assert self.iod.popitem() == (1, "a")
198         try:
199             self.iod.popitem()
200         except KeyError:
201             pass
202         else:
203             assert False
204
205     def test_reviteritems(self):
206         assert list(self.iod.reviteritems()) == [(1, "a"), (3, "c"), (2, "b")]
207
208     def test_reviterkeys(self):
209         assert list(self.iod.reviterkeys()) == [1, 3, 2]
210
211     def test_revitervalues(self):
212         assert list(self.iod.revitervalues()) == ["a", "c", "b"]
213
214     def test_setdefault(self):
215         assert self.iod.setdefault(0, "x") == "x"
216         assert self.iod.setdefault(1, "x") == "a"
217         assert self.iod.setdefault(4) is None
218
219     def test_update(self):
220         self.iod.update([(0, "x"), (4, "d")])
221         assert self.iod.items() == [
222             (4, "d"), (0, "x"), (2, "b"), (3, "c"), (1, "a")]
223
224     def test_values(self):
225         assert self.iod.values() == ["b", "c", "a"]
226
227
228 if __name__ == "__main__":
229     unittest.main()