1.1 --- a/tests/range.py Sat Dec 10 19:05:06 2016 +0100
1.2 +++ b/tests/range.py Sat Dec 10 21:13:54 2016 +0100
1.3 @@ -1,27 +1,61 @@
1.4 +# Obtain a list computed by range.
1.5 +
1.6 l = range(0, 10)
1.7 -print l # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.8 -print len(l) # 10
1.9 +print l # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1.10 +print len(l) # 10
1.11 +
1.12 +# Test a descending xrange.
1.13
1.14 x = xrange(0, -10, -2)
1.15 -print x # __builtins__.span.xrange(0, -10, -2)
1.16 -print len(x) # 5
1.17 +print x # __builtins__.span.xrange(0, -10, -2)
1.18 +print len(x) # 5
1.19
1.20 for i in x:
1.21 - print i # 0
1.22 - # -2
1.23 - # -4
1.24 - # -6
1.25 - # -8
1.26 + print i # 0
1.27 + # -2
1.28 + # -4
1.29 + # -6
1.30 + # -8
1.31 +
1.32 +# Test an empty xrange.
1.33
1.34 x = xrange(0, -10, 2)
1.35 -print x # __builtins__.span.xrange(0, 0, 2)
1.36 -print len(x) # 0
1.37 +print x # __builtins__.span.xrange(0, 0, 2)
1.38 +print len(x) # 0
1.39 +
1.40 +# Test a simple ascending xrange.
1.41
1.42 y = xrange(4, 8)
1.43 -print y # __builtins__.span.xrange(4, 8, 1)
1.44 -print enumerate(y) # [(0, 4), (1, 5), (2, 6), (3, 7)]
1.45 -print sum(y) # 22
1.46 -print map(lambda x: x*2, y) # [8, 10, 12, 14]
1.47 -print filter(lambda x: x%2, y) # [5, 7]
1.48 -print max(y) # 7
1.49 -print min(y) # 4
1.50 +print y # __builtins__.span.xrange(4, 8, 1)
1.51 +
1.52 +# Test enumerate and sum.
1.53 +
1.54 +print enumerate(y) # [(0, 4), (1, 5), (2, 6), (3, 7)]
1.55 +print sum(y) # 22
1.56 +
1.57 +# Test map and filter using lambdas.
1.58 +
1.59 +print map(lambda x: x*2, y) # [8, 10, 12, 14]
1.60 +print filter(lambda x: x%2, y) # [5, 7]
1.61 +
1.62 +# Test the limits of the range.
1.63 +
1.64 +print max(y) # 7
1.65 +print min(y) # 4
1.66 +
1.67 +# Reproduce the sum function using reduce and a lambda.
1.68 +
1.69 +print reduce(lambda x, y: x+y, y) # 22
1.70 +print reduce(lambda x, y: x+y, y, 0) # 22
1.71 +
1.72 +# Test a single element range.
1.73 +
1.74 +single = xrange(3, 5, 2)
1.75 +print list(single) # [3]
1.76 +print reduce(lambda x, y: x+y, single) # [3]
1.77 +
1.78 +# Test a double element range.
1.79 +
1.80 +double = xrange(3, 5, 1)
1.81 +print list(double) # [3, 4]
1.82 +print reduce(lambda x, y: x+y, double) # [7]