[issue23086] Add start and stop parameters to the Sequence.index() ABC mixin method

Raymond Hettinger report at bugs.python.org
Wed Jan 7 07:48:26 CET 2015


Raymond Hettinger added the comment:

This test looks like it may have been a typo:

   self.assertEqual(seq.index('a'), 0, 1)

Also, it would be nice to investigate the differences with list.index() and str.index() for the corner cases.  Something along these lines:

    # Compare Sequence.index() behavior to list.index() behavior                        
    listseq = list('abracadabra')
    seqseq = SequenceSubclass(listseq)
    for start in range(-3, len(listseq) + 3):
        for stop in range(-3, len(listseq) + 3):
            for letter in set(listseq + ['z']):
                try:
                    expected = listseq.index(letter, start, stop)
                except ValueError:
                    with self.assertRaises(ValueError):
                        seqseq.index(letter, start, stop)
                else:
                    actual = seqseq.index(letter, start, stop)
                    self.assertEqual(actual, expected, (letter, start, stop))

    # Compare Sequence.index() behavior to str.index() behavior                         
    strseq = 'abracadabra'
    seqseq = SequenceSubclass(strseq)
    for start in range(-3, len(strseq) + 3):
        for stop in range(-3, len(strseq) + 3):
            for letter in set(strseq + 'z'):
                try:
                    expected = strseq.index(letter, start, stop)
                except ValueError:
                    with self.assertRaises(ValueError):
                        seqseq.index(letter, start, stop)
                else:
                    actual = seqseq.index(letter, start, stop)
                    self.assertEqual(actual, expected, (letter, start, stop)

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue23086>
_______________________________________


More information about the Python-bugs-list mailing list