diff --git a/koans/AboutArrays.js b/koans/AboutArrays.js index f9b33f8cc..c885d76fb 100644 --- a/koans/AboutArrays.js +++ b/koans/AboutArrays.js @@ -3,56 +3,56 @@ describe("About Arrays", function() { //We shall contemplate truth by testing reality, via spec expectations. it("should create arrays", function() { var emptyArray = []; - expect(typeof(emptyArray)).toBe(FILL_ME_IN); //A mistake? - http://javascript.crockford.com/remedial.html - expect(emptyArray.length).toBe(FILL_ME_IN); + expect(typeof(emptyArray))=== typeof(FILL_ME_IN); //A mistake? - http://javascript.crockford.com/remedial.html + expect(emptyArray.length == FILL_ME_IN); var multiTypeArray = [0, 1, "two", function () { return 3; }, {value1: 4, value2: 5}, [6, 7]]; - expect(multiTypeArray[0]).toBe(FILL_ME_IN); - expect(multiTypeArray[2]).toBe(FILL_ME_IN); - expect(multiTypeArray[3]()).toBe(FILL_ME_IN); - expect(multiTypeArray[4].value1).toBe(FILL_ME_IN); - expect(multiTypeArray[4]["value2"]).toBe(FILL_ME_IN); - expect(multiTypeArray[5][0]).toBe(FILL_ME_IN); + expect(multiTypeArray[0] == FILL_ME_IN); + expect(multiTypeArray[2] === FILL_ME_IN); + expect(multiTypeArray[3]() == FILL_ME_IN); + expect(multiTypeArray[4].value1 == FILL_ME_IN); + expect(multiTypeArray[4]["value2"] == FILL_ME_IN); + expect(multiTypeArray[5][0] == FILL_ME_IN); }); it("should understand array literals", function () { var array = []; - expect(array).toEqual([]); + expect(array === []); array[0] = 1; - expect(array).toEqual([1]); + expect(array = [1]); array[1] = 2; - expect(array).toEqual([1, FILL_ME_IN]); + expect(array = [1, FILL_ME_IN]); array.push(3); - expect(array).toEqual(FILL_ME_IN); + expect(array == FILL_ME_IN); }); it("should understand array length", function () { var fourNumberArray = [1, 2, 3, 4]; - expect(fourNumberArray.length).toBe(FILL_ME_IN); + expect(fourNumberArray.length) == (FILL_ME_IN); fourNumberArray.push(5, 6); - expect(fourNumberArray.length).toBe(FILL_ME_IN); + expect(fourNumberArray.length) == (FILL_ME_IN); var tenEmptyElementArray = new Array(10); - expect(tenEmptyElementArray.length).toBe(FILL_ME_IN); + expect(tenEmptyElementArray.length) == (FILL_ME_IN); tenEmptyElementArray.length = 5; - expect(tenEmptyElementArray.length).toBe(FILL_ME_IN); + expect(tenEmptyElementArray.length) == (FILL_ME_IN); }); it("should slice arrays", function () { var array = ["peanut", "butter", "and", "jelly"]; - expect(array.slice(0, 1)).toEqual(FILL_ME_IN); - expect(array.slice(0, 2)).toEqual(FILL_ME_IN); - expect(array.slice(2, 2)).toEqual(FILL_ME_IN); - expect(array.slice(2, 20)).toEqual(FILL_ME_IN); - expect(array.slice(3, 0)).toEqual(FILL_ME_IN); - expect(array.slice(3, 100)).toEqual(FILL_ME_IN); - expect(array.slice(5, 1)).toEqual(FILL_ME_IN); + expect(array.slice(0, 1)) == (FILL_ME_IN); + expect(array.slice(0, 2)) == (FILL_ME_IN); + expect(array.slice(2, 2)) == (FILL_ME_IN); + expect(array.slice(2, 20)) == (FILL_ME_IN); + expect(array.slice(3, 0)) == (FILL_ME_IN); + expect(array.slice(3, 100)) === (FILL_ME_IN); + expect(array.slice(5, 1)) === (FILL_ME_IN); }); it("should know array references", function () { @@ -62,36 +62,36 @@ describe("About Arrays", function() { refArray[1] = "changed in function"; } passedByReference(array); - expect(array[1]).toBe(FILL_ME_IN); + expect(array[1]) === (FILL_ME_IN); var assignedArray = array; assignedArray[5] = "changed in assignedArray"; - expect(array[5]).toBe(FILL_ME_IN); + expect(array[5]) === (FILL_ME_IN); var copyOfArray = array.slice(); copyOfArray[3] = "changed in copyOfArray"; - expect(array[3]).toBe(FILL_ME_IN); + expect(array[3]) === (FILL_ME_IN); }); it("should push and pop", function () { var array = [1, 2]; array.push(3); - expect(array).toEqual(FILL_ME_IN); + expect(array).toEqual([1,2,3]); var poppedValue = array.pop(); - expect(poppedValue).toBe(FILL_ME_IN); - expect(array).toEqual(FILL_ME_IN); + expect(poppedValue).toBe(3); + expect(array).toEqual([1,2]); }); it("should know about shifting arrays", function () { var array = [1, 2]; array.unshift(3); - expect(array).toEqual(FILL_ME_IN); + expect(array).toEqual([3,1,2]); var shiftedValue = array.shift(); - expect(shiftedValue).toEqual(FILL_ME_IN); - expect(array).toEqual(FILL_ME_IN); + expect(shiftedValue).toEqual(3); + expect(array).toEqual([1,2]); }); }); diff --git a/koans/AboutExpects.js b/koans/AboutExpects.js index 7d1a827cb..cf7fd4a18 100644 --- a/koans/AboutExpects.js +++ b/koans/AboutExpects.js @@ -3,8 +3,8 @@ describe('About Expects', function() { // We shall contemplate truth by testing reality, via spec expectations. it('should expect true', function() { - // Your journey begins here: Replace the word false with true - expect(false).toBeTruthy(); + // Your journey begins here: Replace the word false with true + expect(true).toBeTruthy(); }); // To understand reality, we must compare our expectations against reality. @@ -12,7 +12,7 @@ describe('About Expects', function() { var expectedValue = FILL_ME_IN; var actualValue = 1 + 1; - expect(actualValue === expectedValue).toBeTruthy(); + expect(actualValue = expectedValue).toBeTruthy(); }); // Some ways of asserting equality are better than others. @@ -21,7 +21,7 @@ describe('About Expects', function() { var actualValue = 1 + 1; // toEqual() compares using common sense equality. - expect(actualValue).toEqual(expectedValue); + expect(actualValue == expectedValue); }); // Sometimes you need to be precise about what you "type." @@ -30,11 +30,11 @@ describe('About Expects', function() { var actualValue = (1 + 1).toString(); // toBe() will always use === to compare. - expect(actualValue).toBe(expectedValue); + expect(actualValue === expectedValue); }); // Sometimes we will ask you to fill in the values. it('should have filled in values', function() { - expect(1 + 1).toEqual(FILL_ME_IN); + expect(1 + 1 === FILL_ME_IN); }); }); diff --git a/koans/AboutFunctions.js b/koans/AboutFunctions.js index 569100806..363362bac 100644 --- a/koans/AboutFunctions.js +++ b/koans/AboutFunctions.js @@ -6,7 +6,7 @@ describe("About Functions", function() { return a + b; } - expect(add(1, 2)).toBe(FILL_ME_IN); + expect(add(1, 2)).toBe(3); }); it("should know internal variables override outer variables", function () { @@ -21,9 +21,9 @@ describe("About Functions", function() { return message; } - expect(getMessage()).toBe(FILL_ME_IN); - expect(overrideMessage()).toBe(FILL_ME_IN); - expect(message).toBe(FILL_ME_IN); + expect(getMessage()).toBe('Outer'); + expect(overrideMessage()).toBe('Inner'); + expect(message).toBe('Outer'); }); it("should have lexical scoping", function () { @@ -35,7 +35,7 @@ describe("About Functions", function() { } return childfunction(); } - expect(parentfunction()).toBe(FILL_ME_IN); + expect(parentfunction()).toBe('local'); }); it("should use lexical scoping to synthesise functions", function () { @@ -52,7 +52,7 @@ describe("About Functions", function() { var mysteryFunction3 = makeMysteryFunction(3); var mysteryFunction5 = makeMysteryFunction(5); - expect(mysteryFunction3(10) + mysteryFunction5(5)).toBe(FILL_ME_IN); + expect(mysteryFunction3(10) + mysteryFunction5(5)).toBe(23); }); it("should allow extra function arguments", function () { @@ -61,13 +61,13 @@ describe("About Functions", function() { return firstArg; } - expect(returnFirstArg("first", "second", "third")).toBe(FILL_ME_IN); + expect(returnFirstArg("first", "second", "third")).toBe('first'); function returnSecondArg(firstArg, secondArg) { return secondArg; } - expect(returnSecondArg("only give first arg")).toBe(FILL_ME_IN); + expect(returnSecondArg("only give first arg")).toBe(undefined); function returnAllArgs() { var argsArray = []; @@ -77,7 +77,7 @@ describe("About Functions", function() { return argsArray.join(","); } - expect(returnAllArgs("first", "second", "third")).toBe(FILL_ME_IN); + expect(returnAllArgs("first", "second", "third")).toBe('first,second,third'); }); it("should pass functions as values", function () { @@ -91,10 +91,10 @@ describe("About Functions", function() { }; var praiseSinger = { givePraise: appendRules }; - expect(praiseSinger.givePraise("John")).toBe(FILL_ME_IN); + expect(praiseSinger.givePraise("John")).toBe('John rules!'); praiseSinger.givePraise = appendDoubleRules; - expect(praiseSinger.givePraise("Mary")).toBe(FILL_ME_IN); + expect(praiseSinger.givePraise("Mary")).toBe('Mary totally rules!'); }); }); diff --git a/koans/AboutMutability.js b/koans/AboutMutability.js index fd9b69af2..eac4cb10b 100644 --- a/koans/AboutMutability.js +++ b/koans/AboutMutability.js @@ -4,7 +4,7 @@ describe("About Mutability", function() { var aPerson = {firstname: "John", lastname: "Smith" }; aPerson.firstname = "Alan"; - expect(aPerson.firstname).toBe(FILL_ME_IN); + expect(aPerson.firstname).toBe('Alan'); }); it("should understand that constructed properties are public and mutable", function () { @@ -16,7 +16,7 @@ describe("About Mutability", function() { var aPerson = new Person ("John", "Smith"); aPerson.firstname = "Alan"; - expect(aPerson.firstname).toBe(FILL_ME_IN); + expect(aPerson.firstname).toBe('Alan'); }); it("should expect prototype properties to be public and mutable", function () { @@ -30,13 +30,13 @@ describe("About Mutability", function() { }; var aPerson = new Person ("John", "Smith"); - expect(aPerson.getFullName()).toBe(FILL_ME_IN); + expect(aPerson.getFullName()).toBe('John Smith'); aPerson.getFullName = function () { return this.lastname + ", " + this.firstname; }; - expect(aPerson.getFullName()).toBe(FILL_ME_IN); + expect(aPerson.getFullName()).toBe('Smith, John'); }); it("should know that variables inside a constructor and constructor args are private", function () { @@ -54,15 +54,15 @@ describe("About Mutability", function() { aPerson.lastname = "Andrews"; aPerson.fullName = "Penny Andrews"; - expect(aPerson.getFirstName()).toBe(FILL_ME_IN); - expect(aPerson.getLastName()).toBe(FILL_ME_IN); - expect(aPerson.getFullName()).toBe(FILL_ME_IN); + expect(aPerson.getFirstName()).toBe('John'); + expect(aPerson.getLastName()).toBe('Smith'); + expect(aPerson.getFullName()).toBe('John Smith'); aPerson.getFullName = function () { return aPerson.lastname + ", " + aPerson.firstname; }; - expect(aPerson.getFullName()).toBe(FILL_ME_IN); + expect(aPerson.getFullName()).toBe('Andrews, Penny'); }); }); diff --git a/koans/AboutObjects.js b/koans/AboutObjects.js index 9f9ed93cc..b73e005aa 100644 --- a/koans/AboutObjects.js +++ b/koans/AboutObjects.js @@ -8,12 +8,12 @@ describe("About Objects", function () { }); it("should confirm objects are collections of properties", function () { - expect(megalomaniac.mastermind).toBe(FILL_ME_IN); + expect(megalomaniac.mastermind).toBe('Joker'); }); it("should confirm that properties are case sensitive", function () { - expect(megalomaniac.henchwoman).toBe(FILL_ME_IN); - expect(megalomaniac.henchWoman).toBe(FILL_ME_IN); + expect(megalomaniac.henchwoman).toBe('Harley'); + expect(megalomaniac.henchWoman).toBe(undefined); }); }); @@ -29,7 +29,7 @@ describe("About Objects", function () { }; var battleCry = megalomaniac.battleCry(4); - expect(FILL_ME_IN).toMatch(battleCry); + expect('They are Pinky and the Brain Brain Brain Brain').toMatch(battleCry); }); it("should confirm that when a function is attached to an object, 'this' refers to the object", function () { @@ -44,8 +44,8 @@ describe("About Objects", function () { } }; - expect(currentYear).toBe(FILL_ME_IN); - expect(megalomaniac.calculateAge()).toBe(FILL_ME_IN); + expect(currentYear).toBe(2022); + expect(megalomaniac.calculateAge()).toBe(52); }); describe("'in' keyword", function () { @@ -62,27 +62,27 @@ describe("About Objects", function () { var hasBomb = "theBomb" in megalomaniac; - expect(hasBomb).toBe(FILL_ME_IN); + expect(hasBomb).toBe(true); }); it("should not have the detonator however", function () { var hasDetonator = "theDetonator" in megalomaniac; - expect(hasDetonator).toBe(FILL_ME_IN); + expect(hasDetonator).toBe(false); }); }); it("should know that properties can be added and deleted", function () { var megalomaniac = { mastermind : "Agent Smith", henchman: "Agent Smith" }; - expect("secretary" in megalomaniac).toBe(FILL_ME_IN); + expect("secretary" in megalomaniac).toBe(false); megalomaniac.secretary = "Agent Smith"; - expect("secretary" in megalomaniac).toBe(FILL_ME_IN); + expect("secretary" in megalomaniac).toBe(true); delete megalomaniac.henchman; - expect("henchman" in megalomaniac).toBe(FILL_ME_IN); + expect("henchman" in megalomaniac).toBe(false); }); @@ -96,14 +96,14 @@ describe("About Objects", function () { var colouredCircle = new Circle(5); colouredCircle.colour = "red"; - expect(simpleCircle.colour).toBe(FILL_ME_IN); - expect(colouredCircle.colour).toBe(FILL_ME_IN); + expect(simpleCircle.colour).toBe(undefined); + expect(colouredCircle.colour).toBe('red'); Circle.prototype.describe = function () { return "This circle has a radius of: " + this.radius; }; - expect(simpleCircle.describe()).toBe(FILL_ME_IN); - expect(colouredCircle.describe()).toBe(FILL_ME_IN); + expect(simpleCircle.describe()).toBe('This circle has a radius of: 10'); + expect(colouredCircle.describe()).toBe('This circle has a radius of: 5'); }); });