--- /dev/null
+// DATA_TEMPLATE: empty_table
+oTest.fnStart( "bAutoWidth" );
+
+/* It's actually a little tricky to test this. We can't test absolute numbers because
+ * different browsers and different platforms will render the width of the columns slightly
+ * differently. However, we certainly can test the principle of what should happen (column
+ * width doesn't change over pages)
+ */
+
+$(document).ready( function () {
+ /* Check the default */
+ var oTable = $('#example').dataTable( {
+ "sAjaxSource": "../../../examples/ajax/sources/objects.txt",
+ "aoColumns": [
+ { "mData": "engine" },
+ { "mData": "browser" },
+ { "mData": "platform" },
+ { "mData": "version" },
+ { "mData": "grade" }
+ ]
+ } );
+ var oSettings = oTable.fnSettings();
+
+ oTest.fnWaitTest(
+ "Auto width is enabled by default",
+ null,
+ function () { return oSettings.oFeatures.bAutoWidth; }
+ );
+
+ oTest.fnWaitTest(
+ "First column has a width assigned to it",
+ null,
+ function () { return $('#example thead th:eq(0)').attr('style').match(/width/i); }
+ );
+
+ /*
+ This would seem like a better test - but there appear to be difficulties with tables
+ which are bigger (calculated) than there is actually room for. I suspect this is actually
+ a bug in datatables
+ oTest.fnWaitTest(
+ "Check column widths on first page match second page",
+ null,
+ function () {
+ var anThs = $('#example thead th');
+ var a0 = anThs[0].offsetWidth;
+ var a1 = anThs[1].offsetWidth;
+ var a2 = anThs[2].offsetWidth;
+ var a3 = anThs[3].offsetWidth;
+ var a4 = anThs[4].offsetWidth;
+ $('#example_next').click();
+ var b0 = anThs[0].offsetWidth;
+ var b1 = anThs[1].offsetWidth;
+ var b2 = anThs[2].offsetWidth;
+ var b3 = anThs[3].offsetWidth;
+ var b4 = anThs[4].offsetWidth;
+ console.log( a0, b0, a1, b1, a2, b2, a3, b3 );
+ if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+ return true;
+ else
+ return false;
+ }
+ );
+
+ oTest.fnWaitTest(
+ "Check column widths on second page match thid page",
+ null,
+ function () {
+ var anThs = $('#example thead th');
+ var a0 = anThs[0].offsetWidth;
+ var a1 = anThs[1].offsetWidth;
+ var a2 = anThs[2].offsetWidth;
+ var a3 = anThs[3].offsetWidth;
+ var a4 = anThs[4].offsetWidth;
+ $('#example_next').click();
+ var b0 = anThs[0].offsetWidth;
+ var b1 = anThs[1].offsetWidth;
+ var b2 = anThs[2].offsetWidth;
+ var b3 = anThs[3].offsetWidth;
+ var b4 = anThs[4].offsetWidth;
+ if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+ return true;
+ else
+ return false;
+ }
+ );
+ */
+
+ /* Check can disable */
+ oTest.fnWaitTest(
+ "Auto width can be disabled",
+ function () {
+ oSession.fnRestore();
+ oTable = $('#example').dataTable( {
+ "sAjaxSource": "../../../examples/ajax/sources/objects.txt",
+ "aoColumnDefs": [
+ { "mData": "engine", "aTargets": [0] },
+ { "mData": "browser", "aTargets": [1] },
+ { "mData": "platform", "aTargets": [2] },
+ { "mData": "version", "aTargets": [3] },
+ { "mData": "grade", "aTargets": [4] }
+ ],
+ "bAutoWidth": false
+ } );
+ oSettings = oTable.fnSettings();
+ },
+ function () { return oSettings.oFeatures.bAutoWidth == false; }
+ );
+
+ oTest.fnWaitTest(
+ "First column does not have a width assigned to it",
+ null,
+ function () { return $('#example thead th:eq(0)').attr('style') == null; }
+ );
+
+ /*
+ oTest.fnWaitTest(
+ "Check column widths on first page do not match second page",
+ null,
+ function () {
+ var anThs = $('#example thead th');
+ var a0 = anThs[0].offsetWidth;
+ var a1 = anThs[1].offsetWidth;
+ var a2 = anThs[2].offsetWidth;
+ var a3 = anThs[3].offsetWidth;
+ var a4 = anThs[4].offsetWidth;
+ $('#example_next').click();
+ var b0 = anThs[0].offsetWidth;
+ var b1 = anThs[1].offsetWidth;
+ var b2 = anThs[2].offsetWidth;
+ var b3 = anThs[3].offsetWidth;
+ var b4 = anThs[4].offsetWidth;
+ if ( a0==b0 && a1==b1 && a2==b2 && a3==b3 )
+ return false;
+ else
+ return true;
+ }
+ );
+ */
+
+ /* Enable makes no difference */
+ oTest.fnWaitTest(
+ "Auto width enabled override",
+ function () {
+ oSession.fnRestore();
+ oTable = $('#example').dataTable( {
+ "sAjaxSource": "../../../examples/ajax/sources/objects.txt",
+ "aoColumnDefs": [
+ { "mData": "engine", "aTargets": [0] },
+ { "mData": "browser", "aTargets": [1] },
+ { "mData": "platform", "aTargets": [2] },
+ { "mData": "version", "aTargets": [3] },
+ { "mData": "grade", "aTargets": [4] }
+ ],
+ "bAutoWidth": true
+ } );
+ oSettings = oTable.fnSettings();
+ },
+ function () { return oSettings.oFeatures.bAutoWidth; }
+ );
+
+
+ oTest.fnComplete();
+} );
\ No newline at end of file