Mercurial > js4py
comparison core-javascript/core-javascript-work/tutorial.js @ 139:de308579ea0d core-javascript
From tutorial.js remove duplicate testools.js code.
| author | Jonathan Fine <jfine@pytex.org> |
|---|---|
| date | Mon, 31 Oct 2011 20:09:50 +0000 |
| parents | 20d76c716c9d |
| children | abfb176c7346 |
comparison
equal
deleted
inserted
replaced
| 138:20d76c716c9d | 139:de308579ea0d |
|---|---|
| 1 var telltail = 'global'; | 1 // [Rhino] $ js -f testtools.js -f tutorial.js |
| 2 // [JSDB] $ jsdb -load testtools.js -load tutorial.js | |
| 2 | 3 |
| 3 var TEST = function(title, code){ | 4 // start warm-up |
| 4 print( 'Testing: ' + title ); | 5 TEST('warm-up', function() |
| 5 code(); | 6 { |
| 6 }; | 7 assert( '0' == 0 ); |
| 8 assert ( 0 == '' ); | |
| 9 assert( '0' != '' ); | |
| 7 | 10 |
| 8 var assert = function(arg){ | 11 var a = NaN; |
| 9 if(!arg){ | 12 assert( a != a ); |
| 10 ddt(); | |
| 11 } | |
| 12 }; | |
| 13 | 13 |
| 14 '0' == 0 || ddt; | 14 }); |
| 15 0 == '' || ddt; | 15 // end warm-up |
| 16 '0' != '' || ddt; | |
| 17 NaN != NaN || ddt; | |
| 18 | 16 |
| 19 | 17 |
| 20 // start closures | 18 // start closures |
| 21 TEST('closures', function() | 19 TEST('closures', function() |
| 22 { | 20 { |
| 26 var value; | 24 var value; |
| 27 var get = function(){ | 25 var get = function(){ |
| 28 return value; | 26 return value; |
| 29 }; | 27 }; |
| 30 var set = function(new_value){ | 28 var set = function(new_value){ |
| 31 value = new_value; | 29 value = new_value; |
| 32 }; | 30 }; |
| 33 | 31 |
| 34 return { | 32 return { |
| 35 get: get, | 33 get: get, |
| 36 set: set | 34 set: set |
| 37 }; | 35 }; |
| 38 }; | 36 }; |
| 39 | 37 |
| 40 // Create and unpack two get-set pairs. | 38 // Create and unpack two get-set pairs. |
| 41 var tmp; | 39 var tmp; |
| 42 tmp= get_set_factory(); | 40 tmp= get_set_factory(); |
| 68 return this; | 66 return this; |
| 69 }; | 67 }; |
| 70 | 68 |
| 71 var default_this = return_this(); | 69 var default_this = return_this(); |
| 72 assert( default_this.telltail === 'global' ); | 70 assert( default_this.telltail === 'global' ); |
| 73 | 71 |
| 74 var obj = {}; | 72 var obj = {}; |
| 75 obj.return_this = return_this; | 73 obj.return_this = return_this; |
| 76 assert( obj.return_this === return_this ); | 74 assert( obj.return_this === return_this ); |
| 77 | 75 |
| 78 assert( obj.return_this() === obj ); | 76 assert( obj.return_this() === obj ); |
| 79 assert( obj['return_this']() === obj ); | 77 assert( obj['return_this']() === obj ); |
| 80 | 78 |
| 81 assert( return_this.call(obj) === obj ); | 79 assert( return_this.call(obj) === obj ); |
| 82 assert( return_this.apply(obj) === obj ); | 80 assert( return_this.apply(obj) === obj ); |
| 83 | 81 |
| 84 assert( return_this.call(undefined).telltail === 'global' ); | 82 assert( return_this.call(undefined).telltail === 'global' ); |
| 85 assert( return_this.apply(undefined).telltail === 'global' ); | 83 assert( return_this.apply(undefined).telltail === 'global' ); |
| 119 var obj = {}; | 117 var obj = {}; |
| 120 var fn = function(){}; | 118 var fn = function(){}; |
| 121 | 119 |
| 122 assert( typeof array === 'object' ); | 120 assert( typeof array === 'object' ); |
| 123 assert( '' + obj === '[object Object]' ); | 121 assert( '' + obj === '[object Object]' ); |
| 124 | 122 |
| 125 assert( obj.toString() === '[object Object]' ); | 123 assert( obj.toString() === '[object Object]' ); |
| 126 | 124 |
| 127 var object_toString = obj.toString; | 125 var object_toString = obj.toString; |
| 128 | 126 |
| 129 assert( object_toString.call(array) === '[object Array]' ); | 127 assert( object_toString.call(array) === '[object Array]' ); |
| 137 TEST('return_arguments', function() | 135 TEST('return_arguments', function() |
| 138 { | 136 { |
| 139 var return_arguments = function(){ | 137 var return_arguments = function(){ |
| 140 return arguments; | 138 return arguments; |
| 141 }; | 139 }; |
| 142 | 140 |
| 143 var my_arguments = return_arguments(0, 1); | 141 var my_arguments = return_arguments(0, 1); |
| 144 | 142 |
| 145 assert( my_arguments.length === 2 ); | 143 assert( my_arguments.length === 2 ); |
| 146 | 144 |
| 147 assert( my_arguments[0] === 0 ); | 145 assert( my_arguments[0] === 0 ); |
| 148 assert( my_arguments[1] === 1 ); | 146 assert( my_arguments[1] === 1 ); |
| 149 | 147 |
| 150 assert( '' + my_arguments === '[object Object]' ); | 148 assert( '' + my_arguments === '[object Object]' ); |
| 151 assert( '' + [0, 1] === '0,1' ); | 149 assert( '' + [0, 1] === '0,1' ); |
| 152 | 150 |
| 153 var array_slice = [].slice; | 151 var array_slice = [].slice; |
| 154 var my_arguments_fixed = array_slice.call( my_arguments ); | 152 var my_arguments_fixed = array_slice.call( my_arguments ); |
| 155 | 153 |
| 156 assert( '' + my_arguments_fixed === '0,1'); | 154 assert( '' + my_arguments_fixed === '0,1'); |
| 157 | 155 |
