# Yahoo! UI Library

### DataTable Widget 2.7.0

Yahoo! UI Library > datatable > ColumnSet.js (source view)
Search:
Filters Show Private Show Protected Show Deprecated

    (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;

        /**
         *
         *
         * 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"}]
        };

        /**
         *
         *
         * 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");
            ///this.container.id = "testDTContainer"; // Is this necessary?
            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;
        };

        /**
         *
         *
         * Tests ColumnSet APIs.
         *
         *
         */
        var csColumnSetTemplate = YAHOO.lang.merge(dtBaseTemplate, {
            name: "DataTable ColumnSet Tests",

            testGetColumnSet: function() {
                var dt = this.createInstance();
                var cs = dt.getColumnSet();

                Assert.isInstanceOf(ColumnSet, cs, "Expected a ColumnSet");
            },

            testGetColumn: function() {
                var dt = this.createInstance();
                //dt.subscribe("initEvent", function() {
                    var cs = dt.getColumnSet();
                    var oColumn = cs.keys[0];
                    var sColId = oColumn.getId();

                    var el = dt.getTheadEl().rows[0].cells[0];
                    var oTestColumn = dt.getColumn(el);
                    Assert.areSame(oColumn, oTestColumn, "Expected to get Column by el reference");

                    //TODO: get column by el reference child

                    // Removed col elements
                    //el = Dom.get(dt.getId()+"-col"+sColId);
                    //oTestColumn = dt.getColumn(el);
                    //Assert.areSame(oColumn, oTestColumn, "Expected to get Column by DOM ID");

                    oTestColumn = dt.getColumn(0);
                    Assert.areSame(oColumn, oTestColumn, "Expected to get Column by key index");

                    oTestColumn = cs.getColumn("a");
                    Assert.areSame(oColumn, oTestColumn, "Expected to get Column by key (ColumnSet method)");

                    oTestColumn = cs.getColumnById(sColId);
                    Assert.areSame(oColumn, oTestColumn, "Expected to get Column by Column ID (ColumnSet method)");
                //});
            }

            //TODO: More ColumnSet APIs
        });
        var csColumnSetTest = new DataTableTestCase(csColumnSetTemplate);
        /**
         *
         *
         * Runs tests.
         *
         *
         */
        YAHOO.util.Event.addListener(window, "load", function() {
            var columnsetsuite = new TestSuite("ColumnSet Test Suite");
            columnsetsuite.add(csColumnSetTest);

            TestRunner.add(columnsetsuite);
        });
    })();

Copyright © 2009 Yahoo! Inc. All rights reserved.