1# test set binary operations 2 3sets = [set(), {1}, {1, 2}, {1, 2, 3}, {2, 3}, {2, 3, 5}, {5}, {7}] 4for s in sets: 5 for t in sets: 6 print(sorted(s), '|', sorted(t), '=', sorted(s | t)) 7 print(sorted(s), '^', sorted(t), '=', sorted(s ^ t)) 8 print(sorted(s), '&', sorted(t), '=', sorted(s & t)) 9 print(sorted(s), '-', sorted(t), '=', sorted(s - t)) 10 u = s.copy() 11 u |= t 12 print(sorted(s), "|=", sorted(t), '-->', sorted(u)) 13 u = s.copy() 14 u ^= t 15 print(sorted(s), "^=", sorted(t), '-->', sorted(u)) 16 u = s.copy() 17 u &= t 18 print(sorted(s), "&=", sorted(t), "-->", sorted(u)) 19 u = s.copy() 20 u -= t 21 print(sorted(s), "-=", sorted(t), "-->", sorted(u)) 22 23 print(sorted(s), '==', sorted(t), '=', s == t) 24 print(sorted(s), '!=', sorted(t), '=', s != t) 25 print(sorted(s), '>', sorted(t), '=', s > t) 26 print(sorted(s), '>=', sorted(t), '=', s >= t) 27 print(sorted(s), '<', sorted(t), '=', s < t) 28 print(sorted(s), '<=', sorted(t), '=', s <= t) 29 30print(set('abc') == 1) 31 32# make sure inplace operators modify the set 33 34s1 = s2 = set('abc') 35s1 |= set('ad') 36print(s1 is s2, len(s1)) 37 38s1 = s2 = set('abc') 39s1 ^= set('ad') 40print(s1 is s2, len(s1)) 41 42s1 = s2 = set('abc') 43s1 &= set('ad') 44print(s1 is s2, len(s1)) 45 46s1 = s2 = set('abc') 47s1 -= set('ad') 48print(s1 is s2, len(s1)) 49 50# RHS must be a set 51try: 52 print(set('12') >= '1') 53except TypeError: 54 print('TypeError') 55 56# RHS must be a set 57try: 58 print(set('12') <= '123') 59except TypeError: 60 print('TypeError') 61 62# unsupported operator 63try: 64 set('abc') * set('abc') 65except TypeError: 66 print('TypeError') 67 68# unsupported operator with RHS not a set 69try: 70 set('abc') * 2 71except TypeError: 72 print('TypeError') 73