Skip to content

Commit

Permalink
fix: avoid superfluous dates when maxDate is set in VisibleDateRange.…
Browse files Browse the repository at this point in the history
…days

Fixes: #93
  • Loading branch information
JonasWanke committed Aug 6, 2021
1 parent 4f3aa42 commit e864409
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 3 deletions.
6 changes: 3 additions & 3 deletions lib/src/date/visible_date_range.dart
Expand Up @@ -145,11 +145,11 @@ class DaysVisibleDateRange extends VisibleDateRange {
}

double _getMinimumPageForFocus(double focusPage) {
var page = focusPage;
var page = focusPage - visibleDayCount;
while (true) {
final target = getTargetPageForFocus(page);
if (target + visibleDayCount > page) return target;
page -= swipeRange;
if (target + visibleDayCount > focusPage) return target;
page += swipeRange;
}
}

Expand Down
22 changes: 22 additions & 0 deletions test/date/visible_date_range_test.dart
@@ -1,7 +1,9 @@
import 'package:glados/glados.dart';
import 'package:test/test.dart';
import 'package:timetable/timetable.dart';
import 'package:timetable/src/utils.dart';
import 'package:tuple_glados/tuple_glados.dart';
import 'package:supercharged/supercharged.dart';

void main() {
group('VisibleDateRange.days', () {
Expand All @@ -24,6 +26,26 @@ void main() {
page.round(),
);
});

Glados(any.tuple2(any.positiveInt, any.positiveInt))
.test('scrolling with limits without swipe range', (it) {
final visibleDayCount = it.item1;
final maxDateOffset = it.item2;

final minDate = DateTimeTimetable.today();
final maxDate = minDate + maxDateOffset.days;
final range = DaysVisibleDateRange(
visibleDayCount,
minDate: minDate,
maxDate: maxDate,
);
expect(range.visibleDayCount, visibleDayCount);
expect(range.minPage, minDate.page);
expect(
range.maxPage,
(maxDate.page - visibleDayCount + 1).coerceAtLeast(minDate.page),
);
});
});

group('VisibleDateRange.week', () {
Expand Down

0 comments on commit e864409

Please sign in to comment.