diff --git a/topics/about_arrays.js b/topics/about_arrays.js index 3d4cd41f..37569509 100644 --- a/topics/about_arrays.js +++ b/topics/about_arrays.js @@ -2,25 +2,25 @@ module("About Arrays (topics/about_arrays.js)"); test("array literal syntax and indexing", function() { var favouriteThings = ["cellar door", 42, true]; // note that array elements do not have to be of the same type - equal(__, favouriteThings[0], 'what is in the first position of the array?'); - equal(__, favouriteThings[1], 'what is in the second position of the array?'); - equal(__, favouriteThings[2], 'what is in the third position of the array?'); + equal("cellar door", favouriteThings[0], 'what is in the first position of the array?'); + equal(42, favouriteThings[1], 'what is in the second position of the array?'); + equal(true, favouriteThings[2], 'what is in the third position of the array?'); }); test("array type", function() { - equal(__, typeof([]), 'what is the type of an array?'); + equal("object", typeof([]), 'what is the type of an array?'); }); test("length", function() { var collection = ['a','b','c']; - equal(__, collection.length, 'what is the length of the collection array?'); + equal(3, collection.length, 'what is the length of the collection array?'); }); test("splice", function() { var daysOfWeek = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']; - var workingWeek = daysOfWeek.splice(__, __); - ok(workingWeek.equalTo([__]), 'what is the value of workingWeek?'); - ok(daysOfWeek.equalTo([__]), 'what is the value of daysOfWeek?'); + var workingWeek = daysOfWeek.splice(0, 5); + ok(workingWeek.equalTo(['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']), 'what is the value of workingWeek?'); + ok(daysOfWeek.equalTo(['Saturday', 'Sunday']), 'what is the value of daysOfWeek?'); }); test("stack methods", function() { @@ -28,8 +28,8 @@ test("stack methods", function() { stack.push("first"); stack.push("second"); - equal(__, stack.pop(), 'what will be the first value popped off the stack?'); - equal(__, stack.pop(), 'what will be the second value popped off the stack?'); + equal("second", stack.pop(), 'what will be the first value popped off the stack?'); + equal("first", stack.pop(), 'what will be the second value popped off the stack?'); }); test("queue methods", function() { @@ -38,6 +38,6 @@ test("queue methods", function() { queue.push("second"); queue.unshift("third"); - equal(__, queue.shift(), 'what will be shifted out first?'); - equal(__, queue.shift(), 'what will be shifted out second?'); + equal("third", queue.shift(), 'what will be shifted out first?'); + equal("first", queue.shift(), 'what will be shifted out second?'); }); diff --git a/topics/about_asserts.js b/topics/about_asserts.js index baf7fc75..a2146770 100644 --- a/topics/about_asserts.js +++ b/topics/about_asserts.js @@ -2,13 +2,13 @@ module("About Asserts (topics/about_asserts.js)"); test("ok", function() { - ok(__ === true, 'what will satisfy the ok assertion?'); + ok(true === true, 'what will satisfy the ok assertion?'); }); test("not ok", function() { - ok(__ === false, 'what is a false value?'); + ok(false === false, 'what is a false value?'); }); test("equal", function() { - equal(__, 1 + 1, 'what will satisfy the equal assertion?'); + equal(2, 1 + 1, 'what will satisfy the equal assertion?'); }); diff --git a/topics/about_assignment.js b/topics/about_assignment.js index 4532861e..cba47c77 100644 --- a/topics/about_assignment.js +++ b/topics/about_assignment.js @@ -2,11 +2,11 @@ module("About Assignment (topics/about_assignment.js)"); test("local variables", function() { - var temp = __; + var temp = 1; equal(temp, 1, "Assign a value to the variable temp"); }); test("global variables", function() { temp = 1; // Not using var is an example. Always use var in practise. - equal(window.__, temp, 'global variables are assigned to the window object'); + equal(window.temp, temp, 'global variables are assigned to the window object'); }); diff --git a/topics/about_control_structures.js b/topics/about_control_structures.js index aca1623b..592d752e 100644 --- a/topics/about_control_structures.js +++ b/topics/about_control_structures.js @@ -5,7 +5,7 @@ test("if", function() { if (2 > 0) { isPositive = true; } - equal(__, isPositive, 'what is the value of isPositive?'); + equal(true, isPositive, 'what is the value of isPositive?'); }); test("for", function() { @@ -13,7 +13,7 @@ test("for", function() { for (var i = 1; i <= 3; i++) { counter = counter + i; } - equal(__, counter, 'what is the value of counter?'); + equal(16, counter, 'what is the value of counter?'); }); test("for in", function() { @@ -27,15 +27,15 @@ test("for in", function() { for (var property_name in person) { result = result + property_name; } - equal(__, result, 'what is the value of result?'); + equal("nameage", result, 'what is the value of result?'); }); test("ternary operator", function() { var fruit = true ? "apple" : "orange"; - equal(__, fruit, 'what is the value of fruit?'); + equal("apple", fruit, 'what is the value of fruit?'); fruit = false ? "apple" : "orange"; - equal(__, fruit, 'now what is the value of fruit?'); + equal("orange", fruit, 'now what is the value of fruit?'); }); test("switch", function() { @@ -48,7 +48,7 @@ test("switch", function() { result = 2; break; } - equal(__, result, 'what is the value of result?'); + equal(2, result, 'what is the value of result?'); }); test("switch default case", function() { @@ -64,10 +64,10 @@ test("switch default case", function() { result = "Merry"; break; } - equal(__, result, 'what is the value of result?'); + equal("Merry", result, 'what is the value of result?'); }); test("null coalescing", function() { var result = null || "a value"; - equal(__, result, 'what is the value of result?'); + equal("a value", result, 'what is the value of result?'); }); diff --git a/topics/about_equality.js b/topics/about_equality.js index fe3e3d21..3976089c 100644 --- a/topics/about_equality.js +++ b/topics/about_equality.js @@ -2,22 +2,22 @@ module("About Equality (topics/about_equality.js)"); test("numeric equality", function() { - equal(3 + __, 7, ""); + equal(3 + 4, 7, ""); }); test("string equality", function() { - equal("3" + __, "37", "concatenate the strings"); + equal("3" + "7", "37", "concatenate the strings"); }); test("equality without type coercion", function() { - ok(3 === __, 'what is exactly equal to 3?'); + ok(3 === 3, 'what is exactly equal to 3?'); }); test("equality with type coercion", function() { - ok(3 == "__", 'what string is equal to 3, with type coercion?'); + ok(3 == "3", 'what string is equal to 3, with type coercion?'); }); test("string literals", function() { - equal(__, "frankenstein", "quote types are interchangable, but must match."); - equal(__, 'frankenstein', "quote types can use both single and double quotes."); + equal("frankenstein", "frankenstein", "quote types are interchangable, but must match."); + equal("frankenstein", 'frankenstein', "quote types can use both single and double quotes."); }); diff --git a/topics/about_functions_and_closure.js b/topics/about_functions_and_closure.js index d435c232..fc81547b 100644 --- a/topics/about_functions_and_closure.js +++ b/topics/about_functions_and_closure.js @@ -7,14 +7,14 @@ test("defining functions directly", function() { result = "b"; }; changeResult(); - equal(__, result, 'what is the value of result?'); + equal(b, result, 'what is the value of result?'); }); test("assigning functions to variables", function() { var triple = function(input) { return input * 3; }; - equal(__, triple(4), 'what is triple 4?'); + equal(12, triple(4), 'what is triple 4?'); }); test("self invoking functions", function() { @@ -23,23 +23,23 @@ test("self invoking functions", function() { // self invoking functions are used to provide scoping and to alias variables (function(pv) { var secretValue = "password"; - equal(__, pv, 'what is the value of pv?'); - equal("__", typeof(secretValue), "is secretValue available in this context?"); - equal("__", typeof(publicValue), "is publicValue available in this context?"); + equal("shared", pv, 'what is the value of pv?'); + equal("yes", typeof(secretValue), "is secretValue available in this context?"); + equal("yes", typeof(publicValue), "is publicValue available in this context?"); })(publicValue); - equal("__", typeof(secretValue), "is secretValue available in this context?"); - equal("__", typeof(publicValue), "is publicValue available in this context?"); + equal("no", typeof(secretValue), "is secretValue available in this context?"); + equal("yes", typeof(publicValue), "is publicValue available in this context?"); }); test("arguments array", function() { - var add = function() { + var add = function(x) { var total = 0; for(var i = 0; i < arguments.length; i++) { // complete the implementation of this method so that it returns the sum of its arguments - // __ + total += x[i]; } - // __ + return total; }; equal(15, add(1,2,3,4,5), "add 1,2,3,4,5"); @@ -48,28 +48,28 @@ test("arguments array", function() { test("using call to invoke function",function(){ var invokee = function( message ){ - return this + message; + return this + message; }; - - //another way to invoke a function is to use the call function which allows - //you to set the callers "this" context. Call can take any number of arguments: + + //another way to invoke a function is to use the call function which allows + //you to set the callers "this" context. Call can take any number of arguments: //the first one is always the context that this should be set to in the called //function, and the arguments to be sent to the function,multiple arguments are separated by commas. var result = invokee.call("I am this!", "Where did it come from?"); - + equal(__, result, "what will the value of invokee's this be?"); }); test("using apply to invoke function",function(){ var invokee = function( message1, message2 ){ - return this + message1 + message2; + return this + message1 + message2; }; - + //similar to the call function is the apply function. Apply only has two //arguments: the first is the context that this should be set to in the called //function and the second is the array of arguments to be passed into the called function. var result = invokee.apply("I am this!", ["I am arg1","I am arg2"]); - + equal(__, result, "what will the value of invokee's this be?"); }); diff --git a/topics/about_numbers.js b/topics/about_numbers.js index 1319acd8..52fd1adf 100644 --- a/topics/about_numbers.js +++ b/topics/about_numbers.js @@ -4,13 +4,13 @@ module("About Numbers (topics/about_numbers.js)"); test("types", function() { var typeOfIntegers = typeof(6); var typeOfFloats = typeof(3.14159); - equal(__, typeOfIntegers === typeOfFloats, 'are ints and floats the same type?'); - equal(__, typeOfIntegers, 'what is the javascript numeric type?'); - equal(__, 1.0, 'what is a integer number equivalent to 1.0?'); + equal(true, typeOfIntegers === typeOfFloats, 'are ints and floats the same type?'); + equal("number", typeOfIntegers, 'what is the javascript numeric type?'); + equal(1, 1.0, 'what is a integer number equivalent to 1.0?'); }); test("NaN", function() { var resultOfFailedOperations = 7/'apple'; - equal(__, isNaN(resultOfFailedOperations), 'what will satisfy the equals assertion?'); - equal(__, resultOfFailedOperations == NaN, 'is NaN == NaN?'); + equal(true, isNaN(resultOfFailedOperations), 'what will satisfy the equals assertion?'); + equal(false, resultOfFailedOperations == NaN, 'is NaN == NaN?'); }); diff --git a/topics/about_objects.js b/topics/about_objects.js index 24c03533..3ffc99b0 100644 --- a/topics/about_objects.js +++ b/topics/about_objects.js @@ -3,13 +3,13 @@ module("About Objects (topics/about_objects.js)"); test("object type", function() { var empty_object = {}; - equal(__, typeof(empty_object), 'what is the type of an object?'); + equal("object", typeof(empty_object), 'what is the type of an object?'); }); test("object literal notation", function() { var person = { - __:__, - __:__ + name: "Amory Blaine", + age: 102 }; equal("Amory Blaine", person.name, "what is the person's name?"); equal(102, person.age, "what is the person's age?"); @@ -17,16 +17,16 @@ test("object literal notation", function() { test("dynamically adding properties", function() { var person = {}; - person.__ = "Amory Blaine"; - person.__ = 102; + person.name = "Amory Blaine"; + person.age = 102; equal("Amory Blaine", person.name, "what is the person's name?"); equal(102, person.age, "what is the person's age?"); -}); +}); test("adding properties from strings", function() { var person = {}; - person["__"] = "Amory Blaine"; - person["__"] = 102; + person["name"] = "Amory Blaine"; + person["age"] = 102; equal("Amory Blaine", person.name, "what is the person's name?"); equal(102, person.age, "what is the person's age?"); }); @@ -36,7 +36,7 @@ test("adding functions", function() { name: "Amory Blaine", age: 102, toString: function() { - return __; // HINT: use the 'this' keyword to refer to the person object. + return "I " + this.name + " am " + this.age + " years old."; // HINT: use the 'this' keyword to refer to the person object. } }; equal("I Amory Blaine am 102 years old.", person.toString(), "what should the toString function be?"); diff --git a/topics/about_operators.js b/topics/about_operators.js index 9859900b..9d5ce763 100644 --- a/topics/about_operators.js +++ b/topics/about_operators.js @@ -7,7 +7,7 @@ test("addition", function() { for (var i = 0; i <= 5; i++) { result = result + i; } - equal(__, result, "What is the value of result?"); + equal(15, result, "What is the value of result?"); }); test("assignment addition", function() { @@ -16,7 +16,7 @@ test("assignment addition", function() { //the code below is just like saying result = result + i; but is more concise result += i; } - equal(__, result, "What is the value of result?"); + equal(15, result, "What is the value of result?"); }); test("subtraction", function() { @@ -24,7 +24,7 @@ test("subtraction", function() { for (var i = 0; i <= 2; i++) { result = result - i; } - equal(__, result, "What is the value of result?"); + equal(2, result, "What is the value of result?"); }); test("assignment subtraction", function() { @@ -32,7 +32,7 @@ test("assignment subtraction", function() { for (var i = 0; i <= 2; i++) { result -= i; } - equal(__, result, "What is the value of result?"); + equal(2, result, "What is the value of result?"); }); //Assignment operators are available for multiplication and division as well @@ -43,5 +43,5 @@ test("modulus", function() { var x = 5; //again this is exactly the same as result = result % x result %= x; - equal(__, result, "What is the value of result?"); + equal(0, result, "What is the value of result?"); }); diff --git a/topics/about_strings.js b/topics/about_strings.js index 18f9c68a..88a79031 100644 --- a/topics/about_strings.js +++ b/topics/about_strings.js @@ -4,31 +4,31 @@ module("About Strings (topics/about_strings.js)"); test("delimiters", function() { var singleQuotedString = 'apple'; var doubleQuotedString = "apple"; - equal(__, singleQuotedString === doubleQuotedString, 'are the two strings equal?'); + equal(true, singleQuotedString === doubleQuotedString, 'are the two strings equal?'); }); test("concatenation", function() { var fruit = "apple"; var dish = "pie"; - equal(__, fruit + " " + dish, 'what is the value of fruit + " " + dish?'); + equal("apple pie", fruit + " " + dish, 'what is the value of fruit + " " + dish?'); }); test("character Type", function() { var characterType = typeof("Amory".charAt(1)); // typeof will be explained in about reflection - equal(__, characterType, 'Javascript has no character type'); + equal("string", characterType, 'Javascript has no character type'); }); test("escape character", function() { var stringWithAnEscapedCharacter = "\u0041pple"; - equal(__, stringWithAnEscapedCharacter, 'what is the value of stringWithAnEscapedCharacter?'); + equal("Apple", stringWithAnEscapedCharacter, 'what is the value of stringWithAnEscapedCharacter?'); }); test("string.length", function() { var fruit = "apple"; - equal(__, fruit.length, 'what is the value of fruit.length?'); + equal(5, fruit.length, 'what is the value of fruit.length?'); }); test("slice", function() { var fruit = "apple pie"; - equal(__, fruit.slice(0,5), 'what is the value of fruit.slice(0,5)?'); + equal("apple", fruit.slice(0,5), 'what is the value of fruit.slice(0,5)?'); }); diff --git a/topics/about_this.js b/topics/about_this.js index 85185f04..7b356e7c 100644 --- a/topics/about_this.js +++ b/topics/about_this.js @@ -4,8 +4,8 @@ test("'this' inside a method", function () { var person = { name: 'bob', intro: function () { - return "Hello, my name is " + this.__; - } + return "Hello, my name is " + this.name; + } } equal(person.intro(), "Hello, my name is bob", "If an object has a method can you access properties inside it?"); }); @@ -15,14 +15,14 @@ test("'this' on unattached function", function () { globalName: 'bob', intro: function () { return "Hello, my name is " + this.globalName; - } + } } var alias = person.intro; - - // if the function is not called as an object property 'this' is the global context + + // if the function is not called as an object property 'this' is the global context // (window in a browser). This is an example. Please do not do this in practise. - window.__ = 'Peter'; + window.globalName = 'Peter'; equal(alias(), "Hello, my name is Peter", "What does 'this' refer to when it is not part of an object?"); }); @@ -31,11 +31,11 @@ test("'this' set explicitly", function () { name: 'bob', intro: function () { return "Hello, my name is " + this.name; - } + } } // calling a function with 'call' lets us assign 'this' explicitly - var message = person.intro.call({__: "Frank"}); + var message = person.intro.call({this.name: "Frank"}); equal(message, "Hello, my name is Frank", "What does 'this' refer to when you use the 'call()' method?"); }); diff --git a/topics/about_truthyness.js b/topics/about_truthyness.js index 9b524c14..1b48421d 100644 --- a/topics/about_truthyness.js +++ b/topics/about_truthyness.js @@ -3,20 +3,20 @@ module("About Truthyness (topics/about_truthyness.js)"); test("truthyness of positive numbers", function() { var oneIsTruthy = 1 ? true : false; - equal(__, oneIsTruthy, 'is one truthy?'); + equal(true, oneIsTruthy, 'is one truthy?'); }); test("truthyness of negative numbers", function() { var negativeOneIsTruthy = -1 ? true : false; - equal(__, negativeOneIsTruthy, 'is -1 truthy?'); + equal(true, negativeOneIsTruthy, 'is -1 truthy?'); }); test("truthyness of zero", function() { var zeroIsTruthy = 0 ? true : false; - equal(__, zeroIsTruthy, 'is 0 truthy?'); + equal(false, zeroIsTruthy, 'is 0 truthy?'); }); test("truthyness of null", function() { var nullIsTruthy = null ? true : false; - equal(__, nullIsTruthy, 'is null truthy?'); + equal(false, nullIsTruthy, 'is null truthy?'); });