mirror of
https://github.com/Iconica-Development/flutter_timetable.git
synced 2025-05-18 19:43:43 +02:00
152 lines
3.8 KiB
Dart
152 lines
3.8 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:timetable/timetable.dart';
|
|
|
|
void main() {
|
|
group('test collapseBlocks', () {
|
|
test('new block creation success', () {
|
|
//Arrange
|
|
var blocks = [
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 5,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 5,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 15),
|
|
end: const TimeOfDay(hour: 2, minute: 30),
|
|
id: 6,
|
|
),
|
|
];
|
|
|
|
//Act
|
|
var result = collapseBlocks(blocks);
|
|
|
|
//Assert
|
|
expect(result.length, 2);
|
|
expect(
|
|
result.firstWhere((element) => element.id == 5).end,
|
|
const TimeOfDay(hour: 2, minute: 30),
|
|
);
|
|
});
|
|
|
|
test('elements without id ignored', () {
|
|
//Arrange
|
|
var blocks = [
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 0, // default id is 0
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 0,
|
|
),
|
|
];
|
|
|
|
//Act
|
|
var result = collapseBlocks(blocks);
|
|
|
|
//Assert
|
|
expect(result.length, 2);
|
|
expect(result.first.end, const TimeOfDay(hour: 2, minute: 15));
|
|
});
|
|
});
|
|
|
|
group('test groupBlocksById', () {
|
|
test('groupBlocksById success', () {
|
|
//Arrange
|
|
var blocks = [
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 5,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 25),
|
|
id: 5,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 20),
|
|
end: const TimeOfDay(hour: 2, minute: 30),
|
|
id: 6,
|
|
),
|
|
];
|
|
|
|
//Act
|
|
var result = groupBlocksById(blocks);
|
|
|
|
//Assert
|
|
expect(result.length, 2);
|
|
});
|
|
|
|
test('groupBlocksById id 0 ignored', () {
|
|
// Arrange
|
|
var blocks = [
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 15),
|
|
id: 0,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 2, minute: 25),
|
|
id: 0,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 20),
|
|
end: const TimeOfDay(hour: 2, minute: 30),
|
|
id: 0,
|
|
),
|
|
];
|
|
|
|
//Act
|
|
var result = groupBlocksById(blocks);
|
|
|
|
//Assert
|
|
expect(result.length, 3);
|
|
});
|
|
});
|
|
|
|
group('test mergeBlocksInColumns', () {
|
|
test('mergeBlocksInColumns success', () {
|
|
//Arrange
|
|
var blocks = [
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 2, minute: 0),
|
|
end: const TimeOfDay(hour: 6, minute: 15),
|
|
id: 1,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 8, minute: 0),
|
|
end: const TimeOfDay(hour: 10, minute: 25),
|
|
id: 2,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 12, minute: 20),
|
|
end: const TimeOfDay(hour: 14, minute: 30),
|
|
id: 3,
|
|
),
|
|
TimeBlock(
|
|
start: const TimeOfDay(hour: 13, minute: 20),
|
|
end: const TimeOfDay(hour: 14, minute: 15),
|
|
id: 4,
|
|
),
|
|
];
|
|
|
|
//Act
|
|
var result = mergeBlocksInColumns(blocks);
|
|
|
|
//Assert
|
|
expect(result.length, 2);
|
|
});
|
|
});
|
|
}
|