changeset 168:2d78ae4f0dfa javascript-exercises

Make a start on interactive exercise environment and additional exercises.
author jf3243
date Thu, 10 Nov 2011 12:28:41 +0000
parents 8f05cc516185
children 9bcc4b90335b
files core-javascript/javascript-exercises/README.txt core-javascript/javascript-exercises/answers/object-exercises.js core-javascript/javascript-exercises/object-exercises.js core-javascript/javascript-exercises/testtools.js
diffstat 4 files changed, 105 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core-javascript/javascript-exercises/README.txt	Thu Nov 10 12:28:41 2011 +0000
@@ -0,0 +1,8 @@
+help = [
+    "'exit': quit the interpreter.",
+    "",
+    "Type 'help' at the 'js>' prompt to get this  message."
+].join('\n') + ' \n';
+
+
+writeln(help);
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core-javascript/javascript-exercises/answers/object-exercises.js	Thu Nov 10 12:28:41 2011 +0000
@@ -0,0 +1,47 @@
+var something;
+
+TEST('if not found', function()
+{
+    var obj = {};
+
+    something = undefined;
+    assert( obj.name === something );
+
+    something = undefined;
+    assert( obj['name'] === something );
+});
+
+
+TEST('attributes and items', function()
+{
+    var answer;
+
+    var obj = {};
+
+    obj.name = 'one';
+    something = 'one';
+    assert( obj.name === something );
+
+    obj['name'] = 'two';
+    something = 'two';
+    assert( obj['name'] === something );
+
+    something = 'two';
+    assert( obj.name === something );
+});
+
+
+TEST('object literals', function()
+{
+    var answer;
+
+    var obj = {
+        // start
+        name : 42,
+        second_name: 'secret'
+        // stop
+    };
+
+    assert( obj.name === 42 );
+    assert( obj.second_name === 'secret' );
+});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/core-javascript/javascript-exercises/object-exercises.js	Thu Nov 10 12:28:41 2011 +0000
@@ -0,0 +1,39 @@
+var something;
+
+TEST('if not found', function()
+{
+    var obj = {};
+
+    assert( obj.name === something );
+
+    assert( obj['name'] === something );
+});
+
+
+TEST('attributes and items', function()
+{
+    var answer;
+
+    var obj = {};
+
+    obj.name = 'one';
+    assert( obj.name === something );
+
+    obj['name'] = 'two';
+    assert( obj['name'] === something );
+
+    assert( obj.name === something );
+});
+
+
+TEST('object literals', function()
+{
+    var answer;
+
+    var obj = {
+        // Please write your answer here.
+    };
+
+    assert( obj.name === 42 );
+    assert( obj.second_name === 'secret' );
+});
--- a/core-javascript/javascript-exercises/testtools.js	Thu Nov 10 12:27:29 2011 +0000
+++ b/core-javascript/javascript-exercises/testtools.js	Thu Nov 10 12:28:41 2011 +0000
@@ -10,6 +10,7 @@
     };
 } else {
     log = print;
+    log = writeln;              // Wrong, but get us working in jsdb.exe.
 }
 
 //
@@ -37,3 +38,13 @@
     }
 };
 
+var submit = function(name){
+
+    var filename = name + '-exercises.js';
+    var status = run(filename);
+
+    if (!status){
+        writeln("Could not find file '" + filename + "'");
+    }
+
+};