AutorÃa | Ultima modificación | Ver Log |
<?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;use frozen_clock;use incrementing_clock;/*** Tests for testing clocks.** @package core* @copyright 2024 Andrew Lyons <andrew@nicols.co.uk>* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later*/final class clock_test extends \advanced_testcase {/*** Test the incrementing mock clock.** @covers \incrementing_clock*/public function test_clock_with_incrementing(): void {require_once(__DIR__ . '/../classes/incrementing_clock.php');$clock = new incrementing_clock();$this->assertInstanceOf(\incrementing_clock::class, $clock);$initialtime = $clock->now()->getTimestamp();// Test the functionality.$this->assertEquals($initialtime + 1, $clock->now()->getTimestamp());$this->assertEquals($initialtime + 2, $clock->time());$this->assertEquals($initialtime + 3, $clock->now()->getTimestamp());// Specify a specific start time.$clock = new incrementing_clock(12345);$this->assertEquals(12345, $clock->now()->getTimestamp());$this->assertEquals(12346, $clock->time());$this->assertEquals(12347, $clock->now()->getTimestamp());$clock->set_to(12345);$this->assertEquals(12345, $clock->time());$this->assertEquals(12346, $clock->time());$clock->bump();$this->assertEquals(12348, $clock->time());$clock->bump();$this->assertEquals(12350, $clock->time());$clock->bump(5);$this->assertEquals(12356, $clock->time());}/*** Test the incrementing mock clock.** @covers \frozen_clock*/public function test_mock_clock_with_frozen(): void {require_once(__DIR__ . '/../classes/frozen_clock.php');$clock = new frozen_clock();// Test the functionality.$initialtime = $clock->now()->getTimestamp();$this->assertEquals($initialtime, $clock->now()->getTimestamp());$this->assertEquals($initialtime, $clock->now()->getTimestamp());$this->assertEquals($initialtime, $clock->now()->getTimestamp());$this->assertEquals($initialtime, $clock->time());// Specify a specific start time.$clock = new frozen_clock(12345);$initialtime = $clock->now();$this->assertEquals($initialtime, $clock->now());$this->assertEquals($initialtime, $clock->now());$this->assertEquals($initialtime, $clock->now());$clock->set_to(12345);$this->assertEquals(12345, $clock->now()->getTimestamp());$this->assertEquals(12345, $clock->now()->getTimestamp());$this->assertEquals(12345, $clock->now()->getTimestamp());$this->assertEquals(12345, $clock->time());$clock->bump();$this->assertEquals(12346, $clock->time());$clock->bump();$this->assertEquals(12347, $clock->time());$clock->bump(5);$this->assertEquals(12352, $clock->time());}}