2 from test
import support
4 maxsize
= support
.MAX_Py_ssize_t
11 class newstyle(object):
23 class BaseTestCase(unittest
.TestCase
):
31 self
.assertEqual(operator
.index(self
.o
), -2)
32 self
.assertEqual(operator
.index(self
.n
), 2)
37 slc
= slice(self
.o
, self
.o
, self
.o
)
38 check_slc
= slice(1, 1, 1)
39 self
.assertEqual(slc
.indices(self
.o
), check_slc
.indices(1))
40 slc
= slice(self
.n
, self
.n
, self
.n
)
41 check_slc
= slice(2, 2, 2)
42 self
.assertEqual(slc
.indices(self
.n
), check_slc
.indices(2))
44 def test_wrappers(self
):
47 self
.assertEqual(6 .__index
__(), 6)
48 self
.assertEqual(-7 .__index
__(), -7)
49 self
.assertEqual(self
.o
.__index
__(), 4)
50 self
.assertEqual(self
.n
.__index
__(), 5)
52 def test_subclasses(self
):
54 self
.assertEqual(r
[TrapInt(5):TrapInt(10)], r
[5:10])
55 self
.assertEqual(r
[TrapLong(5):TrapLong(10)], r
[5:10])
56 self
.assertEqual(slice(TrapInt()).indices(0), (0,0,1))
57 self
.assertEqual(slice(TrapLong(0)).indices(0), (0,0,1))
62 self
.failUnlessRaises(TypeError, operator
.index
, self
.o
)
63 self
.failUnlessRaises(TypeError, operator
.index
, self
.n
)
64 self
.failUnlessRaises(TypeError, slice(self
.o
).indices
, 0)
65 self
.failUnlessRaises(TypeError, slice(self
.n
).indices
, 0)
68 class SeqTestCase(unittest
.TestCase
):
69 # This test case isn't run directly. It just defines common tests
70 # to the different sequence types below
80 self
.assertEqual(self
.seq
[self
.n
], self
.seq
[2])
81 self
.assertEqual(self
.seq
[self
.o
], self
.seq
[-2])
88 self
.assertEqual(self
.seq
[self
.o
:self
.o2
], self
.seq
[1:3])
89 self
.assertEqual(self
.seq
[self
.n
:self
.n2
], self
.seq
[2:4])
91 def test_repeat(self
):
94 self
.assertEqual(self
.seq
* self
.o
, self
.seq
* 3)
95 self
.assertEqual(self
.seq
* self
.n
, self
.seq
* 2)
96 self
.assertEqual(self
.o
* self
.seq
, self
.seq
* 3)
97 self
.assertEqual(self
.n
* self
.seq
, self
.seq
* 2)
99 def test_wrappers(self
):
102 self
.assertEqual(self
.seq
.__getitem
__(self
.o
), self
.seq
[4])
103 self
.assertEqual(self
.seq
.__mul
__(self
.o
), self
.seq
* 4)
104 self
.assertEqual(self
.seq
.__rmul
__(self
.o
), self
.seq
* 4)
105 self
.assertEqual(self
.seq
.__getitem
__(self
.n
), self
.seq
[5])
106 self
.assertEqual(self
.seq
.__mul
__(self
.n
), self
.seq
* 5)
107 self
.assertEqual(self
.seq
.__rmul
__(self
.n
), self
.seq
* 5)
109 def test_subclasses(self
):
110 self
.assertEqual(self
.seq
[TrapInt()], self
.seq
[0])
111 self
.assertEqual(self
.seq
[TrapLong()], self
.seq
[0])
113 def test_error(self
):
116 indexobj
= lambda x
, obj
: obj
.seq
[x
]
117 self
.failUnlessRaises(TypeError, indexobj
, self
.o
, self
)
118 self
.failUnlessRaises(TypeError, indexobj
, self
.n
, self
)
119 sliceobj
= lambda x
, obj
: obj
.seq
[x
:]
120 self
.failUnlessRaises(TypeError, sliceobj
, self
.o
, self
)
121 self
.failUnlessRaises(TypeError, sliceobj
, self
.n
, self
)
124 class ListTestCase(SeqTestCase
):
125 seq
= [0,10,20,30,40,50]
127 def test_setdelitem(self
):
130 lst
= list('ab!cdefghi!j')
135 self
.assertEqual(lst
, list('abYdefghXj'))
137 lst
= [5, 6, 7, 8, 9, 10, 11]
138 lst
.__setitem
__(self
.n
, "here")
139 self
.assertEqual(lst
, [5, 6, "here", 8, 9, 10, 11])
140 lst
.__delitem
__(self
.n
)
141 self
.assertEqual(lst
, [5, 6, 8, 9, 10, 11])
143 def test_inplace_repeat(self
):
148 self
.assertEqual(lst
, [6, 4, 6, 4])
150 self
.assertEqual(lst
, [6, 4, 6, 4] * 3)
152 lst
= [5, 6, 7, 8, 9, 11]
153 l2
= lst
.__imul
__(self
.n
)
154 self
.assert_(l2
is lst
)
155 self
.assertEqual(lst
, [5, 6, 7, 8, 9, 11] * 3)
158 class TupleTestCase(SeqTestCase
):
159 seq
= (0,10,20,30,40,50)
161 class StringTestCase(SeqTestCase
):
162 seq
= "this is a test"
164 class UnicodeTestCase(SeqTestCase
):
165 seq
= "this is a test"
168 class OverflowTestCase(unittest
.TestCase
):
174 def test_large_longs(self
):
175 self
.assertEqual(self
.pos
.__index
__(), self
.pos
)
176 self
.assertEqual(self
.neg
.__index
__(), self
.neg
)
178 def test_getitem(self
):
179 class GetItem(object):
182 def __getitem__(self
, key
):
185 self
.assertEqual(x
[self
.pos
], self
.pos
)
186 self
.assertEqual(x
[self
.neg
], self
.neg
)
187 self
.assertEqual(x
[self
.neg
:self
.pos
].indices(maxsize
),
190 def test_sequence_repeat(self
):
191 self
.failUnlessRaises(OverflowError, lambda: "a" * self
.pos
)
192 self
.failUnlessRaises(OverflowError, lambda: "a" * self
.neg
)
196 support
.run_unittest(
205 if __name__
== "__main__":