       ],
       {:eq, "]"}
     ]
+
     assert script(keyword1, keyword2) == expected
 
     keyword1 = [file: "nofile", line: 1]
     keyword2 = [file: nil, line: 1]
+
     expected = [
       {:eq, "["},
       [

    expected = [{:eq, "["}, [[eq: "1"], [eq: ", ", eq: "2"], [del: " | 3"]], {:eq, "]"}]
    assert script([1, 2 | 3], [1, 2]) == expected

    expected = [{:eq, "["}, [[eq: "1"], [del: ",", ins: " |", eq: " ", del: "\"a\"", ins: "\"b\""]], {:eq, "]"}]
    assert script([1, "a"], [1 | "b"]) == expected
    expected = [{:eq, "["}, [[eq: "1"], [del: " |", ins: ",", eq: " ", del: "\"b\"", ins: "\"a\""]], {:eq, "]"}]
    assert script([1 | "b"], [1, "a"]) == expected

    expected = [{:eq, "["}, [[eq: "1"], [eq: " | ", del: "2", ins: "3"]], {:eq, "]"}]
    assert script([1 | 2], [1 | 3]) == expected

    expected = [{:eq, "["}, [[eq: "1"], [eq: ", ", del: "'b'", ins: "'a'"], [eq: " | ", eq: "3"]], {:eq, "]"}]
    assert script([1, 'b' | 3], [1, 'a' | 3]) == expected
    expected = [{:eq, "["}, [[del: "'a'", ins: "'b'"], [eq: ", ", eq: "2"], [eq: " | ", eq: "3"]], {:eq, "]"}]
    assert script(['a', 2 | 3], ['b', 2 | 3]) == expected
  end

  test "tuples" do
    tuple1 = {:hex, '1.1'}
    tuple2 = {:hex, '0.1', [{:ex_doc}]}
    expected = [
      {:eq, "{"},
      [[eq: ":hex"], [{:eq, ", "}, {:eq, "'"}, [del: "1", ins: "0", eq: ".1"], {:eq, "'"}],[ins: ", ", ins: "[{:ex_doc}]"]],
      {:eq, "}"}
    ]
    assert script(tuple1, tuple2) == expected
    assert script(tuple1, {}) == [{:eq, "{"}, [[del: ":hex"], [del: ", ", del: "'1.1'"]], {:eq, "}"}]
    assert script({}, tuple1) == [{:eq, "{"}, [[ins: ":hex"], [ins: ", ", ins: "'1.1'"]], {:eq, "}"}]

    assert script({}, {}) == [eq: "{}"]
  end

  test "charlists" do
    charlist1 = 'fox hops over \'the dog'
    charlist2 = 'fox jumps over the lazy cat'

    expected = [
      {:eq, "'"},
      [
        eq: "fox ",
        del: "ho",
        ins: "jum",
        eq: "ps over ",
        del: "\\'",
        eq: "the ",
        del: "dog",
        ins: "lazy cat"
      ],
      {:eq, "'"}
    ]

    assert script(charlist1, charlist2) == expected
  end

  test "keyword lists" do
    keyword1 = [file: "nofile", line: 1]
    keyword2 = [file: nil, lime: 1]

    expected = [
      {:eq, "["},
      [
        [{:eq, "file: "}, [del: "\"nofile\"", ins: "nil"]],
        {:eq, ", "},
        {:del, "line: 1"},
        {:ins, "lime: 1"}
      ],
      {:eq, "]"}
    ]

    assert script(keyword1, keyword2) == expected

    keyword1 = [file: nil, line: 1]
    keyword2 = [file: "nofile"]

    expected = [
      {:eq, "["},
      [
