1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
|
# Py2.7+ only
import sys
def test_set_literal():
"""
>>> type(test_set_literal()) is set
True
>>> sorted(test_set_literal())
['a', 'b', 1]
"""
s1 = {1, 'a', 1, 'b', 'a'}
return s1
def test_set_add():
"""
>>> type(test_set_add()) is set
True
>>> sorted(test_set_add())
['a', 1, (1, 2)]
"""
s1 = {1, (1, 2)}
s1.add(1)
s1.add('a')
s1.add(1)
s1.add((1, 2))
return s1
def test_set_comp():
"""
>>> type(test_set_comp()) is set
True
>>> sorted(test_set_comp())
[0, 1, 2]
"""
s1 = {i % 3 for i in range(5)}
return s1
def test_frozenset_set_comp():
"""
>>> type(test_frozenset_set_comp()) is frozenset
True
>>> sorted(test_frozenset_set_comp())
[0, 1, 2]
"""
s1 = frozenset({i % 3 for i in range(5)})
return s1
def test_set_sideeffect_unhashable_failure_literal():
"""
>>> test_set_sideeffect_unhashable_failure_literal()
[2, 4, 5]
"""
L = []
def sideeffect(x):
L.append(x)
return x
def unhashable_value(x):
L.append(x)
return set()
try:
s = {1, sideeffect(2), 3, unhashable_value(4), sideeffect(5)}
except TypeError: pass
else: assert False, "expected exception not raised"
return L
def test_set_comp_sideeffect_unhashable_failure():
"""
>>> test_set_comp_sideeffect_unhashable_failure()
(None, [2, 4])
"""
L = []
def value(x):
return x
def sideeffect(x):
L.append(x)
return x
def unhashable_value(x):
L.append(x)
return set()
s = None
try:
s = {f(i) for i, f in enumerate([value, sideeffect, value, unhashable_value, sideeffect], 1)}
except TypeError: pass
else: assert False, "expected exception not raised"
return s, L
def sorted(it):
# Py3 can't compare different types
chars = []
nums = []
tuples = []
for item in it:
if type(item) is int:
nums.append(item)
elif type(item) is tuple:
tuples.append(item)
else:
chars.append(item)
nums.sort()
chars.sort()
tuples.sort()
return chars+nums+tuples
|