Files

38 lines
1.6 KiB
Dart
Raw Permalink Normal View History

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.');
});
}