Skip to content

Instantly share code, notes, and snippets.

@tvolk131
Created September 5, 2017 16:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tvolk131/af6aeccf3e82e57ec002bf09aea8197a to your computer and use it in GitHub Desktop.
Save tvolk131/af6aeccf3e82e57ec002bf09aea8197a to your computer and use it in GitHub Desktop.
let isVowel = (letter) => {
return (letter === 'a' || letter === 'e' || letter === 'i' || letter === 'o' || letter === 'u' || letter === 'A' || letter === 'E' || letter === 'I' || letter === 'O' || letter === 'U');
};
let vowelDoubler = (letters) => {
for (let i = 0; i < letters.length; i++) {
if (isVowel(letters[i])) {
letters.splice(i, 0, letters[i]);
i++;
}
}
return letters;
};
class TestSuite {
constructor () {
this.passed = 0;
this.failed = 0;
}
test (val1, val2, name) {
if (JSON.stringify(val1) === JSON.stringify(val2)) {
this.passed++;
} else {
this.failed++;
console.error('Failed: ' + name + ', expected ' + JSON.stringify(val1) + ' to equal ' + JSON.stringify(val2));
}
}
report () {
console.log('Passed ' + this.passed + ' tests');
console.log('Failed ' + this.failed + ' tests');
}
run () {
this.test(vowelDoubler(['a', 'b', 'c', 'd', 'e']), ['a', 'a', 'b', 'c', 'd', 'e', 'e']);
this.test(vowelDoubler(['a', 'a', 'b', 'e', 'o']), ['a', 'a', 'a', 'a', 'b', 'e', 'e', 'o', 'o']);
this.test(vowelDoubler(['u']), ['u', 'u']);
this.test(vowelDoubler(['b', 'y', 'w', 'l', 's']), ['b', 'y', 'w', 'l', 's']);
this.report();
}
}
new TestSuite().run();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment