@@ -12,6 +12,20 @@ class xrange(object):
1212 Advanced (re)implementation of xrange (supports slice/copy/etc.)
1313 Reference: http://code.activestate.com/recipes/521885-a-pythonic-implementation-of-xrange/
1414
15+ >>> list(xrange(1, 9)) == range(1, 9)
16+ True
17+ >>> list(xrange(8, 0, -16)) == range(8, 0, -16)
18+ True
19+ >>> list(xrange(0, 8, 16)) == range(0, 8, 16)
20+ True
21+ >>> list(xrange(0, 4, 5)) == range(0, 4, 5)
22+ True
23+ >>> list(xrange(4, 0, 3)) == range(4, 0, 3)
24+ True
25+ >>> list(xrange(0, -3)) == range(0, -3)
26+ True
27+ >>> list(xrange(0, 7, 2)) == range(0, 7, 2)
28+ True
1529 >>> foobar = xrange(1, 10)
1630 >>> 7 in foobar
1731 True
@@ -60,7 +74,7 @@ def __len__(self):
6074 return self ._len ()
6175
6276 def _len (self ):
63- return max (0 , int ((self .stop - self .start ) // self .step ))
77+ return max (0 , 1 + int ((self .stop - 1 - self .start ) // self .step ))
6478
6579 def __contains__ (self , value ):
6680 return (self .start <= value < self .stop ) and (value - self .start ) % self .step == 0
0 commit comments