assert () is ()
assert tuple() is ()
assert tuple() is tuple()
a = ()
b = ()
assert a is b
assert (1,)[1:] is ()
assert (1, 2) * 0 is ()
assert len(()) == 0
assert len((1,)) == 1
assert len((1, 2, 3)) == 3
a = (1, 2, 3)
assert a[1] == 2
a = ('a', 'b', 'c')
assert a[0 - 2] == 'b'
assert a[-1] == 'c'
assert ((1, 2), (3, 4)) == ((1, 2), (3, 4))
assert repr((1, 2)) == '(1, 2)'
assert str((1, 2)) == '(1, 2)'
assert (1, 2) + (3, 4) == (1, 2, 3, 4)
assert () + (1, 2) == (1, 2)
assert (1, 2) + () == (1, 2)
assert () + () == ()
assert ('a', 'b') + ('c',) == ('a', 'b', 'c')
assert ((1, 2),) + ((3, 4),) == ((1, 2), (3, 4))
assert (1, 2) * 3 == (1, 2, 1, 2, 1, 2)
assert 3 * (1, 2) == (1, 2, 1, 2, 1, 2)
assert (1,) * 0 == ()
assert (1,) * -1 == ()
assert () * 5 == ()
assert () * (2**30) == ()
assert (2**30) * () == ()
assert (1, 2) * 1 == (1, 2)
t = ([1],)
try:
t[0] += [2]
assert False, 'tuple item augmented assignment should fail'
except TypeError as e:
assert e.args == ("'tuple' object does not support item assignment",)
assert t == ([1, 2],)
assert tuple() == ()
assert tuple([1, 2, 3]) == (1, 2, 3)
assert tuple((1, 2, 3)) == (1, 2, 3)
assert tuple(range(3)) == (0, 1, 2)
assert tuple('abc') == ('a', 'b', 'c')
assert tuple(b'abc') == (97, 98, 99)
assert tuple({'a': 1, 'b': 2}) == ('a', 'b')
assert tuple('héllo') == ('h', 'é', 'l', 'l', 'o')
assert tuple('日本') == ('日', '本')
assert tuple('a🎉b') == ('a', '🎉', 'b')
a = (1, 2)
b = (3, 4)
assert (*a,) == (1, 2)
assert (*a, *b) == (1, 2, 3, 4)
assert (0, *a, 5) == (0, 1, 2, 5)
assert (*(),) == ()
assert (*[1, 2],) == (1, 2)
assert (1, 2) < (1, 3)
assert (1,) < (2,)
assert () < (1,)
assert (1, 2) < (1, 2, 3)
assert not (1, 2) < (1, 2), 'not lt when equal'
assert not (1, 3) < (1, 2), 'not lt when greater'
assert (1, 3) > (1, 2)
assert (2,) > (1,)
assert (1,) > ()
assert (1, 2, 3) > (1, 2)
assert not (1, 2) > (1, 2), 'not gt when equal'
assert (1, 2) <= (1, 2)
assert (1, 2) <= (1, 3)
assert not (1, 3) <= (1, 2), 'not le when greater'
assert (1, 2) >= (1, 2)
assert (1, 3) >= (1, 2)
assert not (1, 2) >= (1, 3), 'not ge when less'
assert sorted([(2, 'b'), (1, 'a')]) == [(1, 'a'), (2, 'b')]
assert sorted([(1, 'b'), (1, 'a')]) == [(1, 'a'), (1, 'b')]
assert sorted([(3,), (1,), (2,)]) == [(1,), (2,), (3,)]
assert ((1, 2), 3) < ((1, 3), 2)
assert (1, (2, 3)) < (1, (2, 4))
assert not (1, None) < (1, None), 'equal None elements not lt'
assert (1, None) <= (1, None)
assert (1, None) >= (1, None)
assert not (1, None) > (1, None), 'equal None elements not gt'
assert (1, None) < (2, None)
assert (1, [1, 2]) <= (1, [1, 2])
assert (1,) < (2.0,)
assert (1.0,) < (2,)
assert (True,) < (2,)
assert (False,) < (True,)
assert (1, 'a') < (1, 'b')
assert ('a', 1) < ('b', 1)
assert not () < (), 'empty tuples not lt'
assert () <= ()
assert () >= ()
assert not () > (), 'empty tuples not gt'
assert repr(()) == '()'
assert repr((1,)) == '(1,)'
assert repr((1, 2)) == '(1, 2)'
assert repr((1, (2, 3))) == '(1, (2, 3))'
tu = (1, 'two', 3)
assert 1 in tu
assert 'two' in tu
assert 9 not in tu
assert () == ()
assert 2 in (1, (2, 3))[1]
assert True in (1, 2)
assert 1.0 in (1, 2)
assert (2, 3) in (1, (2, 3))
assert [2, 3] in (1, [2, 3])
assert None in (None,)
assert 1 not in ()