diff --git a/lib/tests/tablelib_test.php b/lib/tests/tablelib_test.php
index 4a59e444c0e..3db08c3c82d 100644
--- a/lib/tests/tablelib_test.php
+++ b/lib/tests/tablelib_test.php
@@ -367,4 +367,135 @@ class core_tablelib_testcase extends basic_testcase {
$this->assertRegExp('/
assertRegExp('/| generate_data(5, 5);
+ $columns = $this->generate_columns(5);
+ $headers = $this->generate_headers(5);
+
+ // Testing without persistence first to verify that the results are different.
+ $table1 = new flexible_table('tablelib_test');
+ $table1->define_columns($columns);
+ $table1->define_headers($headers);
+ $table1->define_baseurl('/invalid.php');
+
+ $table1->sortable(true);
+ $table1->collapsible(true);
+
+ $table1->is_persistent(false);
+ $_GET['thide'] = 'column0';
+ $_GET['tsort'] = 'column1';
+ $_GET['tifirst'] = 'A';
+ $_GET['tilast'] = 'Z';
+
+ foreach ($data as $row) {
+ $table1->add_data_keyed($row);
+ }
+ $table1->setup();
+
+ // Clear session data between each new table.
+ unset($SESSION->flextable);
+
+ $table2 = new flexible_table('tablelib_test');
+ $table2->define_columns($columns);
+ $table2->define_headers($headers);
+ $table2->define_baseurl('/invalid.php');
+
+ $table2->sortable(true);
+ $table2->collapsible(true);
+
+ $table2->is_persistent(false);
+ unset($_GET);
+
+ foreach ($data as $row) {
+ $table2->add_data_keyed($row);
+ }
+ $table2->setup();
+
+ $this->assertNotEquals($table1, $table2);
+
+ unset($SESSION->flextable);
+
+ // Now testing with persistence to check that the tables are the same.
+ $table3 = new flexible_table('tablelib_test');
+ $table3->define_columns($columns);
+ $table3->define_headers($headers);
+ $table3->define_baseurl('/invalid.php');
+
+ $table3->sortable(true);
+ $table3->collapsible(true);
+
+ $table3->is_persistent(true);
+ $_GET['thide'] = 'column0';
+ $_GET['tsort'] = 'column1';
+ $_GET['tifirst'] = 'A';
+ $_GET['tilast'] = 'Z';
+
+ foreach ($data as $row) {
+ $table3->add_data_keyed($row);
+ }
+ $table3->setup();
+
+ unset($SESSION->flextable);
+
+ $table4 = new flexible_table('tablelib_test');
+ $table4->define_columns($columns);
+ $table4->define_headers($headers);
+ $table4->define_baseurl('/invalid.php');
+
+ $table4->sortable(true);
+ $table4->collapsible(true);
+
+ $table4->is_persistent(true);
+ unset($_GET);
+
+ foreach ($data as $row) {
+ $table4->add_data_keyed($row);
+ }
+ $table4->setup();
+
+ $this->assertEquals($table3, $table4);
+
+ unset($SESSION->flextable);
+
+ // Finally, another test with no persistence, but without clearing the session data.
+ $table5 = new flexible_table('tablelib_test');
+ $table5->define_columns($columns);
+ $table5->define_headers($headers);
+ $table5->define_baseurl('/invalid.php');
+
+ $table5->sortable(true);
+ $table5->collapsible(true);
+
+ $table5->is_persistent(true);
+ $_GET['thide'] = 'column0';
+ $_GET['tsort'] = 'column1';
+ $_GET['tifirst'] = 'A';
+ $_GET['tilast'] = 'Z';
+
+ foreach ($data as $row) {
+ $table5->add_data_keyed($row);
+ }
+ $table5->setup();
+
+ $table6 = new flexible_table('tablelib_test');
+ $table6->define_columns($columns);
+ $table6->define_headers($headers);
+ $table6->define_baseurl('/invalid.php');
+
+ $table6->sortable(true);
+ $table6->collapsible(true);
+
+ $table6->is_persistent(true);
+ unset($_GET);
+
+ foreach ($data as $row) {
+ $table6->add_data_keyed($row);
+ }
+ $table6->setup();
+
+ $this->assertEquals($table5, $table6);
+ }
}
|