// DATA_TEMPLATE: dom_data oTest.fnStart( "Check behaviour of the data get functions that DataTables uses" ); $(document).ready( function () { // Slightly unusual test set this one, in that we don't really care about the DOM // but want to test the internal data handling functions but we do need a table to // get at the functions! var table = $('#example').dataTable(); var fn, test; // Object property access oTest.fnTest( "Single object, single property", function () { fn = table.oApi._fnGetObjectDataFn('test'); test = fn( { "test": true } ); }, function () { return test } ); oTest.fnTest( "Single property from object", function () { fn = table.oApi._fnGetObjectDataFn('test'); test = fn( { "test": true, "test2": false } ); }, function () { return test } ); oTest.fnTest( "Single property from object - different property", function () { fn = table.oApi._fnGetObjectDataFn('test2'); test = fn( { "test": true, "test2": false } ); }, function () { return test===false } ); oTest.fnTest( "Undefined property from object", function () { fn = table.oApi._fnGetObjectDataFn('test3'); test = fn( { "test": true, "test2": false } ); }, function () { return test===undefined } ); // Array index access oTest.fnTest( "Array access - index 0", function () { fn = table.oApi._fnGetObjectDataFn(0); test = fn( [true, false, false, false] ); }, function () { return test } ); oTest.fnTest( "Array access - index 1", function () { fn = table.oApi._fnGetObjectDataFn(2); test = fn( [false, false, true, false] ); }, function () { return test } ); oTest.fnTest( "Array access - undefined", function () { fn = table.oApi._fnGetObjectDataFn(7); test = fn( [false, false, true, false] ); }, function () { return test===undefined } ); // null source oTest.fnTest( "null source", function () { fn = table.oApi._fnGetObjectDataFn( null ); test = fn( [false, false, true, false] ); }, function () { return test===null } ); // nested objects oTest.fnTest( "Nested object property", function () { fn = table.oApi._fnGetObjectDataFn( 'a.b' ); test = fn( { "a":{ "b": true, "c": false, "d": 1 } } ); }, function () { return test } ); oTest.fnTest( "Nested object property - different prop", function () { fn = table.oApi._fnGetObjectDataFn( 'a.d' ); test = fn( { "a":{ "b": true, "c": false, "d": 1 } } ); }, function () { return test===1 } ); oTest.fnTest( "Nested object property - undefined prop", function () { fn = table.oApi._fnGetObjectDataFn( 'a.z' ); test = fn( { "a":{ "b": true, "c": false, "d": 1 } } ); }, function () { return test===undefined } ); // Nested array oTest.fnTest( "Nested array index property", function () { fn = table.oApi._fnGetObjectDataFn( 'a.0' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test } ); oTest.fnTest( "Nested array index property - different index", function () { fn = table.oApi._fnGetObjectDataFn( 'a.2' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test===1 } ); oTest.fnTest( "Nested array index property - undefined index", function () { fn = table.oApi._fnGetObjectDataFn( 'a.10' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test===undefined } ); // Nested array object property oTest.fnTest( "Nested array index object property", function () { fn = table.oApi._fnGetObjectDataFn( 'a.0.m' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test } ); oTest.fnTest( "Nested array index object property - different index", function () { fn = table.oApi._fnGetObjectDataFn( 'a.2.n' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test===3 } ); oTest.fnTest( "Nested array index object property - undefined index", function () { fn = table.oApi._fnGetObjectDataFn( 'a.0.z' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test===undefined } ); // Array notation - no join oTest.fnTest( "Array notation - no join - property", function () { fn = table.oApi._fnGetObjectDataFn( 'a[].n' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test.length===3 && test[0]===1 && test[1]===2 && test[2]===3; } ); oTest.fnTest( "Array notation - no join - property (2)", function () { fn = table.oApi._fnGetObjectDataFn( 'a[].m' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 } ] } ); }, function () { return test.length===2 && test[0]===true && test[1]===false; } ); oTest.fnTest( "Array notation - no join - undefined property", function () { fn = table.oApi._fnGetObjectDataFn( 'a[].z' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 } ] } ); }, function () { return test.length===2 && test[0]===undefined && test[1]===undefined; } ); // Array notation - join oTest.fnTest( "Array notation - space join - property", function () { fn = table.oApi._fnGetObjectDataFn( 'a[ ].n' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test === '1 2 3'; } ); oTest.fnTest( "Array notation - space join - property (2)", function () { fn = table.oApi._fnGetObjectDataFn( 'a[ ].m' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 } ] } ); }, function () { return test === 'true false'; } ); oTest.fnTest( "Array notation - sapce join - undefined property", function () { fn = table.oApi._fnGetObjectDataFn( 'a[ ].z' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 } ] } ); }, function () { return test === ' '; } ); oTest.fnTest( "Array notation - string join - property", function () { fn = table.oApi._fnGetObjectDataFn( 'a[qwerty].n' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 }, { "m": false, "n": 3 } ] } ); }, function () { return test === '1qwerty2qwerty3'; } ); oTest.fnTest( "Array notation - string join - property (2)", function () { fn = table.oApi._fnGetObjectDataFn( 'a[qwerty].m' ); test = fn( { "a": [ { "m": true, "n": 1 }, { "m": false, "n": 2 } ] } ); }, function () { return test === 'trueqwertyfalse'; } ); // Array alone join oTest.fnTest( "Flat array join", function () { fn = table.oApi._fnGetObjectDataFn( 'a[ ]' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test==="true false 1"; } ); oTest.fnTest( "Flat array string join", function () { fn = table.oApi._fnGetObjectDataFn( 'a[qwerty]' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test==="trueqwertyfalseqwerty1"; } ); oTest.fnTest( "Flat array no join", function () { fn = table.oApi._fnGetObjectDataFn( 'a[]' ); test = fn( { "a": [ true, false, 1 ] } ); }, function () { return test.length===3 && test[0]===true && test[1]===false && test[2]===1; } ); oTest.fnComplete(); } );