       assert 5 == DL.distance("testing", "", 4)
     end
 
+    test "arbitrary differences taken from other test suites" do
+      assert 4 == DL.distance("Toralf", "Titan")
+      assert 8 == DL.distance("rosettacode", "raisethysword")
+      assert 3 == DL.distance("Saturday", "Sunday") # 2 deletions, 1 substitution
+      assert 3 == DL.distance("kitten", "sitting") # 2 substitutions, 1 insertion
+      # dna, anyone?
+      # I just realized that the movie title "Gattaca" only uses DNA letters. ::slaps forehead::
+      assert 4 == DL.distance("ACGTTGACCATGAGTCCAG", "ACGTGTACCCTGGTACCAG")
+    end
+
+    # Optimal string alignment distance special cases:
+    # see http://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance
+    # Damerau-Levenshtein("CA", "ABC") is CA -> AC -> ABC == 2 steps, 1 transpose and 1 insert
+    # test "optimal string distance" do
+    #   # this one is tough! is it necessary? Commented out for now
+    #   assert 2 == DL.distance("CA", "ABC")
+    # end
+
     test "d-l equivalence" do
       assert DL.equivalent?("Peter", "Petter", 1)
       refute DL.equivalent?("Peter", "Pesterer", 2)

  if both heads are the same, advance both
  """
  def distance(<<equal_char::utf8, candidate_tail::binary>>, <<equal_char::utf8, target_tail::binary>>, max_cost, current_cost) do
    distance(candidate_tail, target_tail, max_cost, current_cost)
  end


  ran out of characters on second string, add remaining first string length as cost
  """
  def distance(candidate, "", max_cost, current_cost) do
    # IO.puts "Second string empty, remaining on first string: #{candidate}"
    distance("", "", max_cost, current_cost + String.length(candidate))
  end

