def test_new_set_methods(a, b):
    assert (len(a) == 1)
    assert (len(((a | b) * 4)) == 16)
    try:
        len(a.star())
        assert False
    except OverflowError:
        pass
    assert ('a' in a)
    assert (not ('a' in b))
    assert ('a' not in b)
    four = ((a | b) * 2)
    for string in four:
        assert (string == ['a', 'a'])
        break
    assert ([s for s in four] == [['a', 'a'], ['a', 'b'], ['b', 'a'], ['b', 'b']])
    assert (fsm.union(a, b) == a.union(b))
    assert (len(fsm.union()) == 0)
    assert (fsm.intersection(a, b) == a.intersection(b))
    int_none = fsm.intersection()
    assert (len(int_none) == 1)
    assert ([] in int_none)
    assert ((a | b).difference(a) == fsm.difference((a | b), a) == ((a | b) - a) == b)
    assert ((a | b).difference(a, b) == fsm.difference((a | b), a, b) == (((a | b) - a) - b) == null('ab'))
    assert (a.symmetric_difference(b) == fsm.symmetric_difference(a, b) == (a ^ b))
    assert a.isdisjoint(b)
    assert (a <= (a | b))
    assert (a < (a | b))
    assert (a != (a | b))
    assert ((a | b) > a)
    assert ((a | b) >= a)
    assert (list(a.concatenate(a, a).strings()) == [['a', 'a', 'a']])
    assert (list(a.concatenate().strings()) == [['a']])
    assert (list(fsm.concatenate(b, a, b).strings()) == [['b', 'a', 'b']])
    assert (list(fsm.concatenate().strings()) == [])
    assert (not (a.copy() is a))
def test_new_set_methods(a, b):
    assert (len(a) == 1)
    assert (len(((a | b) * 4)) == 16)
    try:
        len(a.star())
        assert False
    except OverflowError:
        pass
    assert ('a' in a)
    assert (not ('a' in b))
    assert ('a' not in b)
    four = ((a | b) * 2)
    for string in four:
        assert (string == ['a', 'a'])
        break
    assert ([s for s in four] == [['a', 'a'], ['a', 'b'], ['b', 'a'], ['b', 'b']])
    assert (fsm.union(a, b) == a.union(b))
    assert (len(fsm.union()) == 0)
    assert (fsm.intersection(a, b) == a.intersection(b))
    int_none = fsm.intersection()
    assert (len(int_none) == 1)
    assert ([] in int_none)
    assert ((a | b).difference(a) == fsm.difference((a | b), a) == ((a | b) - a) == b)
    assert ((a | b).difference(a, b) == fsm.difference((a | b), a, b) == (((a | b) - a) - b) == null('ab'))
    assert (a.symmetric_difference(b) == fsm.symmetric_difference(a, b) == (a ^ b))
    assert a.isdisjoint(b)
    assert (a <= (a | b))
    assert (a < (a | b))
    assert (a != (a | b))
    assert ((a | b) > a)
    assert ((a | b) >= a)
    assert (list(a.concatenate(a, a).strings()) == [['a', 'a', 'a']])
    assert (list(a.concatenate().strings()) == [['a']])
    assert (list(fsm.concatenate(b, a, b).strings()) == [['b', 'a', 'b']])
    assert (list(fsm.concatenate().strings()) == [])
    assert (not (a.copy() is a))