import 'package:flutter_test/flutter_test.dart'; import 'package:worldhopper/services/server_software/server_software.dart'; void main() { group('EntryProgress', () { test('percentage is calculated correctly', () { const progress = EntryProgress( entryId: 'e1', currentPage: 4, totalPages: 10, ); // (4 + 1) / 10 = 0.5 expect(progress.percentage, 0.5); }); test('percentage is 0 when totalPages is 0', () { const progress = EntryProgress( entryId: 'e1', currentPage: 0, totalPages: 0, ); expect(progress.percentage, 0.0); }); test('percentage is 1.0 when on last page', () { const progress = EntryProgress( entryId: 'e1', currentPage: 9, totalPages: 10, ); expect(progress.percentage, 1.0); }); test('isCompleted is true when on last page', () { const progress = EntryProgress( entryId: 'e1', currentPage: 9, totalPages: 10, ); expect(progress.isCompleted, isTrue); }); test('isCompleted is false when not on last page', () { const progress = EntryProgress( entryId: 'e1', currentPage: 5, totalPages: 10, ); expect(progress.isCompleted, isFalse); }); test('isCompleted is false when totalPages is 0', () { const progress = EntryProgress( entryId: 'e1', currentPage: 0, totalPages: 0, ); expect(progress.isCompleted, isFalse); }); test('percentage for single page publication', () { const progress = EntryProgress( entryId: 'e1', currentPage: 0, totalPages: 1, ); expect(progress.percentage, 1.0); expect(progress.isCompleted, isTrue); }); }); }