diff --git a/lib/src/extensions.dart b/lib/src/extensions.dart index 569162c..27be656 100644 --- a/lib/src/extensions.dart +++ b/lib/src/extensions.dart @@ -259,6 +259,10 @@ extension DateTimeTimeExtension on DateTime { } return this; } + + bool get isWeekend => (weekday == DateTime.saturday) || (weekday == DateTime.sunday); + + bool get isWorkday => !isWeekend; } extension DurationTimeExtension on Duration { diff --git a/test/time_test.dart b/test/time_test.dart index 66cb573..8b08a93 100644 --- a/test/time_test.dart +++ b/test/time_test.dart @@ -656,6 +656,66 @@ void main() { expect(it.clamp(min: min, max: max), min); }); }); + group('Weekend', () { + test('monday is not weekend', () { + final it = DateTime(2022, DateTime.august, 1); + expect(it.isWeekend, isFalse); + }); + test('tuesday is not weekend', () { + final it = DateTime(2022, DateTime.august, 2); + expect(it.isWeekend, isFalse); + }); + test('wednesday is not weekend', () { + final it = DateTime(2022, DateTime.august, 3); + expect(it.isWeekend, isFalse); + }); + test('thursday is not weekend', () { + final it = DateTime(2022, DateTime.august, 4); + expect(it.isWeekend, isFalse); + }); + test('friday is not weekend', () { + final it = DateTime(2022, DateTime.august, 5); + expect(it.isWeekend, isFalse); + }); + test('saturday is weekend', () { + final it = DateTime(2022, DateTime.august, 6); + expect(it.isWeekend, isTrue); + }); + test('sunday is weekend', () { + final it = DateTime(2022, DateTime.august, 7); + expect(it.isWeekend, isTrue); + }); + }); + group('Workday', () { + test('monday is workday', () { + final it = DateTime(2022, DateTime.august, 1); + expect(it.isWorkday, isTrue); + }); + test('tuesday is workday', () { + final it = DateTime(2022, DateTime.august, 2); + expect(it.isWorkday, isTrue); + }); + test('wednesday is workday', () { + final it = DateTime(2022, DateTime.august, 3); + expect(it.isWorkday, isTrue); + }); + test('thursday is workday', () { + final it = DateTime(2022, DateTime.august, 4); + expect(it.isWorkday, isTrue); + }); + test('friday is workday', () { + final it = DateTime(2022, DateTime.august, 5); + expect(it.isWorkday, isTrue); + }); + test('saturday is not workday', () { + final it = DateTime(2022, DateTime.august, 6); + expect(it.isWorkday, isFalse); + }); + test('sunday is not workday', () { + final it = DateTime(2022, DateTime.august, 7); + expect(it.isWorkday, isFalse); + }); + }); }); group('Duration', () {