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