# 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