diff --git a/GameEngine/Generator.php b/GameEngine/Generator.php index ae51fabc..3b0c6d52 100755 --- a/GameEngine/Generator.php +++ b/GameEngine/Generator.php @@ -124,24 +124,12 @@ class MyGenerator */ public function getTimeFormat($time) { - $time = (int) $time; - $min = 0; - $hr = 0; + $time = max(0, (int) $time); + $hr = intdiv($time, 3600); + $min = intdiv($time % 3600, 60); + $seconds = $time % 60; - while ($time >= 60) { - $time -= 60; - $min++; - } - - while ($min >= 60) { - $min -= 60; - $hr++; - } - - if ($min < 10) $min = "0" . $min; - if ($time < 10) $time = "0" . $time; - - return $hr . ":" . $min . ":" . $time; + return sprintf('%d:%02d:%02d', $hr, $min, $seconds); } /** @@ -323,4 +311,4 @@ class MyGenerator } } -$generator = new MyGenerator(); \ No newline at end of file +$generator = new MyGenerator(); diff --git a/tests/regression/GetTimeFormatTest.php b/tests/regression/GetTimeFormatTest.php new file mode 100644 index 00000000..40b95123 --- /dev/null +++ b/tests/regression/GetTimeFormatTest.php @@ -0,0 +1,31 @@ + '0:00:00', + -1 => '0:00:00', + 0 => '0:00:00', + 1 => '0:00:01', + 59 => '0:00:59', + 60 => '0:01:00', + 3599 => '0:59:59', + 3600 => '1:00:00', + 86399 => '23:59:59', + 86400 => '24:00:00', + 90000 => '25:00:00', +]; + +foreach ($cases as $seconds => $expected) { + $actual = $generator->getTimeFormat($seconds); + + if ($actual !== $expected) { + fwrite( + STDERR, + "getTimeFormat($seconds): expected $expected, got $actual.\n" + ); + exit(1); + } +} + +fwrite(STDOUT, "getTimeFormat regression test passed.\n");