MOL - Test 2

by Charlie Vaughan

HTML

<script src="https://searls.github.io/jasmine-all/jasmine-all-min.js"></script>

CSS

body { background-color: #eeeeee; padding: 0; margin: 5px; overflow-y: scroll; }

#HTMLReporter { font-size: 11px; font-family: Monaco, "Lucida Console", monospace; line-height: 14px; color: #333333; }
#HTMLReporter a { text-decoration: none; }
#HTMLReporter a:hover { text-decoration: underline; }
#HTMLReporter p, #HTMLReporter h1, #HTMLReporter h2, #HTMLReporter h3, #HTMLReporter h4, #HTMLReporter h5, #HTMLReporter h6 { margin: 0; line-height: 14px; }
#HTMLReporter .banner, #HTMLReporter .symbolSummary, #HTMLReporter .summary, #HTMLReporter .resultMessage, #HTMLReporter .specDetail .description, #HTMLReporter .alert .bar, #HTMLReporter .stackTrace { padding-left: 9px; padding-right: 9px; }
#HTMLReporter #jasmine_content { position: fixed; right: 100%; }
#HTMLReporter .version { color: #aaaaaa; }
#HTMLReporter .banner { margin-top: 14px; }
#HTMLReporter .duration { color: #aaaaaa; float: right; }
#HTMLReporter .symbolSummary { overflow: hidden; *zoom: 1; margin: 14px 0; }
#HTMLReporter .symbolSummary li { display: block; float: left; height: 7px; width: 14px; margin-bottom: 7px; font-size: 16px; }
#HTMLReporter .symbolSummary li.passed { font-size: 14px; }
#HTMLReporter .symbolSummary li.passed:before { color: #5e7d00; content: "\02022"; }
#HTMLReporter .symbolSummary li.failed { line-height: 9px; }
#HTMLReporter .symbolSummary li.failed:before { color: #b03911; content: "x"; font-weight: bold; margin-left: -1px; }
#HTMLReporter .symbolSummary li.skipped { font-size: 14px; }
#HTMLReporter .symbolSummary li.skipped:before { color: #bababa; content: "\02022"; }
#HTMLReporter .symbolSummary li.pending { line-height: 11px; }
#HTMLReporter .symbolSummary li.pending:before { color: #aaaaaa; content: "-"; }
#HTMLReporter .exceptions { color: #fff; float: right; margin-top: 5px; margin-right: 5px; }
#HTMLReporter .bar { line-height: 28px; font-size: 14px; display: block; color: #eee; }
#HTMLReporter .runningAlert { background-color: #666666; }
#HTMLReporter .skippedAlert...

JavaScript

//--- CODE --------------------------
var string = 'f'; // Cache string

function f(value) {

	// Will append variable to string if value is a string
	if (typeof value === 'string') {
    value = string + value;
    // Reset cached string 
    string = 'f';
    // Return completed string 
    return value;
    
	// Appends 'o' to string where no value passed to function
  } else if (value === undefined) {
    string = string + 'o';
    return false;
  }
}

//--- SPECS -------------------------

/*
	It didn't look to me like the original tests would ever pass as I've never seen anyone daisy chain
  the functions in this way. The test syntax is returning an error.
  
  Maybe refactoring the tests so that they are more granular and robust is part of the test?
*/

describe("f", function() {
  it("should return fl", function() {
    expect(f("l")).toEqual("fl");
    // And so on such that the number of calls continues
    // to increase the number of letter "o" in the string
    // until the function is called with a string.
  });
});

describe("f", function() {
  it("should return fol", function() {
  	f();
    expect(f("l")).toEqual("fol");
  });
});

describe("f", function() {
  it("should return fool", function() {
  	f();
    f();
    expect(f("l")).toEqual("fool");
  });
});

describe("f", function() {
  it("should return foot", function() {
  	f();
    f();
    expect(f("t")).toEqual("foot");
  });
});

describe("f", function() {
  it("should return foooool", function() {
  	f();
    f();
    f();
    f();
    f();
    expect(f("l")).toEqual("foooool");
  });
});