Mercurial > js4py
diff core-javascript/core-javascript-work/closure-exercises.js @ 153:e8007df28827 core-javascript.closure-exercises
Add and populate closure-exercises.js.
| author | jf3243 |
|---|---|
| date | Wed, 02 Nov 2011 14:04:18 +0000 |
| parents | |
| children | ee0bf994ab95 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core-javascript/core-javascript-work/closure-exercises.js Wed Nov 02 14:04:18 2011 +0000 @@ -0,0 +1,198 @@ +var something; + +TEST('anon', function() +{ + var answer; + + // Hint: Uncomment the next line. + // answer = function(){ return 1; }; + + answer = function(){ + return 1; + }; + + assert( answer() === 1 ); +}); + + +TEST('anon', function() +{ + var outer_function = function(){ + + var answer; + + // Define answer here. + answer = function(){ + return 1; + }; + + return answer; + }; + + var my_inner_function = outer_function(); + + assert( typeof my_inner_function === 'function' ); + assert( my_inner_function() === 1 ); +}); + + +TEST('anon', function() +{ + var outer_function = function(){ + + var answer; + + // Define answer here. + answer = function(){ + return 1; + }; + + return answer; + }; + + assert( outer_function()() === 1 ); +}); + + +TEST('anon', function() +{ + var outer_function = function(n){ + + var answer; + + // Define answer here. + answer = function(){ + return n; + }; + + return answer; + }; + + assert( outer_function(1)() === 1 ); + assert( outer_function(2)() === 2 ); + assert( outer_function(3)() === 3 ); +}); + + +TEST('anon', function() +{ + var outer_function = function(n){ + + return function(){ + return n; // ANSWER + }; + }; + + assert( outer_function(1)() === 1 ); + assert( outer_function(2)() === 2 ); + assert( outer_function(3)() === 3 ); +}); + + +TEST('anon', function() +{ + var value = 1; + + var get_value = function(){ + return value; + }; + + something = 1; + assert( get_value() === something ); +}); + + +TEST('anon', function() +{ + var value = 1; + + var set_value = function(n){ + value = n; + }; + + set_value(2); + something = 2; + assert( value === something ); +}); + + +TEST('anon', function() +{ + var value = 1; + + var get_value = function(){ + return value; + }; + + var set_value = function(n){ + value = n; + }; + + something = 1; + assert( get_value() === something ); + + set_value(2); + something = 2; + assert( get_value() === something ); +}); + + +TEST('anon', function() +{ + var value = 1; + + var ddd = function(aaa, bbb){ + return { + aaa: aaa, + bbb: bbb + }; + }; + + + var obj = ddd(1, 2); + + assert( obj.aaa === 1 ); + assert( obj.bbb === 2 ); + +}); + + +TEST('anon', function() +{ + + var get_set_factory = function(){ + + var value; + + var get = function(){ + return value; + }; + + var set = function(new_value){ + value = new_value; + }; + + return { + get : get, + set : set + }; + }; + + var tmp; + tmp = get_set_factory(); + var get_a = tmp.get; + var set_a = tmp.set; + + tmp = get_set_factory(); + var get_b = tmp.get; + var set_b = tmp.set; + + + set_a('aaa'); + assert( get_a() == 'aaa' ); + + set_b('bbb'); + assert( get_b() == 'bbb' ); + + assert( get_a() == 'aaa' ); +});
