Vaani/test/shared/extensions/time_of_day_test.dart

137 lines
3.6 KiB
Dart
Raw Normal View History

// ignore_for_file: constant_identifier_names
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:vaani/shared/extensions/time_of_day.dart';
const TIME_08_30_AM = TimeOfDay(hour: 8, minute: 30);
const TIME_09_00_AM = TimeOfDay(hour: 9, minute: 0);
const TIME_10_30_AM = TimeOfDay(hour: 10, minute: 30);
const TIME_11_00_AM = TimeOfDay(hour: 11, minute: 0);
const TIME_12_00_PM = TimeOfDay(hour: 12, minute: 0);
const TIME_10_00_PM = TimeOfDay(hour: 22, minute: 0);
void main() {
group('ToTimeOfDay extension', () {
test('Duration to TimeOfDay conversion', () {
final duration = Duration(hours: 10, minutes: 30);
expect(duration.toTimeOfDay(), TIME_10_30_AM);
});
test('Duration to TimeOfDay conversion with more than 24 hours', () {
final duration = Duration(hours: 32, minutes: 30);
expect(duration.toTimeOfDay(), TIME_08_30_AM);
});
});
group('ToDuration extension', () {
test('TimeOfDay to Duration conversion', () {
final duration = TIME_10_30_AM.toDuration();
expect(duration.inHours, 10);
expect(duration.inMinutes % 60, 30);
});
});
group('Compare TimeOfDay', () {
test('compareTo method', () {
expect(TIME_10_30_AM.compareTo(TIME_12_00_PM), -1);
expect(TIME_12_00_PM.compareTo(TIME_10_30_AM), 1);
expect(TIME_10_30_AM.compareTo(TIME_10_30_AM), 0);
});
test('operator <', () {
expect(TIME_10_30_AM < TIME_12_00_PM, true);
expect(TIME_12_00_PM < TIME_10_30_AM, false);
});
test('operator >', () {
expect(TIME_10_30_AM > TIME_10_00_PM, false);
expect(TIME_10_00_PM > TIME_10_30_AM, true);
});
test('operator <=', () {
expect(TIME_10_30_AM <= TIME_12_00_PM, true);
expect(TIME_12_00_PM <= TIME_10_30_AM, false);
expect(TIME_10_30_AM <= TIME_10_30_AM, true);
});
test('operator >=', () {
expect(TIME_10_30_AM >= TIME_10_00_PM, false);
expect(TIME_10_00_PM >= TIME_10_30_AM, true);
expect(TIME_10_30_AM >= TIME_10_30_AM, true);
});
});
group('isBetween method', () {
void testIsBetween(
TimeOfDay time,
TimeOfDay start,
TimeOfDay end,
bool expectedResult,
) {
test('TimeOfDay $time is between $start and $end', () {
expect(time.isBetween(start, end), expectedResult);
});
}
final testCases = [
(
time: TIME_10_30_AM,
start: TIME_09_00_AM,
end: TIME_11_00_AM,
expectedResult: true
),
(
time: TIME_08_30_AM,
start: TIME_09_00_AM,
end: TIME_11_00_AM,
expectedResult: false
),
(
time: TIME_10_30_AM,
start: TIME_11_00_AM,
end: TIME_09_00_AM,
expectedResult: false
),
(
time: TIME_08_30_AM,
start: TIME_10_00_PM,
end: TIME_09_00_AM,
expectedResult: true
),
(
time: TIME_12_00_PM,
start: TIME_11_00_AM,
end: TIME_09_00_AM,
expectedResult: true
),
(
time: TIME_10_00_PM,
start: TIME_11_00_AM,
end: TIME_09_00_AM,
expectedResult: true
),
(
time: TIME_09_00_AM,
start: TIME_09_00_AM,
end: TIME_09_00_AM,
expectedResult: true
),
(
time: TIME_10_00_PM,
start: TIME_09_00_AM,
end: TIME_09_00_AM,
expectedResult: false
),
];
for (var testCase in testCases) {
testIsBetween(
testCase.time,
testCase.start,
testCase.end,
testCase.expectedResult,
);
}
});
}