Pick one course from each course group in the cart,
Combine courses and generate a timetable if there is no conflict on course hours,
Discard the timetable if range of credits is limited by user and the credit of timetable is not in the range,
Discard the timetable if range of the number of classes per day is limited by user and there is any day in the timetable which the number of classes is not in the range,
Discard the timetable if range of the number of days with classes is limited by user and the number of days with classes in the timetable is not in the range.
What should be tested
[x] Whether timetables are generated correctly when course groups are all required
Only one course should be selected from each required course group without conflicts on course hours between each other.
[x] Whether timetables are generated correctly when course groups are all optional
At most one course should be selected from each optional course group without conflicts on course hours between each other.
[x] Whether timetables are generated correctly when required course groups and optional ones are mixed
[x] Whether timetables are filtered by range of credits
[x] Whether timetables are filtered by range of the number of classes per day
[x] Whether timetables are filtered by range of the number of days with classes
What this service should do
What should be tested