Tweak to Levenshtein costs to prefer ins/del to sub/sub.
[string-lerp.git] / tests / string-lerp.js
index 5728e7f..7cee7d1 100644 (file)
@@ -114,6 +114,22 @@ JS.Test.describe('diff lerp', function () { with (this) {
             assert(r === "a" || r === UNUSUAL_Q);
         }
     }});
+
+    it("prefers ins/del to sub/sub", function () { with (this) {
+        // When the cost is uniform this string can be transformed by
+        // rewriting the whole thing for the same cost as deleting the
+        // front and adding to the back. But visually, we'd rather do
+        // the latter.
+        assertEqual("core", lerp("hard core", "core dump", 0.50));
+    }});
+
+    it("weights ins/del cheaper than sub", function () { with (this) {
+        // When the cost is uniform it is cheaper to rewrite the
+        // former into the latter. But we'd rather keep the "core" for
+        // visual reasons, so we need to make sure we have unequal
+        // costs.
+        assertEqual("core", lerp("apple core", "core dump", 0.51));
+    }});
 }});
 
 JS.Test.describe('numeric lerp', function () { with (this) {