Skip to content

Commit b109ea9

Browse files
author
klemens
committed
Merge branch 'master' into spelling
2 parents 79a7e5e + 3376808 commit b109ea9

50 files changed

Lines changed: 1482 additions & 584 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

tests/snippets/bools.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,6 @@ def __bool__(self):
4040
assert not (False and fake)
4141
assert (True and 5) == 5
4242

43-
assert bool.__doc__ == "bool(x) -> bool\n\nReturns True when the argument x is true, False otherwise.\nThe builtins True and False are the only two instances of the class bool.\nThe class bool is a subclass of the class int, and cannot be subclassed."
44-
4543
# Bools are also ints.
4644
assert isinstance(True, int)
4745
assert True + True == 2
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
assert list(enumerate(['a', 'b', 'c'])) == [(0, 'a'), (1, 'b'), (2, 'c')]
2+
3+
assert type(enumerate([])) == enumerate
4+
5+
assert list(enumerate(['a', 'b', 'c'], -100)) == [(-100, 'a'), (-99, 'b'), (-98, 'c')]
6+
assert list(enumerate(['a', 'b', 'c'], 2**200)) == [(2**200, 'a'), (2**200 + 1, 'b'), (2**200 + 2, 'c')]
7+
8+
9+
# test infinite iterator
10+
class Counter(object):
11+
counter = 0
12+
13+
def __next__(self):
14+
self.counter += 1
15+
return self.counter
16+
17+
def __iter__(self):
18+
return self
19+
20+
21+
it = enumerate(Counter())
22+
assert next(it) == (0, 1)
23+
assert next(it) == (1, 2)

tests/snippets/builtin_range.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,42 @@ def assert_raises(expr, exc_type):
1818

1919
assert range(2**63+1)[2**63] == 9223372036854775808
2020

21+
# len tests
22+
assert len(range(10, 5)) == 0, 'Range with no elements should have length = 0'
23+
assert len(range(10, 5, -2)) == 3, 'Expected length 3, for elements: 10, 8, 6'
24+
assert len(range(5, 10, 2)) == 3, 'Expected length 3, for elements: 5, 7, 9'
25+
2126
# index tests
2227
assert range(10).index(6) == 6
2328
assert range(4, 10).index(6) == 2
2429
assert range(4, 10, 2).index(6) == 1
30+
assert range(10, 4, -2).index(8) == 1
2531

2632
# index raises value error on out of bounds
2733
assert_raises(lambda _: range(10).index(-1), ValueError)
2834
assert_raises(lambda _: range(10).index(10), ValueError)
2935

3036
# index raises value error if out of step
3137
assert_raises(lambda _: range(4, 10, 2).index(5), ValueError)
38+
39+
# index raises value error if needle is not an int
40+
assert_raises(lambda _: range(10).index('foo'), ValueError)
41+
42+
# __bool__
43+
assert range(1).__bool__()
44+
assert range(1, 2).__bool__()
45+
46+
assert not range(0).__bool__()
47+
assert not range(1, 1).__bool__()
48+
49+
# __contains__
50+
assert range(10).__contains__(6)
51+
assert range(4, 10).__contains__(6)
52+
assert range(4, 10, 2).__contains__(6)
53+
assert range(10, 4, -2).__contains__(10)
54+
assert range(10, 4, -2).__contains__(8)
55+
56+
assert not range(10).__contains__(-1)
57+
assert not range(10, 4, -2).__contains__(9)
58+
assert not range(10, 4, -2).__contains__(4)
59+
assert not range(10).__contains__('foo')

