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`)
    }
});