Linux aries.aptans.com 4.18.0-348.20.1.lve.1.el8.x86_64 #1 SMP Wed Mar 16 08:45:39 EDT 2022 x86_64
Apache
: 135.181.142.107 | : 172.69.7.46
Cant Read [ /etc/named.conf ]
7.4.33
aja
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
home /
aja /
public_html /
ead.aptans /
lib /
tests /
[ HOME SHELL ]
Name
Size
Permission
Action
analytics
[ DIR ]
drwxr-xr-x
behat
[ DIR ]
drwxr-xr-x
content
[ DIR ]
drwxr-xr-x
event
[ DIR ]
drwxr-xr-x
external
[ DIR ]
drwxr-xr-x
fixtures
[ DIR ]
drwxr-xr-x
other
[ DIR ]
drwxr-xr-x
output
[ DIR ]
drwxr-xr-x
performance
[ DIR ]
drwxr-xr-x
plugininfo
[ DIR ]
drwxr-xr-x
accesslib_has_capability_test....
29.73
KB
-rw-rw-r--
accesslib_test.php
219.29
KB
-rw-rw-r--
adhoc_task_test.php
18.44
KB
-rw-rw-r--
adminlib_test.php
4.38
KB
-rw-rw-r--
admintree_test.php
17.32
KB
-rw-r--r--
ajaxlib_test.php
4.36
KB
-rw-rw-r--
analysers_test.php
12.95
KB
-rw-r--r--
antivirus_test.php
8.69
KB
-rw-rw-r--
authlib_test.php
19.91
KB
-rw-r--r--
blocklib_test.php
35.27
KB
-rw-rw-r--
calendar_cron_task_test.php
2.69
KB
-rw-rw-r--
check_test.php
1.97
KB
-rw-r--r--
client_test.php
4.34
KB
-rw-r--r--
collator_test.php
11.99
KB
-rw-r--r--
completion_daily_task_test.php
5.24
KB
-rw-r--r--
completionlib_test.php
62.1
KB
-rw-rw-r--
component_test.php
40.17
KB
-rw-rw-r--
componentlib_test.php
6.64
KB
-rw-r--r--
configonlylib_test.php
6.15
KB
-rw-r--r--
content_test.php
4.77
KB
-rw-r--r--
core_media_player_native_test....
6.54
KB
-rw-r--r--
core_renderer_template_exploit...
17.28
KB
-rw-r--r--
coverage.php
1.93
KB
-rw-rw-r--
cronlib_test.php
6.89
KB
-rw-r--r--
csslib_test.php
1.79
KB
-rw-r--r--
csvclass_test.php
5.57
KB
-rw-r--r--
curl_security_helper_test.php
14.71
KB
-rw-r--r--
customcontext_test.php
3.79
KB
-rw-r--r--
dataformat_test.php
3.74
KB
-rw-r--r--
datalib_test.php
47.8
KB
-rw-r--r--
datalib_update_with_unique_ind...
6.31
KB
-rw-r--r--
date_legacy_test.php
13.9
KB
-rw-r--r--
date_test.php
24.48
KB
-rw-rw-r--
editorlib_test.php
2.01
KB
-rw-r--r--
encryption_test.php
8.68
KB
-rw-r--r--
environment_test.php
8.54
KB
-rw-r--r--
event_context_locked_test.php
4.11
KB
-rw-r--r--
event_course_module_instance_l...
2.7
KB
-rw-r--r--
event_course_module_viewed.php
3.33
KB
-rw-r--r--
event_deprecated_test.php
1.49
KB
-rw-r--r--
event_grade_deleted_test.php
3.25
KB
-rw-r--r--
event_profile_field_test.php
12.44
KB
-rw-r--r--
event_unknown_logged_test.php
1.92
KB
-rw-r--r--
event_user_graded_test.php
10.07
KB
-rw-r--r--
event_user_password_updated_te...
2.89
KB
-rw-r--r--
exporter_test.php
11.02
KB
-rw-r--r--
externallib_test.php
29.7
KB
-rw-r--r--
filelib_test.php
70.92
KB
-rw-rw-r--
filestorage_zip_archive_test.p...
2.75
KB
-rw-r--r--
filetypes_test.php
10.2
KB
-rw-r--r--
filter_manager_test.php
3.48
KB
-rw-r--r--
filterlib_test.php
36.72
KB
-rw-r--r--
formslib_test.php
39.6
KB
-rw-r--r--
gdlib_test.php
5.92
KB
-rw-r--r--
googlelib_test.php
1.54
KB
-rw-r--r--
gradelib_test.php
9.74
KB
-rw-r--r--
grades_externallib_test.php
24.66
KB
-rw-rw-r--
grading_externallib_test.php
26.27
KB
-rw-r--r--
grouplib_test.php
84.23
KB
-rw-rw-r--
h5p_clean_orphaned_records_tas...
3.12
KB
-rw-r--r--
h5p_get_content_types_task_tes...
2.69
KB
-rw-r--r--
html2text_test.php
7.58
KB
-rw-r--r--
html_writer_test.php
8.74
KB
-rw-rw-r--
htmlpurifier_test.php
22.67
KB
-rw-r--r--
ip_utils_test.php
14.27
KB
-rw-r--r--
jquery_test.php
1.76
KB
-rw-r--r--
ldaplib_test.php
17.72
KB
-rw-r--r--
licenselib_test.php
11.58
KB
-rw-r--r--
lock_config_test.php
3.39
KB
-rw-r--r--
lock_test.php
5.5
KB
-rw-r--r--
markdown_test.php
2.45
KB
-rw-r--r--
mathslib_test.php
11.12
KB
-rw-r--r--
medialib_test.php
20.19
KB
-rw-rw-r--
message_test.php
12.46
KB
-rw-rw-r--
messageinbound_test.php
5.89
KB
-rw-r--r--
messagelib_test.php
56.39
KB
-rw-rw-r--
minify_test.php
3.14
KB
-rw-r--r--
modinfolib_test.php
44.15
KB
-rw-rw-r--
moodle_page_test.php
29.58
KB
-rw-rw-r--
moodle_url_test.php
12.85
KB
-rw-r--r--
moodlelib_test.php
216.85
KB
-rw-rw-r--
mustache_template_finder_test....
7.4
KB
-rw-r--r--
mustache_template_source_loade...
18.06
KB
-rw-r--r--
myprofilelib_test.php
10.44
KB
-rw-r--r--
navigationlib_test.php
26.28
KB
-rw-rw-r--
notification_test.php
4.61
KB
-rw-r--r--
oauth2_test.php
17.57
KB
-rw-r--r--
output_mustache_helper_collect...
8.09
KB
-rw-r--r--
outputcomponents_test.php
29.67
KB
-rw-r--r--
outputfactories_test.php
6.8
KB
-rw-r--r--
outputrequirementslib_test.php
5.38
KB
-rw-r--r--
pdflib_test.php
1.51
KB
-rw-r--r--
persistent_test.php
19.95
KB
-rw-rw-r--
plugin_manager_test.php
27.39
KB
-rw-r--r--
portfoliolib_test.php
8.4
KB
-rw-r--r--
progress_display_test.php
3.75
KB
-rw-r--r--
progress_test.php
14.48
KB
-rw-r--r--
qrcode_test.php
1.88
KB
-rw-r--r--
questionlib_test.php
96.9
KB
-rw-rw-r--
regex_test.php
1.88
KB
-rw-r--r--
report_helper_test.php
3.68
KB
-rw-rw-r--
requirejs_test.php
3.73
KB
-rw-r--r--
rsslib_test.php
6.9
KB
-rw-r--r--
rtlcss_test.php
56.86
KB
-rw-r--r--
sample_questions.ser
141.76
KB
-rw-r--r--
sample_questions.xml
102.62
KB
-rw-r--r--
sample_questions_with_old_imag...
4.85
KB
-rw-r--r--
sample_questions_with_old_imag...
4.08
KB
-rw-r--r--
sample_questions_wrong.xml
102.57
KB
-rw-r--r--
scheduled_task_test.php
29.98
KB
-rw-rw-r--
scss_test.php
4.26
KB
-rw-r--r--
session_manager_test.php
33.96
KB
-rw-r--r--
session_redis_test.php
13.27
KB
-rw-r--r--
sessionlib_test.php
11.86
KB
-rw-r--r--
setuplib_test.php
19.63
KB
-rw-r--r--
statslib_test.php
26.75
KB
-rw-r--r--
string_manager_standard_test.p...
10.05
KB
-rw-rw-r--
tablelib_test.php
23.53
KB
-rw-r--r--
task_database_logger_test.php
20.15
KB
-rw-r--r--
task_logging_test.php
17.31
KB
-rw-r--r--
task_manager_test.php
11.2
KB
-rw-r--r--
task_running_test.php
6.58
KB
-rw-r--r--
text_test.php
21.09
KB
-rw-rw-r--
theme_config_test.php
9.81
KB
-rw-rw-r--
time_splittings_test.php
15.09
KB
-rw-r--r--
update_api_test.php
6.75
KB
-rw-r--r--
update_checker_test.php
10.86
KB
-rw-r--r--
update_code_manager_test.php
9.06
KB
-rw-r--r--
update_validator_test.php
18.44
KB
-rw-r--r--
upgrade_util_test.php
5.65
KB
-rw-r--r--
upgradelib_test.php
69.1
KB
-rw-rw-r--
user_menu_test.php
3.82
KB
-rw-rw-r--
user_test.php
32.36
KB
-rw-rw-r--
useragent_test.php
83.88
KB
-rw-rw-r--
weblib_format_text_test.php
12.11
KB
-rw-r--r--
weblib_test.php
35.1
KB
-rw-rw-r--
xhprof_test.php
3.32
KB
-rw-r--r--
xhtml_container_stack_test.php
4.16
KB
-rw-r--r--
xmlize_test.php
2.72
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : tablelib_test.php
<?php // This file is part of Moodle - http://moodle.org/ // // Moodle is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // Moodle is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with Moodle. If not, see <http://www.gnu.org/licenses/>. /** * Test tablelib. * * @package core * @category phpunit * @copyright 2013 Damyon Wiese <damyon@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ defined('MOODLE_INTERNAL') || die(); global $CFG; require_once($CFG->libdir . '/tablelib.php'); require_once($CFG->libdir . '/tests/fixtures/testable_flexible_table.php'); /** * Test some of tablelib. * * @package core * @category phpunit * @copyright 2013 Damyon Wiese <damyon@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ class core_tablelib_testcase extends advanced_testcase { protected function generate_columns($cols) { $columns = array(); foreach (range(0, $cols - 1) as $j) { array_push($columns, 'column' . $j); } return $columns; } protected function generate_headers($cols) { $columns = array(); foreach (range(0, $cols - 1) as $j) { array_push($columns, 'Column ' . $j); } return $columns; } protected function generate_data($rows, $cols) { $data = array(); foreach (range(0, $rows - 1) as $i) { $row = array(); foreach (range(0, $cols - 1) as $j) { $val = 'row ' . $i . ' col ' . $j; $row['column' . $j] = $val; } array_push($data, $row); } return $data; } /** * Create a table with properties as passed in params, add data and output html. * * @param string[] $columns * @param string[] $headers * @param bool $sortable * @param bool $collapsible * @param string[] $suppress * @param string[] $nosorting * @param (array|object)[] $data * @param int $pagesize */ protected function run_table_test($columns, $headers, $sortable, $collapsible, $suppress, $nosorting, $data, $pagesize) { $table = $this->create_and_setup_table($columns, $headers, $sortable, $collapsible, $suppress, $nosorting); $table->pagesize($pagesize, count($data)); foreach ($data as $row) { $table->add_data_keyed($row); } $table->finish_output(); } /** * Create a table with properties as passed in params. * * @param string[] $columns * @param string[] $headers * @param bool $sortable * @param bool $collapsible * @param string[] $suppress * @param string[] $nosorting * @return flexible_table */ protected function create_and_setup_table($columns, $headers, $sortable, $collapsible, $suppress, $nosorting) { $table = new flexible_table('tablelib_test'); $table->define_columns($columns); $table->define_headers($headers); $table->define_baseurl('/invalid.php'); $table->sortable($sortable); $table->collapsible($collapsible); foreach ($suppress as $column) { $table->column_suppress($column); } foreach ($nosorting as $column) { $table->no_sorting($column); } $table->setup(); return $table; } public function test_empty_table() { $this->expectOutputRegex('/' . get_string('nothingtodisplay') . '/'); $this->run_table_test( array('column1', 'column2'), // Columns. array('Column 1', 'Column 2'), // Headers. true, // Sortable. false, // Collapsible. array(), // Suppress columns. array(), // No sorting. array(), // Data. 10 // Page size. ); } public function test_has_next_pagination() { $data = $this->generate_data(11, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Search for pagination controls containing 'page-link"\saria-label="Next"'. $this->expectOutputRegex('/page-link"\saria-label="Next page"/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } public function test_has_hide() { $data = $this->generate_data(11, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Search for 'hide' links in the column headers. $this->expectOutputRegex('/' . get_string('hide') . '/'); $this->run_table_test( $columns, $headers, true, true, array(), array(), $data, 10 ); } public function test_has_not_hide() { $data = $this->generate_data(11, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Make sure there are no 'hide' links in the headers. ob_start(); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); $output = ob_get_contents(); ob_end_clean(); $this->assertStringNotContainsString(get_string('hide'), $output); } public function test_has_sort() { $data = $this->generate_data(11, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Search for pagination controls containing '1.*2</a>.*Next</a>'. $this->expectOutputRegex('/' . get_string('sortby') . '/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } public function test_has_not_sort() { $data = $this->generate_data(11, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Make sure there are no 'Sort by' links in the headers. ob_start(); $this->run_table_test( $columns, $headers, false, false, array(), array(), $data, 10 ); $output = ob_get_contents(); ob_end_clean(); $this->assertStringNotContainsString(get_string('sortby'), $output); } public function test_has_not_next_pagination() { $data = $this->generate_data(10, 2); $columns = $this->generate_columns(2); $headers = $this->generate_headers(2); // Make sure there are no 'Next' links in the pagination. ob_start(); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); $output = ob_get_contents(); ob_end_clean(); $this->assertStringNotContainsString(get_string('next'), $output); } public function test_1_col() { $data = $this->generate_data(100, 1); $columns = $this->generate_columns(1); $headers = $this->generate_headers(1); $this->expectOutputRegex('/row 0 col 0/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } public function test_empty_rows() { $data = $this->generate_data(1, 5); $columns = $this->generate_columns(5); $headers = $this->generate_headers(5); // Test that we have at least 5 columns generated for each empty row. $this->expectOutputRegex('/emptyrow.*r9_c4/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } public function test_5_cols() { $data = $this->generate_data(100, 5); $columns = $this->generate_columns(5); $headers = $this->generate_headers(5); $this->expectOutputRegex('/row 0 col 0/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } public function test_50_cols() { $data = $this->generate_data(100, 50); $columns = $this->generate_columns(50); $headers = $this->generate_headers(50); $this->expectOutputRegex('/row 0 col 0/'); $this->run_table_test( $columns, $headers, true, false, array(), array(), $data, 10 ); } /** * Data provider for test_fullname_column * * @return array */ public function fullname_column_provider() { return [ ['language'], ['alternatename lastname'], ['firstname lastnamephonetic'], ]; } /** * Test fullname column observes configured alternate fullname format configuration * * @param string $format * @return void * * @dataProvider fullname_column_provider */ public function test_fullname_column(string $format) { $this->resetAfterTest(); $this->setAdminUser(); set_config('alternativefullnameformat', $format); $user = $this->getDataGenerator()->create_user(); $table = $this->create_and_setup_table(['fullname'], [], true, false, [], []); $this->assertStringContainsString(fullname($user, true), $table->format_row($user)['fullname']); } /** * Test fullname column ignores fullname format configuration for a user with viewfullnames capability prohibited * * @param string $format * @return void * * @dataProvider fullname_column_provider */ public function test_fullname_column_prohibit_viewfullnames(string $format) { global $DB, $CFG; $this->resetAfterTest(); set_config('alternativefullnameformat', $format); $currentuser = $this->getDataGenerator()->create_user(); $this->setUser($currentuser); // Prohibit the viewfullnames from the default user role. $userrole = $DB->get_record('role', ['id' => $CFG->defaultuserroleid]); role_change_permission($userrole->id, context_system::instance(), 'moodle/site:viewfullnames', CAP_PROHIBIT); $user = $this->getDataGenerator()->create_user(); $table = $this->create_and_setup_table(['fullname'], [], true, false, [], []); $this->assertStringContainsString(fullname($user, false), $table->format_row($user)['fullname']); } public function test_get_row_html() { $data = $this->generate_data(1, 5); $columns = $this->generate_columns(5); $headers = $this->generate_headers(5); $data = array_keys(array_flip($data[0])); $table = new flexible_table('tablelib_test'); $table->define_columns($columns); $table->define_headers($headers); $table->define_baseurl('/invalid.php'); $row = $table->get_row_html($data); $this->assertMatchesRegularExpression('/row 0 col 0/', $row); $this->assertMatchesRegularExpression('/<tr class=""/', $row); $this->assertMatchesRegularExpression('/<td class="cell c0"/', $row); } public function test_persistent_table() { global $SESSION; $data = $this->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); } /** * Helper method for preparing tables instances in {@link self::test_can_be_reset()}. * * @param string $tableid * @return testable_flexible_table */ protected function prepare_table_for_reset_test($tableid) { global $SESSION; unset($SESSION->flextable[$tableid]); $data = $this->generate_data(25, 3); $columns = array('column0', 'column1', 'column2'); $headers = $this->generate_headers(3); $table = new testable_flexible_table($tableid); $table->define_baseurl('/invalid.php'); $table->define_columns($columns); $table->define_headers($headers); $table->collapsible(true); $table->is_persistent(false); return $table; } public function test_can_be_reset() { // Table in its default state (as if seen for the first time), nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->setup(); $this->assertFalse($table->can_be_reset()); // Table in its default state with default sorting defined, nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $table->setup(); $this->assertFalse($table->can_be_reset()); // Table explicitly sorted by the default column & direction, nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $_GET['tsort'] = 'column1'; $_GET['tdir'] = SORT_DESC; $table->setup(); unset($_GET['tsort']); unset($_GET['tdir']); $this->assertFalse($table->can_be_reset()); // Table explicitly sorted twice by the default column & direction, nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $_GET['tsort'] = 'column1'; $_GET['tdir'] = SORT_DESC; $table->setup(); $table->setup(); // Set up again to simulate the second page request. unset($_GET['tsort']); unset($_GET['tdir']); $this->assertFalse($table->can_be_reset()); // Table sorted by other than default column, can be reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $_GET['tsort'] = 'column2'; $table->setup(); unset($_GET['tsort']); $this->assertTrue($table->can_be_reset()); // Table sorted by other than default direction, can be reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $_GET['tsort'] = 'column1'; $_GET['tdir'] = SORT_ASC; $table->setup(); unset($_GET['tsort']); unset($_GET['tdir']); $this->assertTrue($table->can_be_reset()); // Table sorted by the default column after another sorting previously selected. // This leads to different ORDER BY than just having a single sort defined, can be reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $table->sortable(true, 'column1', SORT_DESC); $_GET['tsort'] = 'column0'; $table->setup(); $_GET['tsort'] = 'column1'; $table->setup(); unset($_GET['tsort']); $this->assertTrue($table->can_be_reset()); // Table having some column collapsed, can be reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $_GET['thide'] = 'column2'; $table->setup(); unset($_GET['thide']); $this->assertTrue($table->can_be_reset()); // Table having some column explicitly expanded, nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $_GET['tshow'] = 'column2'; $table->setup(); unset($_GET['tshow']); $this->assertFalse($table->can_be_reset()); // Table after expanding a collapsed column, nothing to reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $_GET['thide'] = 'column0'; $table->setup(); $_GET['tshow'] = 'column0'; $table->setup(); unset($_GET['thide']); unset($_GET['tshow']); $this->assertFalse($table->can_be_reset()); // Table with some name filtering enabled, can be reset. $table = $this->prepare_table_for_reset_test(uniqid('tablelib_test_')); $_GET['tifirst'] = 'A'; $table->setup(); unset($_GET['tifirst']); $this->assertTrue($table->can_be_reset()); } /** * Test export in CSV format */ public function test_table_export() { $table = new flexible_table('tablelib_test_export'); $table->define_baseurl('/invalid.php'); $table->define_columns(['c1', 'c2', 'c3']); $table->define_headers(['Col1', 'Col2', 'Col3']); ob_start(); $table->is_downloadable(true); $table->is_downloading('csv'); $table->setup(); $table->add_data(['column0' => 'a', 'column1' => 'b', 'column2' => 'c']); $output = ob_get_contents(); ob_end_clean(); $this->assertEquals("Col1,Col2,Col3\na,b,c\n", substr($output, 3)); } /** * Test the initials functionality. * * @dataProvider initials_provider * @param string|null $getvalue * @param string|null $setvalue * @param string|null $finalvalue */ public function test_initials_first_set(?string $getvalue, ?string $setvalue, ?string $finalvalue): void { global $_GET; $this->resetAfterTest(true); $table = new flexible_table('tablelib_test'); $user = $this->getDataGenerator()->create_user(); $table->define_columns(['fullname']); $table->define_headers(['Fullname']); $table->define_baseurl('/invalid.php'); $table->initialbars(true); if ($getvalue !== null) { $_GET['tifirst'] = $getvalue; } if ($setvalue !== null) { $table->set_first_initial($setvalue); } $table->setup(); $this->assertEquals($finalvalue, $table->get_initial_first()); } /** * Test the initials functionality. * * @dataProvider initials_provider * @param string|null $getvalue * @param string|null $setvalue * @param string|null $finalvalue */ public function test_initials_last_set(?string $getvalue, ?string $setvalue, ?string $finalvalue): void { global $_GET; $this->resetAfterTest(true); $table = new flexible_table('tablelib_test'); $user = $this->getDataGenerator()->create_user(); $table->define_columns(['fullname']); $table->define_headers(['Fullname']); $table->define_baseurl('/invalid.php'); $table->initialbars(true); if ($getvalue !== null) { $_GET['tilast'] = $getvalue; } if ($setvalue !== null) { $table->set_last_initial($setvalue); } $table->setup(); $this->assertEquals($finalvalue, $table->get_initial_last()); } /** * Data for testing initials providers. * * @return array */ public function initials_provider(): array { return [ [null, null, null], ['A', null, 'A'], ['Z', null, 'Z'], [null, 'A', 'A'], [null, 'Z', 'Z'], ['A', 'Z', 'Z'], ['Z', 'A', 'A'], ]; } }
Close