@@ -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