@@ -35,30 +35,38 @@ const isOneAway = (str1, str2) => {
35
35
return true ;
36
36
} ;
37
37
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