diff --git a/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php b/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
index 2dd24809..ddc03cad 100644
--- a/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
+++ b/4dev/tests/Combined/CoreLibsCombinedDateTimeTest.php
@@ -458,6 +458,47 @@ final class CoreLibsCombinedDateTimeTest extends TestCase
];
}
+ /**
+ * Undocumented function
+ *
+ * @return array
+ */
+ public function dateRangeHasWeekendProvider(): array
+ {
+ return [
+ 'no weekend' => [
+ '2023-07-03',
+ '2023-07-04',
+ false
+ ],
+ 'start weekend sat' => [
+ '2023-07-01',
+ '2023-07-04',
+ true
+ ],
+ 'start weekend sun' => [
+ '2023-07-02',
+ '2023-07-04',
+ true
+ ],
+ 'end weekend sat' => [
+ '2023-07-03',
+ '2023-07-08',
+ true
+ ],
+ 'end weekend sun' => [
+ '2023-07-03',
+ '2023-07-09',
+ true
+ ],
+ 'long period > 6 days' => [
+ '2023-07-03',
+ '2023-07-27',
+ true
+ ]
+ ];
+ }
+
/**
* date string convert test
*
@@ -780,6 +821,29 @@ final class CoreLibsCombinedDateTimeTest extends TestCase
$output
);
}
+
+ /**
+ * Undocumented function
+ *
+ * @covers ::dateRangeHasWeekend
+ * @dataProvider dateRangeHasWeekendProvider
+ * @testdox dateRangeHasWeekend $start_date and $end_date are expected weekend $expected [$_dataName]
+ *
+ * @param string $start_date
+ * @param string $end_date
+ * @param bool $expected
+ * @return void
+ */
+ public function testDateRangeHasWeekend(
+ string $start_date,
+ string $end_date,
+ bool $expected
+ ): void {
+ $this->assertEquals(
+ $expected,
+ \CoreLibs\Combined\DateTime::dateRangeHasWeekend($start_date, $end_date)
+ );
+ }
}
// __END__
diff --git a/www/admin/class_test.datetime.php b/www/admin/class_test.datetime.php
index 56c8854d..a20fb41c 100644
--- a/www/admin/class_test.datetime.php
+++ b/www/admin/class_test.datetime.php
@@ -143,6 +143,26 @@ print "DATE-dow[$date];invalid: " . DateTime::setWeekdayNameFromDate($date) . "<
print "DATE-dow[$date],long;invalid: " . DateTime::setWeekdayNameFromDate($date, true) . "
";
print "DOW-date[$date];invalid: " . DateTime::setWeekdayNumberFromDate($date) . "
";
+// check date range includes a weekend
+// does not:
+$start_date = '2023-07-03';
+$end_date = '2023-07-05';
+print "Has Weekend: " . $start_date . " ~ " . $end_date . ": "
+ . Dgs::prBl(DateTime::dateRangeHasWeekend($start_date, $end_date)) . "
";
+$start_date = '2023-07-03';
+$end_date = '2023-07-10';
+print "Has Weekend: " . $start_date . " ~ " . $end_date . ": "
+ . Dgs::prBl(DateTime::dateRangeHasWeekend($start_date, $end_date)) . "
";
+$start_date = '2023-07-03';
+$end_date = '2023-07-31';
+print "Has Weekend: " . $start_date . " ~ " . $end_date . ": "
+ . Dgs::prBl(DateTime::dateRangeHasWeekend($start_date, $end_date)) . "
";
+$start_date = '2023-07-01';
+$end_date = '2023-07-03';
+print "Has Weekend: " . $start_date . " ~ " . $end_date . ": "
+ . Dgs::prBl(DateTime::dateRangeHasWeekend($start_date, $end_date)) . "
";
+
+
print "