~ubuntu-branches/ubuntu/karmic/python3.0/karmic

« back to all changes in this revision

Viewing changes to Lib/test/test_iterlen.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-16 17:18:23 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20090216171823-1d5cm5qnnjvmnzzm
Tags: 3.0.1-0ubuntu1
New upstream version.

Show diffs side-by-side

added added

removed removed

Lines of Context:
195
195
        d.extend(range(20))
196
196
        self.assertEqual(len(it), 0)
197
197
 
 
198
## -- Check to make sure exceptions are not suppressed by __length_hint__()
 
199
 
 
200
 
 
201
class BadLen(object):
 
202
    def __iter__(self): return iter(range(10))
 
203
    def __len__(self):
 
204
        raise RuntimeError('hello')
 
205
 
 
206
class BadLengthHint(object):
 
207
    def __iter__(self): return iter(range(10))
 
208
    def __length_hint__(self):
 
209
        raise RuntimeError('hello')
 
210
 
 
211
class NoneLengthHint(object):
 
212
    def __iter__(self): return iter(range(10))
 
213
    def __length_hint__(self):
 
214
        return None
 
215
 
 
216
class TestLengthHintExceptions(unittest.TestCase):
 
217
 
 
218
    def test_issue1242657(self):
 
219
        self.assertRaises(RuntimeError, list, BadLen())
 
220
        self.assertRaises(RuntimeError, list, BadLengthHint())
 
221
        self.assertRaises(RuntimeError, [].extend, BadLen())
 
222
        self.assertRaises(RuntimeError, [].extend, BadLengthHint())
 
223
        b = bytearray(range(10))
 
224
        self.assertRaises(RuntimeError, b.extend, BadLen())
 
225
        self.assertRaises(RuntimeError, b.extend, BadLengthHint())
 
226
 
 
227
    def test_invalid_hint(self):
 
228
        # Make sure an invalid result doesn't muck-up the works
 
229
        self.assertEqual(list(NoneLengthHint()), list(range(10)))
 
230
 
198
231
 
199
232
def test_main():
200
233
    unittests = [
210
243
        TestSet,
211
244
        TestList,
212
245
        TestListReversed,
 
246
        TestLengthHintExceptions,
213
247
    ]
214
248
    support.run_unittest(*unittests)
215
249