Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_operator.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | 97834382c6cc |
| children |
| rev | line source |
|---|---|
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
1 import unittest |
| 4777 | 2 |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
45810
diff
changeset
|
3 from test import support |
| 4777 | 4 |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
5 py_operator = support.import_fresh_module('operator', blocked=['_operator']) |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
6 c_operator = support.import_fresh_module('operator', fresh=['_operator']) |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
7 |
| 36150 | 8 class Seq1: |
| 9 def __init__(self, lst): | |
| 10 self.lst = lst | |
| 11 def __len__(self): | |
| 12 return len(self.lst) | |
| 13 def __getitem__(self, i): | |
| 14 return self.lst[i] | |
| 15 def __add__(self, other): | |
| 16 return self.lst + other.lst | |
| 17 def __mul__(self, other): | |
| 18 return self.lst * other | |
| 19 def __rmul__(self, other): | |
| 20 return other * self.lst | |
| 21 | |
| 22 class Seq2(object): | |
| 23 def __init__(self, lst): | |
| 24 self.lst = lst | |
| 25 def __len__(self): | |
| 26 return len(self.lst) | |
| 27 def __getitem__(self, i): | |
| 28 return self.lst[i] | |
| 29 def __add__(self, other): | |
| 30 return self.lst + other.lst | |
| 31 def __mul__(self, other): | |
| 32 return self.lst * other | |
| 33 def __rmul__(self, other): | |
| 34 return other * self.lst | |
| 35 | |
| 4777 | 36 |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
37 class OperatorTestCase: |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
38 def test_lt(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
39 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
40 self.assertRaises(TypeError, operator.lt) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
41 self.assertRaises(TypeError, operator.lt, 1j, 2j) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
42 self.assertFalse(operator.lt(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
43 self.assertFalse(operator.lt(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
44 self.assertFalse(operator.lt(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
45 self.assertFalse(operator.lt(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
46 self.assertTrue(operator.lt(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
47 self.assertTrue(operator.lt(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
48 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
49 def test_le(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
50 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
51 self.assertRaises(TypeError, operator.le) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
52 self.assertRaises(TypeError, operator.le, 1j, 2j) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
53 self.assertFalse(operator.le(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
54 self.assertFalse(operator.le(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
55 self.assertTrue(operator.le(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
56 self.assertTrue(operator.le(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
57 self.assertTrue(operator.le(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
58 self.assertTrue(operator.le(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
59 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
60 def test_eq(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
61 operator = self.module |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
62 class C(object): |
|
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
63 def __eq__(self, other): |
|
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
64 raise SyntaxError |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
65 self.assertRaises(TypeError, operator.eq) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
66 self.assertRaises(SyntaxError, operator.eq, C(), C()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
67 self.assertFalse(operator.eq(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
68 self.assertFalse(operator.eq(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
69 self.assertTrue(operator.eq(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
70 self.assertTrue(operator.eq(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
71 self.assertFalse(operator.eq(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
72 self.assertFalse(operator.eq(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
73 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
74 def test_ne(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
75 operator = self.module |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
76 class C(object): |
|
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
77 def __ne__(self, other): |
|
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
78 raise SyntaxError |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
79 self.assertRaises(TypeError, operator.ne) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
80 self.assertRaises(SyntaxError, operator.ne, C(), C()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
81 self.assertTrue(operator.ne(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
82 self.assertTrue(operator.ne(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
83 self.assertFalse(operator.ne(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
84 self.assertFalse(operator.ne(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
85 self.assertTrue(operator.ne(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
86 self.assertTrue(operator.ne(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
87 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
88 def test_ge(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
89 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
90 self.assertRaises(TypeError, operator.ge) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
91 self.assertRaises(TypeError, operator.ge, 1j, 2j) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
92 self.assertTrue(operator.ge(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
93 self.assertTrue(operator.ge(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
94 self.assertTrue(operator.ge(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
95 self.assertTrue(operator.ge(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
96 self.assertFalse(operator.ge(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
97 self.assertFalse(operator.ge(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
98 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
99 def test_gt(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
100 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
101 self.assertRaises(TypeError, operator.gt) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
102 self.assertRaises(TypeError, operator.gt, 1j, 2j) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
103 self.assertTrue(operator.gt(1, 0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
104 self.assertTrue(operator.gt(1, 0.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
105 self.assertFalse(operator.gt(1, 1)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
106 self.assertFalse(operator.gt(1, 1.0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
107 self.assertFalse(operator.gt(1, 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
108 self.assertFalse(operator.gt(1, 2.0)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
109 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
110 def test_abs(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
111 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
112 self.assertRaises(TypeError, operator.abs) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
113 self.assertRaises(TypeError, operator.abs, None) |
|
42188
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
114 self.assertEqual(operator.abs(-1), 1) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
115 self.assertEqual(operator.abs(1), 1) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
116 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
117 def test_add(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
118 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
119 self.assertRaises(TypeError, operator.add) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
120 self.assertRaises(TypeError, operator.add, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
121 self.assertTrue(operator.add(3, 4) == 7) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
122 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
123 def test_bitwise_and(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
124 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
125 self.assertRaises(TypeError, operator.and_) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
126 self.assertRaises(TypeError, operator.and_, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
127 self.assertTrue(operator.and_(0xf, 0xa) == 0xa) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
128 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
129 def test_concat(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
130 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
131 self.assertRaises(TypeError, operator.concat) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
132 self.assertRaises(TypeError, operator.concat, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
133 self.assertTrue(operator.concat('py', 'thon') == 'python') |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
134 self.assertTrue(operator.concat([1, 2], [3, 4]) == [1, 2, 3, 4]) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
135 self.assertTrue(operator.concat(Seq1([5, 6]), Seq1([7])) == [5, 6, 7]) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
136 self.assertTrue(operator.concat(Seq2([5, 6]), Seq2([7])) == [5, 6, 7]) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
137 self.assertRaises(TypeError, operator.concat, 13, 29) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
138 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
139 def test_countOf(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
140 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
141 self.assertRaises(TypeError, operator.countOf) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
142 self.assertRaises(TypeError, operator.countOf, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
143 self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 3) == 1) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
144 self.assertTrue(operator.countOf([1, 2, 1, 3, 1, 4], 5) == 0) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
145 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
146 def test_delitem(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
147 operator = self.module |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
148 a = [4, 3, 2, 1] |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
149 self.assertRaises(TypeError, operator.delitem, a) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
150 self.assertRaises(TypeError, operator.delitem, a, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
151 self.assertTrue(operator.delitem(a, 1) is None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
152 self.assertTrue(a == [4, 2, 1]) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
153 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
154 def test_floordiv(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
155 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
156 self.assertRaises(TypeError, operator.floordiv, 5) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
157 self.assertRaises(TypeError, operator.floordiv, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
158 self.assertTrue(operator.floordiv(5, 2) == 2) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
159 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
160 def test_truediv(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
161 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
162 self.assertRaises(TypeError, operator.truediv, 5) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
163 self.assertRaises(TypeError, operator.truediv, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
164 self.assertTrue(operator.truediv(5, 2) == 2.5) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
165 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
166 def test_getitem(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
167 operator = self.module |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
168 a = range(10) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
169 self.assertRaises(TypeError, operator.getitem) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
170 self.assertRaises(TypeError, operator.getitem, a, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
171 self.assertTrue(operator.getitem(a, 2) == 2) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
172 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
173 def test_indexOf(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
174 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
175 self.assertRaises(TypeError, operator.indexOf) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
176 self.assertRaises(TypeError, operator.indexOf, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
177 self.assertTrue(operator.indexOf([4, 3, 2, 1], 3) == 1) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
178 self.assertRaises(ValueError, operator.indexOf, [4, 3, 2, 1], 0) |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
179 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
180 def test_invert(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
181 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
182 self.assertRaises(TypeError, operator.invert) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
183 self.assertRaises(TypeError, operator.invert, None) |
|
42188
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
184 self.assertEqual(operator.inv(4), -5) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
185 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
186 def test_lshift(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
187 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
188 self.assertRaises(TypeError, operator.lshift) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
189 self.assertRaises(TypeError, operator.lshift, None, 42) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
190 self.assertTrue(operator.lshift(5, 1) == 10) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
191 self.assertTrue(operator.lshift(5, 0) == 5) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
192 self.assertRaises(ValueError, operator.lshift, 2, -1) |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
193 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
194 def test_mod(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
195 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
196 self.assertRaises(TypeError, operator.mod) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
197 self.assertRaises(TypeError, operator.mod, None, 42) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
198 self.assertTrue(operator.mod(5, 2) == 1) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
199 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
200 def test_mul(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
201 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
202 self.assertRaises(TypeError, operator.mul) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
203 self.assertRaises(TypeError, operator.mul, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
204 self.assertTrue(operator.mul(5, 2) == 10) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
205 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
206 def test_neg(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
207 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
208 self.assertRaises(TypeError, operator.neg) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
209 self.assertRaises(TypeError, operator.neg, None) |
|
42188
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
210 self.assertEqual(operator.neg(5), -5) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
211 self.assertEqual(operator.neg(-5), 5) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
212 self.assertEqual(operator.neg(0), 0) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
213 self.assertEqual(operator.neg(-0), 0) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
214 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
215 def test_bitwise_or(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
216 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
217 self.assertRaises(TypeError, operator.or_) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
218 self.assertRaises(TypeError, operator.or_, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
219 self.assertTrue(operator.or_(0xa, 0x5) == 0xf) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
220 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
221 def test_pos(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
222 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
223 self.assertRaises(TypeError, operator.pos) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
224 self.assertRaises(TypeError, operator.pos, None) |
|
42188
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
225 self.assertEqual(operator.pos(5), 5) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
226 self.assertEqual(operator.pos(-5), -5) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
227 self.assertEqual(operator.pos(0), 0) |
|
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
228 self.assertEqual(operator.pos(-0), 0) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
229 |
|
24887
d797cfa8ca0d
Added __pow__(a,b) to the operator module. Completes the pattern of
Raymond Hettinger <python@rcn.com>
parents:
24364
diff
changeset
|
230 def test_pow(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
231 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
232 self.assertRaises(TypeError, operator.pow) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
233 self.assertRaises(TypeError, operator.pow, None, None) |
|
42188
81930eaae715
Patch by Christian Heimes to change self.assert_(x == y) into
Guido van Rossum <guido@python.org>
parents:
42142
diff
changeset
|
234 self.assertEqual(operator.pow(3,5), 3**5) |
|
24887
d797cfa8ca0d
Added __pow__(a,b) to the operator module. Completes the pattern of
Raymond Hettinger <python@rcn.com>
parents:
24364
diff
changeset
|
235 self.assertRaises(TypeError, operator.pow, 1) |
|
d797cfa8ca0d
Added __pow__(a,b) to the operator module. Completes the pattern of
Raymond Hettinger <python@rcn.com>
parents:
24364
diff
changeset
|
236 self.assertRaises(TypeError, operator.pow, 1, 2, 3) |
|
d797cfa8ca0d
Added __pow__(a,b) to the operator module. Completes the pattern of
Raymond Hettinger <python@rcn.com>
parents:
24364
diff
changeset
|
237 |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
238 def test_rshift(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
239 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
240 self.assertRaises(TypeError, operator.rshift) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
241 self.assertRaises(TypeError, operator.rshift, None, 42) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
242 self.assertTrue(operator.rshift(5, 1) == 2) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
243 self.assertTrue(operator.rshift(5, 0) == 5) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
244 self.assertRaises(ValueError, operator.rshift, 2, -1) |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
245 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
246 def test_contains(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
247 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
248 self.assertRaises(TypeError, operator.contains) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
249 self.assertRaises(TypeError, operator.contains, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
250 self.assertTrue(operator.contains(range(4), 2)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
251 self.assertFalse(operator.contains(range(4), 5)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
252 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
253 def test_setitem(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
254 operator = self.module |
|
41642
a6eb6acfe04a
Merged revisions 55007-55179 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41554
diff
changeset
|
255 a = list(range(3)) |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
256 self.assertRaises(TypeError, operator.setitem, a) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
257 self.assertRaises(TypeError, operator.setitem, a, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
258 self.assertTrue(operator.setitem(a, 0, 2) is None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
259 self.assertTrue(a == [2, 1, 2]) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
260 self.assertRaises(IndexError, operator.setitem, a, 4, 2) |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
261 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
262 def test_sub(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
263 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
264 self.assertRaises(TypeError, operator.sub) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
265 self.assertRaises(TypeError, operator.sub, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
266 self.assertTrue(operator.sub(5, 2) == 3) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
267 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
268 def test_truth(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
269 operator = self.module |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
270 class C(object): |
|
40401
88133417dfd0
- patch #1600346 submitted by Tomer Filiba
Jack Diederich <jackdied@gmail.com>
parents:
37191
diff
changeset
|
271 def __bool__(self): |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
272 raise SyntaxError |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
273 self.assertRaises(TypeError, operator.truth) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
274 self.assertRaises(SyntaxError, operator.truth, C()) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
275 self.assertTrue(operator.truth(5)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
276 self.assertTrue(operator.truth([0])) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
277 self.assertFalse(operator.truth(0)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
278 self.assertFalse(operator.truth([])) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
279 |
|
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
280 def test_bitwise_xor(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
281 operator = self.module |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
282 self.assertRaises(TypeError, operator.xor) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
283 self.assertRaises(TypeError, operator.xor, None, None) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
284 self.assertTrue(operator.xor(0xb, 0xc) == 0x7) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
285 |
|
27290
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
286 def test_is(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
287 operator = self.module |
|
27290
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
288 a = b = 'xyzpdq' |
|
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
289 c = a[:3] + b[3:] |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
290 self.assertRaises(TypeError, operator.is_) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
291 self.assertTrue(operator.is_(a, b)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
292 self.assertFalse(operator.is_(a,c)) |
|
27290
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
293 |
|
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
294 def test_is_not(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
295 operator = self.module |
|
27290
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
296 a = b = 'xyzpdq' |
|
e83a42a90df1
SF patch #670423: Add missing identity tests to operator.c
Raymond Hettinger <python@rcn.com>
parents:
24887
diff
changeset
|
297 c = a[:3] + b[3:] |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
298 self.assertRaises(TypeError, operator.is_not) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
299 self.assertFalse(operator.is_not(a, b)) |
|
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
300 self.assertTrue(operator.is_not(a,c)) |
|
19163
b160fa63f40c
Added tests for rich comparison operator functions.
Fred Drake <fdrake@acm.org>
parents:
19112
diff
changeset
|
301 |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
302 def test_attrgetter(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
303 operator = self.module |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
304 class A: |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
305 pass |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
306 a = A() |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
307 a.name = 'arthur' |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
308 f = operator.attrgetter('name') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
309 self.assertEqual(f(a), 'arthur') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
310 f = operator.attrgetter('rank') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
311 self.assertRaises(AttributeError, f, a) |
|
65818
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
312 self.assertRaises(TypeError, operator.attrgetter, 2) |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
313 self.assertRaises(TypeError, operator.attrgetter) |
|
34716
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
314 |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
315 # multiple gets |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
316 record = A() |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
317 record.x = 'X' |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
318 record.y = 'Y' |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
319 record.z = 'Z' |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
320 self.assertEqual(operator.attrgetter('x','z','y')(record), ('X', 'Z', 'Y')) |
|
65818
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
321 self.assertRaises(TypeError, operator.attrgetter, ('x', (), 'y')) |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
322 |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
323 class C(object): |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42188
diff
changeset
|
324 def __getattr__(self, name): |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
325 raise SyntaxError |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
326 self.assertRaises(SyntaxError, operator.attrgetter('foo'), C()) |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
327 |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
328 # recursive gets |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
329 a = A() |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
330 a.name = 'arthur' |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
331 a.child = A() |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
332 a.child.name = 'thomas' |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
333 f = operator.attrgetter('child.name') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
334 self.assertEqual(f(a), 'thomas') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
335 self.assertRaises(AttributeError, f, a.child) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
336 f = operator.attrgetter('name', 'child.name') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
337 self.assertEqual(f(a), ('arthur', 'thomas')) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
338 f = operator.attrgetter('name', 'child.name', 'child.child.name') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
339 self.assertRaises(AttributeError, f, a) |
|
65818
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
340 f = operator.attrgetter('child.') |
|
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
341 self.assertRaises(AttributeError, f, a) |
|
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
342 f = operator.attrgetter('.child') |
|
4127ab1f6338
Issue #10160: Speed up operator.attrgetter. Patch by Christos Georgiou.
Antoine Pitrou <solipsis@pitrou.net>
parents:
55593
diff
changeset
|
343 self.assertRaises(AttributeError, f, a) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
344 |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
345 a.child.child = A() |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
346 a.child.child.name = 'johnson' |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
347 f = operator.attrgetter('child.child.name') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
348 self.assertEqual(f(a), 'johnson') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
349 f = operator.attrgetter('name', 'child.name', 'child.child.name') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
350 self.assertEqual(f(a), ('arthur', 'thomas', 'johnson')) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
351 |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
352 def test_itemgetter(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
353 operator = self.module |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
354 a = 'ABCDE' |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
355 f = operator.itemgetter(2) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
356 self.assertEqual(f(a), 'C') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
357 f = operator.itemgetter(10) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
358 self.assertRaises(IndexError, f, a) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
359 |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
360 class C(object): |
|
44828
ef7d72d98485
Merged revisions 60124-60142 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
42188
diff
changeset
|
361 def __getitem__(self, name): |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
362 raise SyntaxError |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
51064
diff
changeset
|
363 self.assertRaises(SyntaxError, operator.itemgetter(42), C()) |
|
33877
a8c979cc4fa6
Add error checks for the bz2, cStringIO and operator modules.
Walter Dörwald <walter@livinglogic.de>
parents:
31210
diff
changeset
|
364 |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
365 f = operator.itemgetter('name') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
366 self.assertRaises(TypeError, f, a) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
367 self.assertRaises(TypeError, operator.itemgetter) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
368 |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
369 d = dict(key='val') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
370 f = operator.itemgetter('key') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
371 self.assertEqual(f(d), 'val') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
372 f = operator.itemgetter('nonkey') |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
373 self.assertRaises(KeyError, f, d) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
374 |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
375 # example used in the docs |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
376 inventory = [('apple', 3), ('banana', 2), ('pear', 5), ('orange', 1)] |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
377 getcount = operator.itemgetter(1) |
|
42142
a53e48be6df9
Merged revisions 56125-56153 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41642
diff
changeset
|
378 self.assertEqual(list(map(getcount, inventory)), [3, 2, 5, 1]) |
|
31210
c06b570adf12
Guido grants a Christmas wish:
Raymond Hettinger <python@rcn.com>
parents:
31052
diff
changeset
|
379 self.assertEqual(sorted(inventory, key=getcount), |
|
31052
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
380 [('orange', 1), ('banana', 2), ('apple', 3), ('pear', 5)]) |
|
456e274f8602
As discussed on python-dev, added two extractor functions to the
Raymond Hettinger <python@rcn.com>
parents:
27290
diff
changeset
|
381 |
|
34716
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
382 # multiple gets |
|
42142
a53e48be6df9
Merged revisions 56125-56153 via svnmerge from
Guido van Rossum <guido@python.org>
parents:
41642
diff
changeset
|
383 data = list(map(str, range(20))) |
|
34716
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
384 self.assertEqual(operator.itemgetter(2,10,5)(data), ('2', '10', '5')) |
|
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
385 self.assertRaises(TypeError, operator.itemgetter(2, 'x', 5), data) |
|
20013
e3184e46303b
Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents:
19694
diff
changeset
|
386 |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
387 def test_methodcaller(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
388 operator = self.module |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
389 self.assertRaises(TypeError, operator.methodcaller) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
390 class A: |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
391 def foo(self, *args, **kwds): |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
392 return args[0] + args[1] |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
393 def bar(self, f=42): |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
394 return f |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
395 def baz(*args, **kwds): |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
396 return kwds['name'], kwds['self'] |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
397 a = A() |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
398 f = operator.methodcaller('foo') |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
399 self.assertRaises(IndexError, f, a) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
400 f = operator.methodcaller('foo', 1, 2) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
401 self.assertEqual(f(a), 3) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
402 f = operator.methodcaller('bar') |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
403 self.assertEqual(f(a), 42) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
404 self.assertRaises(TypeError, f, a, a) |
|
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
405 f = operator.methodcaller('bar', f=5) |
|
66340
2beb25369289
Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents:
55593
diff
changeset
|
406 self.assertEqual(f(a), 5) |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
407 f = operator.methodcaller('baz', name='spam', self='eggs') |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
408 self.assertEqual(f(a), ('spam', 'eggs')) |
|
45495
48488fa50729
Merged revisions 61003-61033 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
44828
diff
changeset
|
409 |
|
36152
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
410 def test_inplace(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
411 operator = self.module |
|
36152
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
412 class C(object): |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
413 def __iadd__ (self, other): return "iadd" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
414 def __iand__ (self, other): return "iand" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
415 def __ifloordiv__(self, other): return "ifloordiv" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
416 def __ilshift__ (self, other): return "ilshift" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
417 def __imod__ (self, other): return "imod" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
418 def __imul__ (self, other): return "imul" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
419 def __ior__ (self, other): return "ior" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
420 def __ipow__ (self, other): return "ipow" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
421 def __irshift__ (self, other): return "irshift" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
422 def __isub__ (self, other): return "isub" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
423 def __itruediv__ (self, other): return "itruediv" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
424 def __ixor__ (self, other): return "ixor" |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
425 def __getitem__(self, other): return 5 # so that C is a sequence |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
426 c = C() |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
427 self.assertEqual(operator.iadd (c, 5), "iadd") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
428 self.assertEqual(operator.iand (c, 5), "iand") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
429 self.assertEqual(operator.ifloordiv(c, 5), "ifloordiv") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
430 self.assertEqual(operator.ilshift (c, 5), "ilshift") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
431 self.assertEqual(operator.imod (c, 5), "imod") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
432 self.assertEqual(operator.imul (c, 5), "imul") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
433 self.assertEqual(operator.ior (c, 5), "ior") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
434 self.assertEqual(operator.ipow (c, 5), "ipow") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
435 self.assertEqual(operator.irshift (c, 5), "irshift") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
436 self.assertEqual(operator.isub (c, 5), "isub") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
437 self.assertEqual(operator.itruediv (c, 5), "itruediv") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
438 self.assertEqual(operator.ixor (c, 5), "ixor") |
|
f9281283b109
adding in-place operators to the operator module.
Armin Rigo <arigo@tunes.org>
parents:
36150
diff
changeset
|
439 self.assertEqual(operator.iconcat (c, c), "iadd") |
|
20013
e3184e46303b
Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents:
19694
diff
changeset
|
440 |
|
79511
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
441 def test_length_hint(self): |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
442 operator = self.module |
|
79511
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
443 class X(object): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
444 def __init__(self, value): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
445 self.value = value |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
446 |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
447 def __length_hint__(self): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
448 if type(self.value) is type: |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
449 raise self.value |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
450 else: |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
451 return self.value |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
452 |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
453 self.assertEqual(operator.length_hint([], 2), 0) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
454 self.assertEqual(operator.length_hint(iter([1, 2, 3])), 3) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
455 |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
456 self.assertEqual(operator.length_hint(X(2)), 2) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
457 self.assertEqual(operator.length_hint(X(NotImplemented), 4), 4) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
458 self.assertEqual(operator.length_hint(X(TypeError), 12), 12) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
459 with self.assertRaises(TypeError): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
460 operator.length_hint(X("abc")) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
461 with self.assertRaises(ValueError): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
462 operator.length_hint(X(-2)) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
463 with self.assertRaises(LookupError): |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
464 operator.length_hint(X(LookupError)) |
|
a7ec0a1b0f7c
Issue #16148: implemented PEP 424
Armin Ronacher <armin.ronacher@active-4.com>
parents:
68257
diff
changeset
|
465 |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
466 def test_dunder_is_original(self): |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
467 operator = self.module |
|
34716
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
468 |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
469 names = [name for name in dir(operator) if not name.startswith('_')] |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
470 for name in names: |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
471 orig = getattr(operator, name) |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
472 dunder = getattr(operator, '__' + name.strip('_') + '__', None) |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
473 if dunder: |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
474 self.assertIs(dunder, orig) |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
475 |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
476 class PyOperatorTestCase(OperatorTestCase, unittest.TestCase): |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
477 module = py_operator |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
478 |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
479 @unittest.skipUnless(c_operator, 'requires _operator') |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
480 class COperatorTestCase(OperatorTestCase, unittest.TestCase): |
|
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
481 module = c_operator |
|
34716
ddc2276c247e
operator.itemgetter() and operator.attrgetter() now support extraction
Raymond Hettinger <python@rcn.com>
parents:
33877
diff
changeset
|
482 |
|
20013
e3184e46303b
Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents:
19694
diff
changeset
|
483 if __name__ == "__main__": |
|
83465
97834382c6cc
Issue #16694: Add a pure Python implementation of the operator module.
Antoine Pitrou <solipsis@pitrou.net>
parents:
79511
diff
changeset
|
484 unittest.main() |
