Rewrite incomplete time span spellings to extend parsable and splittable time names
This commit is contained in:
@ -132,6 +132,18 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("1920-1929");
|
||||
self::assertEquals($output, [
|
||||
0 => "1920",
|
||||
1 => "1929",
|
||||
2 => "00",
|
||||
3 => "00",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("1920er Jahre");
|
||||
self::assertEquals($output, [
|
||||
0 => "1920",
|
||||
@ -488,6 +500,30 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "02.01.2020");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("2020.01.2.");
|
||||
self::assertEquals($output, [
|
||||
0 => "2020",
|
||||
1 => "2020",
|
||||
2 => "01",
|
||||
3 => "02",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "02.01.2020");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("2020.1.2.");
|
||||
self::assertEquals($output, [
|
||||
0 => "2020",
|
||||
1 => "2020",
|
||||
2 => "01",
|
||||
3 => "02",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "02.01.2020");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 2020);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("2020. Januar 2.");
|
||||
self::assertEquals($output, [
|
||||
0 => "2020",
|
||||
@ -548,6 +584,19 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1920-1929");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1925);
|
||||
|
||||
// From 1920 onwards
|
||||
$output = NodaTimeSplitter::attempt_splitting("1920 utántól");
|
||||
self::assertEquals($output, [
|
||||
0 => "1920",
|
||||
1 => "?",
|
||||
2 => "00",
|
||||
3 => "00",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "Seit 1920");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1920);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("1920-es évek");
|
||||
self::assertEquals($output, [
|
||||
0 => "1920",
|
||||
@ -608,6 +657,18 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "201-300 n. Chr.");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 251);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("20th century");
|
||||
self::assertEquals($output, [
|
||||
0 => "1901",
|
||||
1 => "2000",
|
||||
2 => "00",
|
||||
3 => "00",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1901-2000");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("20. század");
|
||||
self::assertEquals($output, [
|
||||
0 => "1901",
|
||||
@ -620,6 +681,18 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1901-2000");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("20.század");
|
||||
self::assertEquals($output, [
|
||||
0 => "1901",
|
||||
1 => "2000",
|
||||
2 => "00",
|
||||
3 => "00",
|
||||
4 => "+",
|
||||
5 => "",
|
||||
]);
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToTimeName($output), "1901-2000");
|
||||
self::assertEquals(NodaTimeSplitter::timePartsToCountingYear($output), 1951);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("Kr. e. 20. század");
|
||||
self::assertEquals($output, [
|
||||
0 => "-2000",
|
||||
@ -658,6 +731,109 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test to check special cases can be parsed.
|
||||
*
|
||||
* @author Joshua Ramon Enslin <joshua@museum-digital.de>
|
||||
* @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',
|
||||
"counting_time_year" => "2004",
|
||||
"counting_time_month" => "01",
|
||||
"counting_time_day" => "16",
|
||||
"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',
|
||||
"counting_time_year" => "2004",
|
||||
"counting_time_month" => "01",
|
||||
"counting_time_day" => "16",
|
||||
"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',
|
||||
"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',
|
||||
"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',
|
||||
"counting_time_year" => "1750",
|
||||
"counting_time_month" => "06",
|
||||
"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',
|
||||
"counting_time_year" => "1959",
|
||||
"counting_time_month" => "06",
|
||||
"counting_time_day" => "01",
|
||||
"counting_time_bcce" => "+",
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Test to check whether the HTML page is correctly generated.
|
||||
*
|
||||
@ -670,40 +846,43 @@ final class NodaTimeSplitterTest extends TestCase {
|
||||
public function testSplitDoesNotWorkWhenItShouldNot():void {
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("1.2.2020-2.2.2020");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("2020 Januar 2-2020 Februar 2");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("2020 Januar-2020 Februar");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("Januar-Februar");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("13.13.2022");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
$output = NodaTimeSplitter::attempt_splitting("2022-13-13");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("40.10.2022");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
$output = NodaTimeSplitter::attempt_splitting("2022-10-40");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("6;November 1978");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("65497028c51eb");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
$output = NodaTimeSplitter::attempt_splitting("6552cf08b0196 test tag");
|
||||
self::assertEquals($output, []);
|
||||
self::assertEmpty($output);
|
||||
|
||||
$output = NodaTimeSplitter::attempt_splitting("Anfang September 1903");
|
||||
self::assertEmpty($output);
|
||||
|
||||
# $output = NodaTimeSplitter::attempt_splitting("Nach 1944-1964");
|
||||
# self::assertEquals($output, []);
|
||||
# self::assertEmpty($output);
|
||||
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user