from test
import test_support
class StructSeqTest(unittest
.TestCase
):
self
.assertEqual(len(t
), len(astuple
))
self
.assertEqual(t
, astuple
)
# Check that slicing works the same way; at one point, slicing t[i:j] with
# 0 < i < j could produce NULLs in the result.
for i
in xrange(-len(t
), len(t
)):
self
.assertEqual(t
[i
:], astuple
[i
:])
for j
in xrange(-len(t
), len(t
)):
self
.assertEqual(t
[i
:j
], astuple
[i
:j
])
for j
in xrange(-len(t
), len(t
)):
self
.assertEqual(t
[:j
], astuple
[:j
])
self
.assertRaises(IndexError, t
.__getitem
__, -len(t
)-1)
self
.assertRaises(IndexError, t
.__getitem
__, len(t
))
for i
in xrange(-len(t
), len(t
)-1):
self
.assertEqual(t
[i
], astuple
[i
])
for i
in xrange(len(t1
)):
self
.assertEqual(t2
[i
], t2
[i
+len(t1
)])
for i
in xrange(len(t1
)):
self
.assertEqual(t2
[i
], t2
[i
+len(t1
)])
self
.assertEqual(t2
[i
], t2
[i
+2*len(t1
)])
self
.assert_(-42 not in t1
)
self
.assertEqual(hash(t1
), hash(tuple(t1
)))
self
.assert_(not (t1
< t2
))
self
.assert_(not (t1
> t2
))
self
.assert_(not (t1
!= t2
))
self
.assertEqual(len(t
), t
.n_fields
)
self
.assertEqual(t
.n_fields
, t
.n_sequence_fields
+t
.n_unnamed_fields
)
def test_constructor(self
):
self
.assertRaises(TypeError, t
)
self
.assertRaises(TypeError, t
, None)
self
.assertRaises(TypeError, t
, "123")
self
.assertRaises(TypeError, t
, "123", dict={})
self
.assertRaises(TypeError, t
, "123456789", dict=None)
self
.assertEqual("".join(t(s
)), s
)
def test_eviltuple(self
):
# Devious code could crash structseqs' contructors
def __getitem__(self
, i
):
self
.assertRaises(Exc
, time
.struct_time
, C())
test_support
.run_unittest(StructSeqTest
)
if __name__
== "__main__":