def test_to_string():
    lst = LinkedList()
    lst.insert("{c}")
    lst.insert("{b}")
    lst.insert("{a}")
    actual = lst.__str__()
    expected = "{a} -> {b} -> {c} -> None"
    assert actual == expected
def test_insert_before_first():
    lst = LinkedList()
    lst.insert("{c}")
    lst.insert("{b}")
    lst.insert("{a}")
    lst.insert_before("{a}", "{d}")
    actual = lst.__str__()
    expected = "{d} -> {a} -> {b} -> {c} -> None"
    assert actual == expected
def test_append():
    lst = LinkedList()
    lst.insert("a")
    lst.insert("c")
    lst.insert("f")
    lst.append("b")
    actual = lst.__str__()
    expected = "{f} -> {c} -> {a} -> {b} -> None"
    assert actual == expected
def test_insert_after_last():
    lst = LinkedList()
    lst.insert("{c}")
    lst.insert("{b}")
    lst.insert("{a}")
    lst.insert_after("{c}", "{d}")
    actual = lst.__str__()
    expected = "{a} -> {b} -> {c} -> {d} -> None"
    assert actual == expected
def test_append_multi():
    lst = LinkedList()
    lst.insert("{a}")
    lst.insert("{c}")
    lst.insert("{f}")
    lst.append("{b}")
    lst.append("{d}")
    lst.append("{e}")
    actual = lst.__str__()
    expected = "{f} -> {c} -> {a} -> {b} -> {d} -> {e} -> None"
    assert actual == expected