Mercurial > js4py
annotate core-javascript/javascript-exercises/testtools.js @ 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 | 44d0ccb983d3 |
| children | 19e88fb18c4e |
| rev | line source |
|---|---|
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
1 var telltail = 'global'; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
2 var _assertion_count = 0; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
3 |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
4 // Define a global function 'log'. |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
5 var log; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
6 if (this.hasOwnProperty('jsArguments')){ |
|
156
b774913eb242
Remove trailing whitespace from js files (js2mode does not repsect delete-trailing-whitespace).
jf3243
parents:
152
diff
changeset
|
7 |
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
8 log = function(s){ |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
9 print(s + '\n'); |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
10 }; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
11 } else { |
|
156
b774913eb242
Remove trailing whitespace from js files (js2mode does not repsect delete-trailing-whitespace).
jf3243
parents:
152
diff
changeset
|
12 log = print; |
|
168
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
13 log = writeln; // Wrong, but get us working in jsdb.exe. |
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
14 } |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
15 |
|
156
b774913eb242
Remove trailing whitespace from js files (js2mode does not repsect delete-trailing-whitespace).
jf3243
parents:
152
diff
changeset
|
16 // |
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
17 var TEST = function(title, code){ |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
18 |
| 152 | 19 var x; |
| 20 | |
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
21 log( 'Testing: ' + title ); |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
22 _assertion_count = 0; |
| 152 | 23 |
| 24 try { | |
| 25 code(); | |
| 26 } catch (x) { | |
| 27 log('! Exception at ' + x.fileName +':' + x.lineNumber); | |
| 28 log('! [' + x.name + '] ' + x.message ); | |
| 29 } | |
| 30 | |
|
138
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
31 }; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
32 |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
33 var assert = function(arg){ |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
34 _assertion_count += 1; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
35 if (!arg){ |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
36 var msg = '! assert ' + _assertion_count + ' has failed'; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
37 log(msg); |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
38 } |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
39 }; |
|
20d76c716c9d
core-javascript-work$ for NAME in * ; do perl -i -p -e 's/\n/ # use DOS line endings
Jonathan Fine <jfine@pytex.org>
parents:
137
diff
changeset
|
40 |
|
168
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
41 var submit = function(name){ |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
42 |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
43 var filename = name + '-exercises.js'; |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
44 var status = run(filename); |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
45 |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
46 if (!status){ |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
47 writeln("Could not find file '" + filename + "'"); |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
48 } |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
49 |
|
2d78ae4f0dfa
Make a start on interactive exercise environment and additional exercises.
jf3243
parents:
164
diff
changeset
|
50 }; |
