From 14b0d8037d2431bdc6ae83a6a7ca1126ccf2810c Mon Sep 17 00:00:00 2001 From: Joshua Ramon Enslin Date: Sat, 26 Sep 2020 14:15:15 +0200 Subject: [PATCH] Add tests for splitting Hungarian dates --- src/NodaTimeSplitter.php | 4 +- tests/NodaTimeSplitterTest.php | 177 +++++++++++++++++++++++++++++++++ 2 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 tests/NodaTimeSplitterTest.php diff --git a/src/NodaTimeSplitter.php b/src/NodaTimeSplitter.php index 8eb0d22..abade80 100644 --- a/src/NodaTimeSplitter.php +++ b/src/NodaTimeSplitter.php @@ -388,11 +388,11 @@ final class NodaTimeSplitter { $end = $start; $start = $startToSet; } - return [$start, $end, $output[2], $output[3], '-']; + return [$start, $end, $output[2], $output[3], '-', ""]; } } - if (preg_match("/^[0-9][0-9][0-9][0-9]\-től(\ |\-)[0-9][0-9][0-9][0-9]\-ig$/", $datum)) { + if (preg_match("/^[0-9][0-9][0-9][0-9]\-t(ő|ó)l(\ |\-)[0-9][0-9][0-9][0-9]\-ig$/", $datum)) { $start = substr($datum, 0, 4); $end = substr($datum, -7, 4); return [$start, $end, "00", "00", "+", ""]; diff --git a/tests/NodaTimeSplitterTest.php b/tests/NodaTimeSplitterTest.php new file mode 100644 index 0000000..c6c6047 --- /dev/null +++ b/tests/NodaTimeSplitterTest.php @@ -0,0 +1,177 @@ + + */ +declare(strict_types = 1); +use PHPUnit\Framework\TestCase; +require_once __DIR__ . "/../src/NodaTimeSplitter.php"; +require_once __DIR__ . "/../../MD_STD/MD_STD.php"; + +/** + * Tests for home page. + */ +final class NodaTimeSplitterTest extends TestCase { + + /** + * Test to check whether the HTML page is correctly generated. + * + * @author Joshua Ramon Enslin + * @group ValidOutput + * + * @return void + */ + public function testSplitSimpleDatesHungarian():void { + + $output = NodaTimeSplitter::attempt_splitting("2020.01.02."); + self::assertEquals($output, [ + 0 => "2020", + 1 => "2020", + 2 => "01", + 3 => "02", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "02.01.2020"); + + $output = NodaTimeSplitter::attempt_splitting("2020. Januar 2."); + self::assertEquals($output, [ + 0 => "2020", + 1 => "2020", + 2 => "01", + 3 => "02", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "02.01.2020"); + + $output = NodaTimeSplitter::attempt_splitting("1920-tól 1929-ig"); + self::assertEquals($output, [ + 0 => "1920", + 1 => "1929", + 2 => "00", + 3 => "00", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929"); + + $output = NodaTimeSplitter::attempt_splitting("1920-1929 között"); + self::assertEquals($output, [ + 0 => "1920", + 1 => "1929", + 2 => "00", + 3 => "00", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929"); + + $output = NodaTimeSplitter::attempt_splitting("1920-től 1929-ig"); + self::assertEquals($output, [ + 0 => "1920", + 1 => "1929", + 2 => "00", + 3 => "00", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929"); + + $output = NodaTimeSplitter::attempt_splitting("1920-es évek"); + self::assertEquals($output, [ + 0 => "1920", + 1 => "1929", + 2 => "00", + 3 => "00", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929"); + + $output = NodaTimeSplitter::attempt_splitting("2020. Januar"); + self::assertEquals($output, [ + 0 => "2020", + 1 => "2020", + 2 => "01", + 3 => "00", + 4 => "+", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "Januar 2020"); + + $output = NodaTimeSplitter::attempt_splitting("Kr. e. 2020. Januar"); + self::assertEquals($output, [ + 0 => "-2020", + 1 => "-2020", + 2 => "01", + 3 => "00", + 4 => "-", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "Januar 2020 v. Chr."); + + $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20. század"); + self::assertEquals($output, [ + 0 => "-2000", + 1 => "-1901", + 2 => "00", + 3 => "00", + 4 => "-", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "2000-1901 v. Chr."); + + $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20.-19. század"); + self::assertEquals($output, [ + 0 => "-2000", + 1 => "-1801", + 2 => "00", + 3 => "00", + 4 => "-", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "2000-1801 v. Chr."); + + $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20.-19. század-ig"); + self::assertEquals($output, [ + 0 => "?", + 1 => "-1801", + 2 => "00", + 3 => "00", + 4 => "-", + 5 => "", + ]); + self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "Bis 1801 v. Chr."); + + } + + /** + * Test to check whether the HTML page is correctly generated. + * + * @author Joshua Ramon Enslin + * @group ValidOutput + * + * @return void + */ + public function testSplitDoesNotWorkWhenItShouldNot():void { + + $output = NodaTimeSplitter::attempt_splitting(""); + self::assertEquals($output, []); + + $output = NodaTimeSplitter::attempt_splitting("1.2.2020-2.2.2020"); + self::assertEquals($output, []); + + $output = NodaTimeSplitter::attempt_splitting("2020 Januar 2-2020 Februar 2"); + self::assertEquals($output, []); + + $output = NodaTimeSplitter::attempt_splitting("2020 Januar-2020 Februar"); + self::assertEquals($output, []); + + $output = NodaTimeSplitter::attempt_splitting("Januar-Februar"); + self::assertEquals($output, []); + + } + +}