Skip to content

Commit b51e25c

Browse files
committed
Refactor tests to reduce repepitive code improve readability
1 parent 2feba68 commit b51e25c

File tree

1 file changed

+35
-27
lines changed

1 file changed

+35
-27
lines changed

JavaScript/chapter01/1.5 - OneAway/rroque98_sol.js

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,38 @@ const isOneAway = (str1, str2) => {
3535
return true;
3636
};
3737

38-
// TESTS
39-
console.log(isOneAway('pale', 'ple') === true); // deletion
40-
console.log(isOneAway('pale', 'opale') === true); // insertion in beginning
41-
console.log(isOneAway('pale', 'palse') === true); // insertion in middle
42-
console.log(isOneAway('pale', 'pales') === true); // insertion at end
43-
console.log(isOneAway('pale', 'bale') === true); // replacement
44-
console.log(isOneAway('pale', 'ae') === false); // greater than 1 deletions
45-
console.log(isOneAway('pale', 'ppalpe') === false); // greater than 1 insertions
46-
console.log(isOneAway('pale', 'bake') === false); // greater than 1 replacements
47-
console.log(isOneAway('pale', 'balpe') === false); // 1 insertion, 1 replacement
48-
console.log(isOneAway('pale', 'plo') === false); // 1 deletion, 1 replacement
49-
console.log(isOneAway('pale', 'ales') === false); // 1 deletion, 1 insertion
50-
// swap str1 with str2
51-
console.log(isOneAway('ple', 'pale') === true); // deletion
52-
console.log(isOneAway('opale', 'pale') === true); // insertion in beginning
53-
console.log(isOneAway('palse', 'pale') === true); // insertion in middle
54-
console.log(isOneAway('pales', 'pale') === true); // insertion at end
55-
console.log(isOneAway('bale', 'pale') === true); // replacement
56-
console.log(isOneAway('ae', 'pale') === false); // greater than 1 deletions
57-
console.log(isOneAway('ppalpe', 'pale') === false); // greater than 1 insertions
58-
console.log(isOneAway('bake', 'pale') === false); // greater than 1 replacements
59-
console.log(isOneAway('balpe', 'pale') === false); // 1 insertion, 1 replacement
60-
console.log(isOneAway('plo', 'pale') === false); // 1 deletion, 1 replacement
61-
console.log(isOneAway('ales', 'pale') === false); // 1 deletion, 1 insertion
62-
console.log(isOneAway('p', 'b') === true);
63-
console.log(isOneAway('', '') === true);
64-
console.log(isOneAway('p', 'p') === true);
38+
// ****** TESTS ******
39+
function runTests(cases, expected) {
40+
for (const [str1, str2] of cases) {
41+
console.log(
42+
isOneAway(str1, str2) === expected && isOneAway(str2, str1) === expected
43+
);
44+
}
45+
}
46+
47+
runTests(
48+
[
49+
['pale', 'ple'], // deletion
50+
['pale', 'opale'], // insertion in beginning
51+
['pale', 'palse'], // insertion in middle
52+
['pale', 'pales'], // insertion at end
53+
['pale', 'bale'], // replacement
54+
['p', 'b'],
55+
['p', 'p'],
56+
['p', ''],
57+
['', '']
58+
],
59+
true
60+
);
61+
62+
runTests(
63+
[
64+
['pale', 'ae'], // greater than 1 deletions
65+
['pale', 'ppalpe'], // greater than 1 insertions
66+
['pale', 'bake'], // greater than 1 replacements
67+
['pale', 'balpe'], // 1 insertion, 1 replacement
68+
['pale', 'plo'], // 1 deletion, 1 replacement
69+
['pale', 'ales'] // 1 deletion, 1 insertion
70+
],
71+
false
72+
);

0 commit comments

Comments
 (0)