@qooxdoo/framework
Version:
The JS Framework for Coders
79 lines (60 loc) • 2.17 kB
JavaScript
/* ************************************************************************
qooxdoo - the new era of web development
http://qooxdoo.org
Copyright:
2007-2008 1&1 Internet AG, Germany, http://www.1und1.de
License:
MIT: https://opensource.org/licenses/MIT
See the LICENSE file in the project's top-level directory for details.
Authors:
* Fabian Jakobs (fjakobs)
************************************************************************ */
qx.Class.define("qx.test.EditDistance", {
extend: qx.dev.unit.TestCase,
members: {
assertTransform(strA, strB) {
var arrA = qx.lang.String.toArray(strA);
var arrB = qx.lang.String.toArray(strB);
var job;
var operations = qx.util.EditDistance.getEditOperations(arrA, arrB);
for (var i = 0, l = operations.length; i < l; i++) {
job = operations[i];
switch (job.operation) {
case qx.util.EditDistance.OPERATION_DELETE:
qx.lang.Array.removeAt(arrA, job.pos);
break;
case qx.util.EditDistance.OPERATION_REPLACE:
arrA[job.pos] = job.value;
break;
case qx.util.EditDistance.OPERATION_INSERT:
qx.lang.Array.insertAt(arrA, job.value, job.pos);
break;
default:
throw new Error("Invalid operation: " + job.operation);
}
}
var result = arrA.join("");
if (result !== strB) {
throw new Error(
"Implementation could not transform: " +
strA +
" to " +
strB +
"! Result was: " +
result
);
}
// this.debug("Successfully transformed: " + strA + " to " + strB + ".");
},
testBasics() {
this.assertTransform("hello world", "hallo welt");
this.assertTransform("abcdef", "abdcef");
this.assertTransform("abcdef", "fedcba");
this.assertTransform("abcdef", "abc");
this.assertTransform("abcdef", "def");
this.assertTransform("abcdef", "bcef");
this.assertTransform("abcdef", "abcghi");
this.assertTransform("abcdef", "abcstudef");
}
}
});