░▒▓████████████████████████████████▓▒░ ░▒▓█ ▓▒░ ░▒▓█ ~ S W A M P ~ ▓▒░ ░▒▓█ ▓▒░ ░▒▓████████████████████████████████▓▒░
pplmvsvm
LOCATION:
/var/www/moodle/public/calendar/tests/output
☗ ROOT
↻ REFRESH
✎ CARVE FLESH
EDITING: humantimeperiod_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/>. namespace core_calendar\output; use DateTime; /** * Tests for humantimeperiod_test class. * * @covers \core_calendar\output\humantimeperiod * @package core_calendar * @category test * @copyright 2025 Sara Arjona <sara@moodle.com> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ final class humantimeperiod_test extends \advanced_testcase { /** * Test format_period() method. * * @dataProvider provider_format_period * @param int|null $addsecondsend The number of seconds to add to the current time for the end date. * @param bool $expectedendnull Whether the end date is null. */ public function test_format_period( ?int $addsecondsend, bool $expectedendnull, ): void { $this->resetAfterTest(); // 26 February 2025 15:30:00 (GMT). $clock = $this->mock_clock_with_frozen(1740583800); $timestampstart = $clock->time(); $timestampend = is_null($addsecondsend) ? null : $clock->time() + $addsecondsend; $humandateend = null; if (!$expectedendnull) { $humandateend = humandate::create_from_timestamp( timestamp: $timestampend, timeonly: (abs($addsecondsend) < 1800), ); } $expected = [ 'startdate' => humandate::create_from_timestamp($timestampstart), 'enddate' => $humandateend, ]; $humantimeperiod = humantimeperiod::create_from_timestamp($timestampstart, $timestampend); $reflection = new \ReflectionClass($humantimeperiod); $method = $reflection->getMethod('format_period'); $method->setAccessible(true); $result = $method->invoke($humantimeperiod); $this->compare_output($expected, $result); } /** * Data provider. * * @return array */ public static function provider_format_period(): array { return [ 'Same start and end' => [ 'addsecondsend' => 0, 'expectedendnull' => true, ], 'Null end date' => [ 'addsecondsend' => null, 'expectedendnull' => true, ], '1 day ahead' => [ 'addsecondsend' => 87000, 'expectedendnull' => false, ], '1 day behind' => [ 'addsecondsend' => -87000, 'expectedendnull' => false, ], '29 minutes ahead' => [ 'addsecondsend' => 1799, 'expectedendnull' => false, ], '30 minutes ahead (Midnight)' => [ 'addsecondsend' => 1800, 'expectedendnull' => false, ], '31 minutes ahead (Midnight)' => [ 'addsecondsend' => 1801, 'expectedendnull' => false, ], ]; } /** * Test create_from_timestamp. */ public function test_create_from_timestamp(): void { $this->resetAfterTest(); $clock = \core\di::get(\core\clock::class); $timestamp = $clock->time(); $humantimeperiod = humantimeperiod::create_from_timestamp($timestamp, $timestamp + 3600); $this->assertInstanceOf(humantimeperiod::class, $humantimeperiod); } /** * Test create_from_timestamp with enddatetime null. */ public function test_create_from_timestamp_endnull(): void { $this->resetAfterTest(); $clock = $this->mock_clock_with_frozen(); $timestamp = $clock->time(); $humantimeperiod = humantimeperiod::create_from_timestamp($timestamp, null); $this->assertInstanceOf(humantimeperiod::class, $humantimeperiod); } /** * Test create_from_datetime. */ public function test_create_from_datetime(): void { $this->resetAfterTest(); $humantimeperiod = humantimeperiod::create_from_datetime(new DateTime(), new DateTime('+1 hour')); $this->assertInstanceOf(humantimeperiod::class, $humantimeperiod); } /** * Test create_from_datetime with enddatetime null. */ public function test_create_from_datetime_endnull(): void { $this->resetAfterTest(); $humantimeperiod = humantimeperiod::create_from_datetime(new DateTime(), null); $this->assertInstanceOf(humantimeperiod::class, $humantimeperiod); } /** * Compare humantimeperiod output. * * @param array $expected The expected output. * @param array $actual The actual output. */ protected function compare_output( array $expected, array $actual, ): void { $fields = ['startdate', 'enddate']; foreach ($fields as $field) { $this->assertEquals($expected[$field], $actual[$field], "Field $field does not match"); } } }
CANCEL
Name
Type
Size
Modified
Actions
↩ ..
DIR
—
—
📄 humandate_test.php
PHP
10.5 KB
2026-02-11 01:44
EDIT
📄 humantimeperiod_test.php
PHP
5.5 KB
2026-02-11 01:44
EDIT