view core-javascript/core-javascript-work/closure-exercises.js @ 156:b774913eb242 core-javascript.closure-exercises

Remove trailing whitespace from js files (js2mode does not repsect delete-trailing-whitespace).
author jf3243
date Wed, 09 Nov 2011 15:37:03 +0000
parents ee0bf994ab95
children
line wrap: on
line source

var something;

TEST('anon', function()
{
    var answer;

    // start
    answer = function(){
        return 1;
    };
    // stop

    assert( answer() ===  1 );
});


TEST('anon', function()
{
    var outer_function = function(){

        var answer;

        // start
        answer = function(){
            return 1;
        };
        // stop

        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;

        // start
        answer = function(){
            return 1;
        };
        // stop

        return answer;
    };

    assert( outer_function()() === 1 );
});


TEST('anon', function()
{
    var outer_function = function(n){

        var answer;

        // start
        answer = function(){
            return n;
        };
        // stop

        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){

        // start
        return function(){
          return n;
        };
        // stop
    };

    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 {
            // start
            aaa: aaa,
            bbb: bbb
            // stop
            };
    };

    var obj = ddd(1, 2);

    assert( obj.aaa === 1 );
    assert( obj.bbb === 2 );

});


TEST('anon', function()
{

    var get_set_factory = function(){

        // start
        var value;

        var get = function(){
            return value;
        };

        var set = function(new_value){
            value = new_value;
        };
        // stop

        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' );
});