diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 000000000..b58b603fe
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,5 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/KOANS 2.iml b/.idea/KOANS 2.iml
new file mode 100644
index 000000000..0c8867d7e
--- /dev/null
+++ b/.idea/KOANS 2.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 000000000..c6ab3e230
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 000000000..419decb5f
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/koans/AboutApplyingWhatWeHaveLearnt.js b/koans/AboutApplyingWhatWeHaveLearnt.js
index eccc93763..9a691ec86 100644
--- a/koans/AboutApplyingWhatWeHaveLearnt.js
+++ b/koans/AboutApplyingWhatWeHaveLearnt.js
@@ -32,16 +32,22 @@ describe("About Applying What We Have Learnt", function() {
}
}
- expect(productsICanEat.length).toBe(FILL_ME_IN);
+ expect(productsICanEat.length).toBe(1);
});
it("given I'm allergic to nuts and hate mushrooms, it should find a pizza I can eat (functional)", function () {
- var productsICanEat = [];
-
+ var productsICanEat = _(products).chain()
+ .filter(function (x) {
+ return !x.containsNuts;})
+ .reject(function(x){
+ return _(x.ingredients).any(function(y){
+ return y === "mushrooms";
+ });
+ })
+ .value();
/* solve using filter() & all() / any() */
-
- expect(productsICanEat.length).toBe(FILL_ME_IN);
+ expect(productsICanEat.length).toBe(1);
});
/*********************************************************************************/
@@ -55,14 +61,20 @@ describe("About Applying What We Have Learnt", function() {
}
}
- expect(sum).toBe(FILL_ME_IN);
+ expect(sum).toBe(233168);
});
it("should add all the natural numbers below 1000 that are multiples of 3 or 5 (functional)", function () {
- var sum = FILL_ME_IN; /* try chaining range() and reduce() */
- expect(233168).toBe(FILL_ME_IN);
+ var sum = _.range(0,1000).reduce(function (sum, x) {
+ if (x % 3 === 0 || x % 5 === 0) {
+ sum += x;
+ }
+ return sum;
+ },0); /* try chaining range() and reduce() */
+
+ expect(233168).toBe(sum);
});
/*********************************************************************************/
@@ -75,15 +87,19 @@ describe("About Applying What We Have Learnt", function() {
}
}
- expect(ingredientCount['mushrooms']).toBe(FILL_ME_IN);
+ expect(ingredientCount['mushrooms']).toBe(2);
});
it("should count the ingredient occurrence (functional)", function () {
var ingredientCount = { "{ingredient name}": 0 };
-
- /* chain() together map(), flatten() and reduce() */
-
- expect(ingredientCount['mushrooms']).toBe(FILL_ME_IN);
+ _(products).chain().map(function(value){
+ return value.ingredients;
+ }).flatten().reduce(function(number, name){
+ return ingredientCount[name] = (ingredientCount[name] || 0) + 1;
+ },0);
+ /* chain() together map(), flatten() and reduce() */
+
+ expect(ingredientCount['mushrooms']).toBe(2);
});
/*********************************************************************************/
diff --git a/koans/AboutArrays.js b/koans/AboutArrays.js
index f9b33f8cc..170491411 100644
--- a/koans/AboutArrays.js
+++ b/koans/AboutArrays.js
@@ -3,16 +3,16 @@ 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)).toBe('object'); //A mistake? - http://javascript.crockford.com/remedial.html
+ expect(emptyArray.length).toBe(0);
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]).toBe(0);
+ expect(multiTypeArray[2]).toBe("two");
+ expect(multiTypeArray[3]()).toBe(3);
+ expect(multiTypeArray[4].value1).toBe(4);
+ expect(multiTypeArray[4]["value2"]).toBe(5);
+ expect(multiTypeArray[5][0]).toBe(6);
});
it("should understand array literals", function () {
@@ -23,36 +23,36 @@ describe("About Arrays", function() {
expect(array).toEqual([1]);
array[1] = 2;
- expect(array).toEqual([1, FILL_ME_IN]);
+ expect(array).toEqual([1, 2]);
array.push(3);
- expect(array).toEqual(FILL_ME_IN);
+ expect(array).toEqual([1, 2, 3]);
});
it("should understand array length", function () {
var fourNumberArray = [1, 2, 3, 4];
- expect(fourNumberArray.length).toBe(FILL_ME_IN);
+ expect(fourNumberArray.length).toBe(4);
fourNumberArray.push(5, 6);
- expect(fourNumberArray.length).toBe(FILL_ME_IN);
+ expect(fourNumberArray.length).toBe(6);
var tenEmptyElementArray = new Array(10);
- expect(tenEmptyElementArray.length).toBe(FILL_ME_IN);
+ expect(tenEmptyElementArray.length).toBe(10);
tenEmptyElementArray.length = 5;
- expect(tenEmptyElementArray.length).toBe(FILL_ME_IN);
+ expect(tenEmptyElementArray.length).toBe(5);
});
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)).toEqual(['peanut']);
+ expect(array.slice(0, 2)).toEqual(['peanut', 'butter']);
+ expect(array.slice(2, 2)).toEqual([]);
+ expect(array.slice(2, 20)).toEqual(["and", "jelly"]);
+ expect(array.slice(3, 0)).toEqual([]);
+ expect(array.slice(3, 100)).toEqual(["jelly"]);
+ expect(array.slice(5, 1)).toEqual([]);
});
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]).toBe("changed in function");
var assignedArray = array;
assignedArray[5] = "changed in assignedArray";
- expect(array[5]).toBe(FILL_ME_IN);
+ expect(array[5]).toBe("changed in assignedArray");
var copyOfArray = array.slice();
copyOfArray[3] = "changed in copyOfArray";
- expect(array[3]).toBe(FILL_ME_IN);
+ expect(array[3]).toBe("three");
});
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..3735d9628 100644
--- a/koans/AboutExpects.js
+++ b/koans/AboutExpects.js
@@ -4,12 +4,12 @@ describe('About Expects', function() {
it('should expect true', function() {
// Your journey begins here: Replace the word false with true
- expect(false).toBeTruthy();
+ expect(true).toBeTruthy();
});
// To understand reality, we must compare our expectations against reality.
it('should expect equality', function() {
- var expectedValue = FILL_ME_IN;
+ var expectedValue = 2;
var actualValue = 1 + 1;
expect(actualValue === expectedValue).toBeTruthy();
@@ -17,7 +17,7 @@ describe('About Expects', function() {
// Some ways of asserting equality are better than others.
it('should assert equality a better way', function() {
- var expectedValue = FILL_ME_IN;
+ var expectedValue = 2;
var actualValue = 1 + 1;
// toEqual() compares using common sense equality.
@@ -26,7 +26,7 @@ describe('About Expects', function() {
// Sometimes you need to be precise about what you "type."
it('should assert equality with ===', function() {
- var expectedValue = FILL_ME_IN;
+ var expectedValue = '2';
var actualValue = (1 + 1).toString();
// toBe() will always use === to compare.
@@ -35,6 +35,6 @@ describe('About Expects', function() {
// 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).toEqual(2);
});
});
diff --git a/koans/AboutFunctions.js b/koans/AboutFunctions.js
index 569100806..b78545f0b 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/AboutHigherOrderFunctions.js b/koans/AboutHigherOrderFunctions.js
index 07c416792..ef755fb0e 100644
--- a/koans/AboutHigherOrderFunctions.js
+++ b/koans/AboutHigherOrderFunctions.js
@@ -11,17 +11,17 @@ describe("About Higher Order Functions", function () {
var numbers = [1,2,3];
var odd = _(numbers).filter(function (x) { return x % 2 !== 0 });
- expect(odd).toEqual(FILL_ME_IN);
- expect(odd.length).toBe(FILL_ME_IN);
- expect(numbers.length).toBe(FILL_ME_IN);
+ expect(odd).toEqual([1 ,3]);
+ expect(odd.length).toBe(2);
+ expect(numbers.length).toBe(3);
});
it("should use 'map' to transform each element", function () {
var numbers = [1, 2, 3];
var numbersPlus1 = _(numbers).map(function(x) { return x + 1 });
- expect(numbersPlus1).toEqual(FILL_ME_IN);
- expect(numbers).toEqual(FILL_ME_IN);
+ expect(numbersPlus1).toEqual([2, 3, 4]);
+ expect(numbers).toEqual([1, 2, 3]);
});
it("should use 'reduce' to update the same result on each iteration", function () {
@@ -29,8 +29,8 @@ describe("About Higher Order Functions", function () {
var reduction = _(numbers).reduce(
function(/* result from last call */ memo, /* current */ x) { return memo + x }, /* initial */ 0);
- expect(reduction).toBe(FILL_ME_IN);
- expect(numbers).toEqual(FILL_ME_IN);
+ expect(reduction).toBe(6);
+ expect(numbers).toEqual([1, 2, 3]);
});
it("should use 'forEach' for simple iteration", function () {
@@ -42,8 +42,8 @@ describe("About Higher Order Functions", function () {
_(numbers).forEach(isEven);
- expect(msg).toEqual(FILL_ME_IN);
- expect(numbers).toEqual(FILL_ME_IN);
+ expect(msg).toEqual("falsetruefalse");
+ expect(numbers).toEqual([1,2,3]);
});
it("should use 'all' to test whether all items pass condition", function () {
@@ -52,8 +52,8 @@ describe("About Higher Order Functions", function () {
var isEven = function(x) { return x % 2 === 0 };
- expect(_(onlyEven).all(isEven)).toBe(FILL_ME_IN);
- expect(_(mixedBag).all(isEven)).toBe(FILL_ME_IN);
+ expect(_(onlyEven).all(isEven)).toBe(true);
+ expect(_(mixedBag).all(isEven)).toBe(false);
});
it("should use 'any' to test if any items passes condition" , function () {
@@ -62,18 +62,18 @@ describe("About Higher Order Functions", function () {
var isEven = function(x) { return x % 2 === 0 };
- expect(_(onlyEven).any(isEven)).toBe(FILL_ME_IN);
- expect(_(mixedBag).any(isEven)).toBe(FILL_ME_IN);
+ expect(_(onlyEven).any(isEven)).toBe(true);
+ expect(_(mixedBag).any(isEven)).toBe(true);
});
it("should use range to generate an array", function() {
- expect(_.range(3)).toEqual(FILL_ME_IN);
- expect(_.range(1, 4)).toEqual(FILL_ME_IN);
- expect(_.range(0, -4, -1)).toEqual(FILL_ME_IN);
+ expect(_.range(3)).toEqual([0, 1, 2]);
+ expect(_.range(1, 4)).toEqual([1, 2, 3]);
+ expect(_.range(0, -4, -1)).toEqual([ 0, -1, -2 , -3]);
});
it("should use flatten to make nested arrays easy to work with", function() {
- expect(_([ [1, 2], [3, 4] ]).flatten()).toEqual(FILL_ME_IN);
+ expect(_([ [1, 2], [3, 4] ]).flatten()).toEqual([1,2,3,4]);
});
it("should use chain() ... .value() to use multiple higher order functions", function() {
@@ -83,7 +83,7 @@ describe("About Higher Order Functions", function () {
.reduce(function (sum, x) { return sum + x })
.value();
- expect(result).toEqual(FILL_ME_IN);
+ expect(result).toEqual(6);
});
});
diff --git a/koans/AboutInheritance.js b/koans/AboutInheritance.js
index 5dba545b0..f8520989c 100644
--- a/koans/AboutInheritance.js
+++ b/koans/AboutInheritance.js
@@ -25,20 +25,20 @@ describe("About inheritance", function() {
});
it("should be able to call a method on the derived object", function() {
- expect(this.swedishChef.cook()).toEqual(FILL_ME_IN);
+ expect(this.swedishChef.cook()).toEqual("Mmmm soup!");
});
it("should be able to call a method on the base object", function() {
- expect(this.swedishChef.answerNanny()).toEqual(FILL_ME_IN);
+ expect(this.swedishChef.answerNanny()).toEqual("Everything's cool!");
});
it("should set constructor parameters on the base object", function() {
- expect(this.swedishChef.age).toEqual(FILL_ME_IN);
- expect(this.swedishChef.hobby).toEqual(FILL_ME_IN);
+ expect(this.swedishChef.age).toEqual(2);
+ expect(this.swedishChef.hobby).toEqual("cooking");
});
it("should set constructor parameters on the derived object", function() {
- expect(this.swedishChef.mood).toEqual(FILL_ME_IN);
+ expect(this.swedishChef.mood).toEqual("chillin");
});
});
@@ -67,19 +67,19 @@ describe("About Crockford's inheritance improvement", function() {
});
it("should be able to call a method on the derived object", function() {
- expect(this.gonzo.doTrick()).toEqual(FILL_ME_IN);
+ expect(this.gonzo.doTrick()).toEqual("eat a tire");
});
it("should be able to call a method on the base object", function() {
- expect(this.gonzo.answerNanny()).toEqual(FILL_ME_IN);
+ expect(this.gonzo.answerNanny()).toEqual("Everything's cool!");
});
it("should set constructor parameters on the base object", function() {
- expect(this.gonzo.age).toEqual(FILL_ME_IN);
- expect(this.gonzo.hobby).toEqual(FILL_ME_IN);
+ expect(this.gonzo.age).toEqual(3);
+ expect(this.gonzo.hobby).toEqual("daredevil performer");
});
it("should set constructor parameters on the derived object", function() {
- expect(this.gonzo.trick).toEqual(FILL_ME_IN);
+ expect(this.gonzo.trick).toEqual("eat a tire");
});
});
diff --git a/koans/AboutMutability.js b/koans/AboutMutability.js
index fd9b69af2..e8b5a5307 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..c5f77897e 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(2022-1970);
});
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");
});
});