def test_add_remove_mixed(filled_set):
    assert 0 == filled_set.remove(1)
    assert filled_set[0] == 2
    assert filled_set == OrderedSet(2, 3, 4, 5, 6)
    assert 4 == filled_set.remove(6)
    assert filled_set == OrderedSet(2, 3, 4, 5)
    assert 4 == filled_set.add(7)
    assert filled_set == OrderedSet(2, 3, 4, 5, 7)
def test_equality():
    s, s2 = OrderedSet(), OrderedSet()

    s.update(1, 2, 3, 4, 5, 6, 7)
    s2.update(1, 2, 3, 4, 5, 6, 7)

    assert s == s2
    s2.remove(1)
    s2.add(1)
    assert not s == s2
def test_len(filled_set):
    s = OrderedSet()
    s.add(1)
    s.add(1)
    s.add(1)
    s.add(2)
    s.add(3)
    s.remove(1)
    assert len(s) == 2
    assert len(filled_set) == 6
def test_remove(filled_set):
    filled_set.update(1, 2, 3, 4, 5, "str")
    filled_set.remove_all(4, 6)
    print(filled_set)
    assert filled_set == OrderedSet(1, 2, 3, 5, "str")
    with pytest.raises(ValueError):
        filled_set.remove(-1)
def test_add_unhashable():
    with pytest.raises(TypeError):
        OrderedSet().add([])
def test_uniqueness(filled_set):
    filled_set.update(1, 2, 3, 4, 5, 6, 1, 1, 1, 55)
    filled_set.remove(6)
    assert filled_set == OrderedSet(1, 2, 3, 4, 5, 55)
def test_index_access():
    s = OrderedSet()
    s.update(1, 2, 3, 4, 5, 6, 7)
    assert s[4] == s[-3] == 5
def test_len2():
    s = OrderedSet()
    s.update(1, 2, 1, 1, 1, 1, 3)
    assert len(s) == 3
def test_len(filled_set):
    s = OrderedSet(1, 3)
    assert len(s) == 2
    assert len(filled_set) == 6
def test_remove_first(filled_set):
    assert 0 == filled_set.remove(1)
    assert filled_set[0] == 2
    assert filled_set == OrderedSet(2, 3, 4, 5, 6)
def filled_set():
    return OrderedSet(1, 2, 3, 4, 5, 6)
def test_drain_reversed(filled_set):
    e = OrderedSet()
    for item in filled_set.drain(reverse=True):
        e.add(item)
    assert filled_set.is_empty()
    assert str(e) == "OrderedSet(6, 5, 4, 3, 2, 1)"
def test_drain2(filled_set):
    e = OrderedSet()
    for item in filled_set.drain():
        e.add(item)
    assert filled_set.is_empty()
    assert str(e) == "OrderedSet(1, 2, 3, 4, 5, 6)"