Index: frontend/node_modules/damerau-levenshtein/test/test.js
===================================================================
--- frontend/node_modules/damerau-levenshtein/test/test.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
+++ frontend/node_modules/damerau-levenshtein/test/test.js	(revision 9af201e94b5a79beb92a30858fc54de4bc3b9449)
@@ -0,0 +1,168 @@
+var levenshtien = require("./../index");
+
+var assert = require("assert");
+
+describe("Damerau - Levenshtein", function() {
+  describe("Equality", function() {
+    it("returns 0 steps for equal strings", function() {
+      assert.deepEqual(levenshtien("test", "test"), {
+        steps: 0,
+        relative: 0,
+        similarity: 1
+      });
+    });
+  });
+
+  describe("Additions", function() {
+    it("returns 1 step when appending one char", function() {
+      assert.deepEqual(levenshtien("test", "tests"), {
+        steps: 1,
+        relative: 1 / 5,
+        similarity: 1 - 1 / 5
+      });
+    });
+
+    it("returns 1 step when prepending one char", function() {
+      assert.deepEqual(levenshtien("test", "stest"), {
+        steps: 1,
+        relative: 1 / 5,
+        similarity: 1 - 1 / 5
+      });
+    });
+
+    it("returns 2 steps when appending two char", function() {
+      assert.deepEqual(levenshtien("test", "mytest"), {
+        steps: 2,
+        relative: 2 / 6,
+        similarity: 1 - 2 / 6
+      });
+    });
+
+    it("returns 7 steps when appending seven char", function() {
+      assert.deepEqual(levenshtien("test", "mycrazytest"), {
+        steps: 7,
+        relative: 7 / 11,
+        similarity: 1 - 7 / 11
+      });
+    });
+
+    it("returns 9 steps when prepend two chars and append seven chars", function() {
+      assert.deepEqual(levenshtien("test", "mytestiscrazy"), {
+        steps: 9,
+        relative: 9 / 13,
+        similarity: 1 - 9 / 13
+      });
+    });
+  });
+
+
+  describe("Addition of repeated chars", function() {
+    it("returns 1 step when repeating a character", function() {
+      assert.deepEqual(levenshtien("test", "teest"), {
+        steps: 1,
+        relative: 1 / 5,
+        similarity: 1 - 1 / 5
+      });
+    });
+
+    it("returns 2 step when repeating a character twice", function() {
+      assert.deepEqual(levenshtien("test", "teeest"), {
+        steps: 2,
+        relative: 2 / 6,
+        similarity: 1 - 2 / 6
+      });
+    });
+  });
+
+
+  describe("#Deletion", function() {
+    it("returns 1 step when removing one char", function() {
+      assert.deepEqual(levenshtien("test", "tst"), {
+        steps: 1,
+        relative: 1 / 4,
+        similarity: 1 - 1 / 4
+      });
+    });
+  });
+
+
+  describe("Transposition", function() {
+    it("returns 1 step when transposing one char", function() {
+      assert.deepEqual(levenshtien("test", "tset"), {
+        steps: 1,
+        relative: 1 / 4,
+        similarity: 1 - 1 / 4
+      });
+    });
+  });
+
+
+  describe("Addition with transposition", function() {
+    it("returns 2 step when transposing one char and append another", function() {
+      assert.deepEqual(levenshtien("test", "tsets"), {
+        steps: 2,
+        relative: 2 / 5,
+        similarity: 1 - 2 / 5
+      });
+    });
+    it("returns 2 step when transposing a char and repeating it", function() {
+      assert.deepEqual(levenshtien("test", "tsset"), {
+        steps: 2,
+        relative: 2 / 5,
+        similarity: 1 - 2 / 5
+      });
+    });
+  });
+
+  describe("Transposition of multiple chars", function() {
+    it("returns 1 step when transposing two neighbouring characters", function() {
+      assert.deepEqual(levenshtien("banana", "banaan"), {
+        steps: 1,
+        relative: 1 / 6,
+        similarity: 1 - 1 / 6
+      });
+    });
+
+    it("returns 2 step when transposing two neighbouring characters by two places", function() {
+      assert.deepEqual(levenshtien("banana", "nabana"), {
+        steps: 2,
+        relative: 2 / 6,
+        similarity: 1 - 2 / 6
+      });
+    });
+
+    it("returns 2 step when transposing two pairs of characters", function() {
+      assert.deepEqual(levenshtien("banana", "abnaan"), {
+        steps: 2,
+        relative: 2 / 6,
+        similarity: 1 - 2 / 6
+      });
+    });
+  });
+
+  describe("Empty strings", function() {
+    it("returns 0 step and 0 relative when both are empty", function() {
+      assert.deepEqual(levenshtien("", ""), {
+        steps: 0,
+        relative: 0,
+        similarity: 1
+      });
+    });
+
+    it("returns steps equal to first string lenght when second string is empty", function() {
+      assert.deepEqual(levenshtien("test", ""), {
+        steps: 4,
+        relative: 4 / 4,
+        similarity: 0
+      });
+    });
+
+    it("returns steps equal to second string lenght when first string is empty", function() {
+      assert.deepEqual(levenshtien("", "test"), {
+        steps: 4,
+        relative: 1,
+        similarity: 0
+      });
+    });
+  });
+});
