Word Wrap Test
by Matthew Day
HTML
<!--
Inspect the Console to see if the tests pass.
-->
JavaScript
'use strict'
function wordWrap(input, maxLen) {
if(input === null) {
console.log(input);
return input;
} else if(input === "") {
console.log('""');
return "";
} else if(input.length < maxLen + 1) {
console.log("short");
return "short";
} else {
let temp = [];
while(input.length > maxLen) {
let char = input.substring(0, maxLen + 1).lastIndexOf(' ');
char = char <= 0 ? maxLen + 1 : char;
temp.push(input.substring( 0, char) );
let count = input.indexOf(' ', char) + 1;
if(count < char || count > char + 1) {
count = char;
}
input = input.substring(count);
}
temp.push(input);
console.log(temp.join("\n"));
return temp.join("\n");
}
}
const equalInputs = [
["Null", null, null],
["Empty", "", ""],
["Short", "short", "short"],
["Clean", "This wraps at 10", "This wraps\nat 10"],
["Hard", "This is badly written and hard to wrap", "This is\nbadly\nwritten\nand hard\nto wrap"],
];
equalInputs.forEach(function(input) {
let caseName = input[0];
let theInput = input[1];
let expected = input[2];
let actual = wordWrap(theInput, 10);
if (actual !== expected) {
console.log("--Failed case " + caseName + ", expected:");
console.log(expected);
console.log("--But got:");
console.log(actual);
console.log("\n\n");
} else {
console.log(`The ${caseName} test has passed.\n - - - - - - \n`)
}
});