--- /dev/null
+// 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();
+} );
\ No newline at end of file