tests/snippets/builtin_slice.py

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
2+
a = []
3+
assert a[:] == []
4+
assert a[:2**100] == []
5+
assert a[-2**100:] == []
6+
assert a[::2**100] == []
7+
assert a[10:20] == []
8+
assert a[-20:-10] == []
9+
10+
b = [1, 2]
11+
12+
assert b[:] == [1, 2]
13+
assert b[:2**100] == [1, 2]
14+
assert b[-2**100:] == [1, 2]
15+
assert b[2**100:] == []
16+
assert b[::2**100] == [1]
17+
assert b[-10:1] == [1]
18+
assert b[0:0] == []
19+
assert b[1:0] == []
20+
21+
try:
22+
_ = b[::0]
23+
except ValueError:
24+
pass
25+
else:
26+
assert False, "Zero step slice should raise ValueError"
27+
28+
assert b[::-1] == [2, 1]
29+
assert b[1::-1] == [2, 1]
30+
assert b[0::-1] == [1]
31+
assert b[0:-5:-1] == [1]
32+
assert b[:0:-1] == [2]
33+
assert b[5:0:-1] == [2]
34+
35+
c = list(range(10))
36+
37+
assert c[9:6:-3] == [9]
38+
assert c[9::-3] == [9, 6, 3, 0]
39+
assert c[9::-4] == [9, 5, 1]
40+
assert c[8::-2**100] == [8]
41+
42+
assert c[7:7:-2] == []
43+
assert c[7:8:-2] == []
44+
45+
d = "123456"
46+
47+
assert d[3::-1] == "4321"
48+
assert d[4::-3] == "52"
49+
50+
51+
slice_a = slice(5)
52+
assert slice_a.start is None
53+
assert slice_a.stop == 5
54+
assert slice_a.step is None
55+
56+
slice_b = slice(1, 5)
57+
assert slice_b.start == 1
58+
assert slice_b.stop == 5
59+
assert slice_b.step is None
60+
61+
slice_c = slice(1, 5, 2)
62+
assert slice_c.start == 1
63+
assert slice_c.stop == 5
64+
assert slice_c.step == 2
65+
66+
67+
class SubScript(object):
68+
def __getitem__(self, item):
69+
assert type(item) == slice
70+
71+
def __setitem__(self, key, value):
72+
assert type(key) == slice
73+
74+
75+
ss = SubScript()
76+
_ = ss[:]
77+
ss[:1] = 1

tests/snippets/builtin_zip.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
assert list(zip(['a', 'b', 'c'], range(3), [9, 8, 7, 99])) == [('a', 0, 9), ('b', 1, 8), ('c', 2, 7)]
2+
3+
assert list(zip(['a', 'b', 'c'])) == [('a',), ('b',), ('c',)]
4+
assert list(zip()) == []
5+
6+
assert list(zip(*zip(['a', 'b', 'c'], range(1, 4)))) == [('a', 'b', 'c'), (1, 2, 3)]
7+
8+
9+
# test infinite iterator
10+
class Counter(object):
11+
def __init__(self, counter=0):
12+
self.counter = counter
13+
14+
def __next__(self):
15+
self.counter += 1
16+
return self.counter
17+
18+
def __iter__(self):
19+
return self
20+
21+
22+
it = zip(Counter(), Counter(3))
23+
assert next(it) == (1, 4)
24+
assert next(it) == (2, 5)

tests/snippets/builtins.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,8 @@
55
# TODO:
66
# assert callable(callable)
77

8-
assert list(enumerate(['a', 'b', 'c'])) == [(0, 'a'), (1, 'b'), (2, 'c')]
9-
108
assert type(frozenset) is type
119

12-
assert list(zip(['a', 'b', 'c'], range(3), [9, 8, 7, 99])) == [('a', 0, 9), ('b', 1, 8), ('c', 2, 7)]
13-
1410
assert 3 == eval('1+2')
1511

1612
code = compile('5+3', 'x.py', 'eval')

tests/snippets/division_by_zero.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
try:
2+
5 / 0
3+
except ZeroDivisionError:
4+
pass
5+
else:
6+
assert False, 'Expected ZeroDivisionError'
7+
8+
try:
9+
5 / -0.0
10+
except ZeroDivisionError:
11+
pass
12+
else:
13+
assert False, 'Expected ZeroDivisionError'
14+
15+
try:
16+
5 / (2-2)
17+
except ZeroDivisionError:
18+
pass
19+
else:
20+
assert False, 'Expected ZeroDivisionError'
21+
22+
try:
23+
5 % 0
24+
except ZeroDivisionError:
25+
pass
26+
else:
27+
assert False, 'Expected ZeroDivisionError'
28+
29+
try:
30+
raise ZeroDivisionError('Is an ArithmeticError subclass?')
31+
except ArithmeticError:
32+
pass
33+
else:
34+
assert False, 'Expected ZeroDivisionError'

tests/snippets/numbers.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
x.__init__(6)
33
assert x == 5
44

5-
assert int.__doc__ == "int(x=0) -> integer\nint(x, base=10) -> integer\n\nConvert a number or string to an integer, or return 0 if no arguments\nare given. If x is a number, return x.__int__(). For floating point\nnumbers, this truncates towards zero.\n\nIf x is not a number or if base is given, then x must be a string,\nbytes, or bytearray instance representing an integer literal in the\ngiven base. The literal can be preceded by '+' or '-' and be surrounded\nby whitespace. The base defaults to 10. Valid bases are 0 and 2-36.\nBase 0 means to interpret the base from the string as an integer literal.\n>>> int('0b100', base=0)\n4"
6-
75

86
class A(int):
97
pass

tests/snippets/tuple.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,7 @@
1515

1616
assert y < x, "tuple __lt__ failed"
1717
assert x > y, "tuple __gt__ failed"
18+
19+
20+
b = (1,2,3)
21+
assert b.index(2) == 1

0 commit comments

Comments
 (0)