39 lines
1.6 KiB
Dart
39 lines
1.6 KiB
Dart
import 'package:cookit/src/planning/day.dart';
|
||
import 'package:cookit/src/planning/day_format.dart';
|
||
import 'package:flutter_test/flutter_test.dart';
|
||
import 'package:intl/date_symbol_data_local.dart';
|
||
|
||
void main() {
|
||
setUpAll(() => initializeDateFormatting('de'));
|
||
|
||
final friday = DateTime.utc(2026, 10, 23);
|
||
|
||
test('weekStartOf honours the configured first weekday', () {
|
||
expect(weekStartOf(friday, DateTime.monday), DateTime.utc(2026, 10, 19));
|
||
expect(weekStartOf(friday, DateTime.tuesday), DateTime.utc(2026, 10, 20));
|
||
expect(weekStartOf(friday, DateTime.friday), friday);
|
||
expect(weekStartOf(friday, DateTime.saturday), DateTime.utc(2026, 10, 17));
|
||
});
|
||
|
||
test('days survive daylight saving time and storage', () {
|
||
// Summer time ends in Germany on 25 Oct 2026.
|
||
expect(addDays(DateTime.utc(2026, 10, 24), 2), DateTime.utc(2026, 10, 26));
|
||
expect(weekDays(DateTime.utc(2026, 10, 26)).last, DateTime.utc(2026, 11, 1));
|
||
expect(dayKey(friday), '2026-10-23');
|
||
expect(parseDayKey('2026-10-23'), friday);
|
||
expect(dayOf(DateTime(2026, 10, 23, 23, 59)), friday);
|
||
});
|
||
|
||
test('calendarWeek is the ISO week, also across the turn of the year', () {
|
||
expect(calendarWeek(DateTime.utc(2026, 10, 19)), 43);
|
||
expect(calendarWeek(DateTime.utc(2026, 10, 20)), 43); // a Tuesday-start week
|
||
expect(calendarWeek(DateTime.utc(2026, 12, 28)), 53);
|
||
expect(calendarWeek(DateTime.utc(2027, 1, 4)), 1);
|
||
});
|
||
|
||
test('dayRange', () {
|
||
expect(dayRange(DateTime.utc(2026, 10, 19), DateTime.utc(2026, 10, 25)), '19.–25. Okt.');
|
||
expect(dayRange(DateTime.utc(2026, 10, 26), DateTime.utc(2026, 11, 1)), '26. Okt. – 1. Nov.');
|
||
});
|
||
}
|