(function() { var gCount = -1; var Dom=YAHOO.util.Dom, Assert=YAHOO.util.Assert, ObjectAssert=YAHOO.util.ObjectAssert, ArrayAssert=YAHOO.util.ArrayAssert, DateAssert=YAHOO.util.DateAssert, UserAction=YAHOO.util.UserAction, TestCase = YAHOO.tool.TestCase, TestLogger = YAHOO.tool.TestLogger, TestRunner = YAHOO.tool.TestRunner, TestSuite = YAHOO.tool.TestSuite, DataSource = YAHOO.util.DataSource, DataTable = YAHOO.widget.DataTable, ColumnSet = YAHOO.widget.ColumnSet, RecordSet = YAHOO.widget.RecordSet; /** * * * DataTable assertions. * * */ var DataTableAssert = { areSameRow: function(elTr, oRecord, dt, msg) { Assert.areSame("tr", elTr.tagName.toLowerCase(), "Expected a TR element: " + msg); Assert.areSame(elTr.id, oRecord.getId(), "TR ID and Record IDs don't match: " + msg); }, areSameCell: function(elTd, oRecord, oColumn, dt, msg) { Assert.areSame("td", elTd.tagName.toLowerCase(), "Expected a TD element: " + msg); Assert.areSame(elTd.cellIndex, oColumn.getKeyIndex(), "TR index and Column key index don't match: " + msg); this.areSameRow(elTd.parentNode, oRecord, dt, msg); } }; /** * * * Base DataTable test case. * * */ function DataTableTestCase(template) { DataTableTestCase.superclass.constructor.call(this, template); }; YAHOO.lang.extend(DataTableTestCase, TestCase); DataTableTestCase.prototype.setUp = function() { // Create container anew this.container = document.createElement("div"); document.body.appendChild(this.container); // Create DataSource anew this.datasource = new YAHOO.util.DataSource(this.dsData, this.dsConfig); }; DataTableTestCase.prototype.tearDown = function() { // Destroy DataTable this.datatable.destroy(); this.datatable = null; // Destroy container if(this.container !== null) { YAHOO.util.Event.purgeElement(this.container, true); document.body.removeChild(this.container); this.container = null; } // TODO: need a destroy method this.datasource = null; }; DataTableTestCase.prototype.createInstance = function(oDT, oConfig) { oDT = oDT || DataTable; this.datatable = new oDT(this.container, this.columns, this.datasource, oConfig); gCount++; return this.datatable; }; /** * * * Base DataTable test template. Sets up values for a DataTable instance. * * */ var dtBaseTemplate = { name: "DataTable Base Tests", dsData: [ {a:"0a",b:"0b",c:"0c"}, {a:"1a",b:"1b",c:"1c"}, {a:"2a",b:"2b",c:"2c"}, {a:"3a",b:"3b",c:"3c"} ], dsConfig: { responseType:YAHOO.util.DataSource.TYPE_JSARRAY, responseSchema:{fields:["a","b","c"]} }, columns: [{key:"a"},{key:"b"},{key:"c"}] }; /** * * * Tests various construction use cases. * * */ var dtConstructionTemplate = YAHOO.lang.merge(dtBaseTemplate, { name: "DataTable Construction Tests", testConstruction: function() { var dt = this.createInstance(); Assert.isInstanceOf(DataTable, this.datatable, "Failed to create DataTable instance"); Assert.isInstanceOf(ColumnSet, this.datatable.getColumnSet(), "Failed to create ColumnSet instance"); Assert.isInstanceOf(RecordSet, this.datatable.getRecordSet(), "Failed to create RecordSet instance"); Assert.areSame(this.dsData.length, this.datatable.getRecordSet().getLength(), "Unexpected RecordSet length"); }, testNestedHeaders: function() { //TODO var dt = this.createInstance(); }, testMultipleInstances: function() { var multiple = 3; // Set how many instances (total) to create for this test case // Create first instance var dt = this.createInstance(); var cs = dt.getColumnSet(); var oColumn = cs.keys[0]; // Create more instances for(var i=1; i