Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nodejs/node.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/node_modules/fastest-levenshtein/test.js')
-rw-r--r--deps/npm/node_modules/fastest-levenshtein/test.js64
1 files changed, 64 insertions, 0 deletions
diff --git a/deps/npm/node_modules/fastest-levenshtein/test.js b/deps/npm/node_modules/fastest-levenshtein/test.js
new file mode 100644
index 00000000000..4b5d6ecae65
--- /dev/null
+++ b/deps/npm/node_modules/fastest-levenshtein/test.js
@@ -0,0 +1,64 @@
+const {distance, closest} = require("./index.js");
+
+const levenshtein = (a, b) => {
+ if (a.length === 0) return b.length;
+ if (b.length === 0) return a.length;
+
+ if (a.length > b.length) {
+ const tmp = a;
+ a = b;
+ b = tmp;
+ }
+
+ const row = [];
+ for (let i = 0; i <= a.length; i++) {
+ row[i] = i;
+ }
+
+ for (let i = 1; i <= b.length; i++) {
+ let prev = i;
+ for (let j = 1; j <= a.length; j++) {
+ let val;
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
+ val = row[j - 1];
+ } else {
+ val = Math.min(row[j - 1] + 1, prev + 1, row[j] + 1);
+ }
+ row[j - 1] = prev;
+ prev = val;
+ }
+ row[a.length] = prev;
+ }
+
+ return row[a.length];
+};
+
+function makeid(length) {
+ let result = "";
+ const characters =
+ "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+ const charactersLength = characters.length;
+ for (let i = 0; i < length; i++) {
+ result += characters.charAt(Math.floor(Math.random() * charactersLength));
+ }
+ return result;
+}
+
+test("test compare", () => {
+ const errors = 0;
+ for (let i = 0; i < 1000; i++) {
+ const rnd_num1 = (Math.random() * 1000) | 0;
+ const rnd_num2 = (Math.random() * 1000) | 0;
+ const rnd_string1 = makeid(rnd_num1);
+ const rnd_string2 = makeid(rnd_num2);
+ const actual = distance(rnd_string1, rnd_string2);
+ const expected = levenshtein(rnd_string1, rnd_string2);
+ expect(actual).toBe(expected);
+ }
+});
+
+test("test find", () => {
+ const actual = closest("fast", ["slow", "faster", "fastest"]);
+ const expected = "faster";
+ expect(actual).toBe(expected);
+});