*/ declare(strict_types = 1); use PHPUnit\Framework\TestCase; use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\Small; /** * This script contains tests for the time name splitter. */ #[small] #[CoversClass(\NodaTimeSplitter::class)] final class NodaTimeSplitterTest extends TestCase { /** * Test to check whether the HTML page is correctly generated. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplitSimpleDatesGerman():void { $output = NodaTimeSplitter::attempt_splitting("2. Januar 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("02.1.25 v. Chr"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-25", 1 => "-25", 2 => "01", 3 => "02", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.25 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 25); $output = NodaTimeSplitter::attempt_splitting("2.01.25 v. Chr"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-25", 1 => "-25", 2 => "01", 3 => "02", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.25 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 25); $output = NodaTimeSplitter::attempt_splitting("02.01.25 v. Chr"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-25", 1 => "-25", 2 => "01", 3 => "02", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.25 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 25); $output = NodaTimeSplitter::attempt_splitting("2.1.25 v. Chr"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-25", 1 => "-25", 2 => "01", 3 => "02", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.25 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 25); $output = NodaTimeSplitter::attempt_splitting("2.1.2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("02.01.2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("1920-1929"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("20er"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1920-1929"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1920er Jahre"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("Vor Dezember 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "2020", 2 => "12", 3 => "00", 4 => "+", 5 => "Vor", ]); self::assertEquals($output->toTimeName(), "Vor Dezember 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Vor 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "2019", 2 => "00", 3 => "00", 4 => "+", 5 => "Vor", ]); self::assertEquals($output->toTimeName(), "Vor 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Nach Januar 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "?", 2 => "01", 3 => "00", 4 => "+", 5 => "Nach", ]); self::assertEquals($output->toTimeName(), "Nach Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Januar 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Januar 1217"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1217", 1 => "1217", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 1217"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1217); $output = NodaTimeSplitter::attempt_splitting("Januar 1520"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1520", 1 => "1520", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 1520"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1520); $output = NodaTimeSplitter::attempt_splitting("Januar 1001"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1001", 1 => "1001", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 1001"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1001); $output = NodaTimeSplitter::attempt_splitting("Januar 2780"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2780", 1 => "2780", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2780"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2780); $output = NodaTimeSplitter::attempt_splitting("Nach 60er Jahre"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1970", 1 => "?", 2 => "00", 3 => "00", 4 => "+", 5 => "Nach", ]); self::assertEquals($output->toTimeName(), "Nach 1969"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1969); $output = NodaTimeSplitter::attempt_splitting("Nach 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2021", 1 => "?", 2 => "00", 3 => "00", 4 => "+", 5 => "Nach", ]); self::assertEquals($output->toTimeName(), "Nach 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Bis Januar 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "2020", 2 => "01", 3 => "00", 4 => "+", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Januar 2020"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); // Intl' month: 2020-01 $output = NodaTimeSplitter::attempt_splitting("2020-01"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Januar 2020 v. Chr."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2020", 1 => "-2020", 2 => "01", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2020 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); // 5-Digit timespans BCE $output = NodaTimeSplitter::attempt_splitting("40000-25000 vor Christus"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-40000", 1 => "-25000", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "40000-25000 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 32500); // 5-Digit timespans BCE $output = NodaTimeSplitter::attempt_splitting("40000-25000 v.C."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-40000", 1 => "-25000", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "40000-25000 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 32500); $output = NodaTimeSplitter::attempt_splitting("20. Jahrhundert v. Chr."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2000", 1 => "-1901", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "2000-1901 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1950); $output = NodaTimeSplitter::attempt_splitting("20. Jh."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20. Jhd."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20. Jhdt."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20. Jahrhundert"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20.-19. Jahrhundert v. Chr."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2000", 1 => "-1801", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "2000-1801 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1900); $output = NodaTimeSplitter::attempt_splitting("Bis 20.-19. Jahrhundert v. Chr."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "-1801", 2 => "00", 3 => "00", 4 => "-", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis 1801 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1801); $output = NodaTimeSplitter::attempt_splitting("15. 11. 1978"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1978", 1 => "1978", 2 => "11", 3 => "15", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "15.11.1978"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1978); $output = NodaTimeSplitter::attempt_splitting("6 November 1978"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1978", 1 => "1978", 2 => "11", 3 => "06", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "06.11.1978"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1978); } /** * Test to check whether the HTML page is correctly generated. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplitSimpleDatesEnglish():void { $output = NodaTimeSplitter::attempt_splitting("1925 BCE"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-1925", 1 => "-1925", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "1925 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1925 CE"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1925", 1 => "1925", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1925"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); } /** * Test to check whether the HTML page is correctly generated. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplitSimpleDatesHungarian():void { $output = NodaTimeSplitter::attempt_splitting("Kr. e. 2. század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-200", 1 => "-101", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "200-101 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 150); $output = NodaTimeSplitter::attempt_splitting("2020.01.02."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("2020. januar. 2."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("2020.01.2."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("2020.1.2."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("2020. Januar 2."); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("2020-01-02"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "01", 3 => "02", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "02.01.2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("1920-tól 1929-ig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1920-1929 között"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1920-től 1929-ig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); // From 1920 onwards $output = NodaTimeSplitter::attempt_splitting("1920 utántól"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "?", 2 => "00", 3 => "00", 4 => "+", 5 => "Seit", ]); self::assertEquals($output->toTimeName(), "Seit 1920"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1920); $output = NodaTimeSplitter::attempt_splitting("1920-es évek"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1920", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1920-1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925); $output = NodaTimeSplitter::attempt_splitting("1920-es évekig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "1929", 2 => "00", 3 => "00", 4 => "+", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis 1929"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1929); $output = NodaTimeSplitter::attempt_splitting("2020. Januar"); self::assertNotEmpty($output); self::assertEquals([ 0 => "2020", 1 => "2020", 2 => "01", 3 => "00", 4 => "+", 5 => "", ], $output->toOldFormat()); self::assertEquals($output->toTimeName(), "Januar 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("Kr. e. 2020. Januar"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2020", 1 => "-2020", 2 => "01", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "Januar 2020 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); $output = NodaTimeSplitter::attempt_splitting("20. sz"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("III. század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "201", 1 => "300", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "201-300 n. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 251); $output = NodaTimeSplitter::attempt_splitting("20th century"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20. század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("20.század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "1901", 1 => "2000", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "1901-2000"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951); $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20. század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2000", 1 => "-1901", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "2000-1901 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1950); $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20.-19. század"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "-2000", 1 => "-1801", 2 => "00", 3 => "00", 4 => "-", 5 => "", ]); self::assertEquals($output->toTimeName(), "2000-1801 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1900); $output = NodaTimeSplitter::attempt_splitting("Kr. e. 20.-19. század-ig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "-1801", 2 => "00", 3 => "00", 4 => "-", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis 1801 v. Chr."); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1801); /* * TODO $output = NodaTimeSplitter::attempt_splitting("1900 előtt"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "1899", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "Vor 1900"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1899); */ $output = NodaTimeSplitter::attempt_splitting("1900-ig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "1900", 2 => "00", 3 => "00", 4 => "+", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis 1900"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1900); $output = NodaTimeSplitter::attempt_splitting("1900ig"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "1900", 2 => "00", 3 => "00", 4 => "+", 5 => "Bis", ]); self::assertEquals($output->toTimeName(), "Bis 1900"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1900); $output = NodaTimeSplitter::attempt_splitting("2020. december előtt"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "?", 1 => "2020", 2 => "12", 3 => "00", 4 => "+", 5 => "Vor", ]); self::assertEquals($output->toTimeName(), "Vor Dezember 2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); } /** * Test to check whether the HTML page is correctly generated. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplitSimpleDatesUkrainian():void { $output = NodaTimeSplitter::attempt_splitting("2020 p"); self::assertNotEmpty($output); self::assertEquals($output->toOldFormat(), [ 0 => "2020", 1 => "2020", 2 => "00", 3 => "00", 4 => "+", 5 => "", ]); self::assertEquals($output->toTimeName(), "2020"); self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020); } /** * Test to check special cases can be parsed. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplittingFromTill():void { // Regular $output = NodaTimeSplitter::attempt_splitting_from_till("2004.01.-2004.02."); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "Januar 2004", 'end_name' => "Februar 2004", "start_year" => '2004', "end_year" => '2004', 'start_date' => '2004-01-01', 'end_date' => '2004-02-31', "counting_time_year" => "2004", "counting_time_month" => "02", "counting_time_day" => "01", "counting_time_bcce" => "+", ]); // Rewritten / Hungarian YYYY.MM.-MM. $output = NodaTimeSplitter::attempt_splitting_from_till("2004.01.-02."); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "Januar 2004", 'end_name' => "Februar 2004", "start_year" => '2004', "end_year" => '2004', 'start_date' => '2004-01-01', 'end_date' => '2004-02-31', "counting_time_year" => "2004", "counting_time_month" => "02", "counting_time_day" => "01", "counting_time_bcce" => "+", ]); // Rewritten / Hungarian YYYY.MM.-MM. $output = NodaTimeSplitter::attempt_splitting_from_till("2003.04-05."); self::assertNotEmpty($output); // Rewritten / Hungarian YYYY.MM.-MM. $output = NodaTimeSplitter::attempt_splitting_from_till("1981. július-augusztus"); self::assertNotEmpty($output); $output = NodaTimeSplitter::attempt_splitting_from_till("2019.03.14.,04.15."); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "14.03.2019", 'end_name' => "15.04.2019", "start_year" => '2019', "end_year" => '2019', 'start_date' => '2019-03-14', 'end_date' => '2019-04-15', "counting_time_year" => "2019", "counting_time_month" => "03", "counting_time_day" => "30", "counting_time_bcce" => "+", ]); $output = NodaTimeSplitter::attempt_splitting_from_till("2019.03.14-15"); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "14.03.2019", 'end_name' => "15.03.2019", "start_year" => '2019', "end_year" => '2019', 'start_date' => '2019-03-14', 'end_date' => '2019-03-15', "counting_time_year" => "2019", "counting_time_month" => "03", "counting_time_day" => "15", "counting_time_bcce" => "+", ]); // Rewritten / Hungarian YYYY.MM.-MM. $output = NodaTimeSplitter::attempt_splitting_from_till("17-19.század"); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "1601", 'end_name' => "1900", "start_year" => '1601', "end_year" => '1900', 'start_date' => '1601-01-01', 'end_date' => '1900-12-31', "counting_time_year" => "1751", "counting_time_month" => "01", "counting_time_day" => "01", "counting_time_bcce" => "+", ]); // Rewritten / 1950-60-as évek $output = NodaTimeSplitter::attempt_splitting_from_till("1950-60-as évek"); self::assertNotEmpty($output); self::assertEquals($output, [ 'start_name' => "1950", 'end_name' => "1969", "start_year" => '1950', "end_year" => '1969', 'start_date' => '1950-01-01', 'end_date' => '1969-12-31', "counting_time_year" => "1960", "counting_time_month" => "01", "counting_time_day" => "01", "counting_time_bcce" => "+", ]); // Rewritten / 1950-60-as évek $output = NodaTimeSplitter::attempt_splitting("1400-1100 v. Chr."); self::assertNotEmpty($output); self::assertEquals('-1400', $output->start_year); self::assertEquals('-1400-01-01', $output->start_date); // Same start as end with day $output = NodaTimeSplitter::attempt_splitting("11.10.1991-11.10.1991"); self::assertNotEmpty($output); self::assertEquals('1991', $output->start_year); self::assertEquals('1991-10-11', $output->start_date); self::assertEquals('1991', $output->end_year); self::assertEquals('1991-10-11', $output->end_date); } /** * Test to check whether the HTML page is correctly generated. * * @author Joshua Ramon Enslin * @group ValidOutput * @small * * @return void */ public function testSplitDoesNotWorkWhenItShouldNot():void { $output = NodaTimeSplitter::attempt_splitting(""); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("1.2.2020-2.2.2020"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("2020 Januar 2-2020 Februar 2"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("2020 Januar-2020 Februar"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("Januar-Februar"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("13.13.2022"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("2022-13-13"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("40.10.2022"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("2022-10-40"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("6;November 1978"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("65497028c51eb"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("6552cf08b0196 test tag"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("1978. július7"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("1978. július 7 elött"); self::assertEmpty($output); $output = NodaTimeSplitter::attempt_splitting("Anfang September 1903"); self::assertEmpty($output); # $output = NodaTimeSplitter::attempt_splitting("Nach 1944-1964"); # self::assertEmpty($output); } }