Skip to content

Instantly share code, notes, and snippets.

@sualeh
Created October 5, 2022 00:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sualeh/456ad5dba1d549f569044b6cbd3e5fb1 to your computer and use it in GitHub Desktop.
Save sualeh/456ad5dba1d549f569044b6cbd3e5fb1 to your computer and use it in GitHub Desktop.
"""Test for lab module."""
from unittest import TestCase
from schedule import Schedule
from unittest import skip
class TestLab3ForGrading(TestCase):
"""Test for Lab 3."""
def test_schedule_happy_path(self):
"""Test happy path."""
sch = Schedule(['Tue', 'Thu'], [['Algebra', 'Chemistry'], ['French']])
self.assertEqual(sch.classes_for('Mon'), ['Free day'])
self.assertEqual(sch.classes_for('Tue'), ['Algebra', 'Chemistry'])
self.assertEqual(sch.classes_for('Wed'), ['Free day'])
self.assertEqual(sch.classes_for('Thu'), ['French'])
self.assertEqual(sch.classes_for('Fri'), ['Free day'])
self.assertEqual(sch.classes_for('Sat'), ['Free day'])
self.assertEqual(sch.classes_for('Sun'), ['Free day'])
# Unknown day
self.assertEqual(sch.classes_for('Fun'), ['No such day'])
# Bad arguments
self.assertEqual(sch.classes_for('Holiday'), ['No such day'])
self.assertEqual(sch.classes_for(None), ['No such day'])
self.assertEqual(sch.classes_for(True), ['No such day'])
def test_schedule_str(self):
"""Test conversion of schedule to string."""
sch = Schedule(['Tue', 'Thu'],
[['Algebra', 'Chemistry'], ['French']])
print(str(sch))
self.assertEqual(str(sch), """Tue: Algebra, Chemistry
Thu: French
""")
@skip("Rigorous test - checks overriding the schedule")
def test_schedule_override(self):
"""Test make_schedule does overrides old schedule."""
sch = Schedule(['Tue', 'Thu'], [['Algebra', 'Chemistry'], ['French']])
sch.make_schedule(['Mon'], [['Biology']])
self.assertEqual(sch.classes_for('Mon'), ['Biology'])
self.assertEqual(sch.classes_for('Tue'), ['Free day'])
self.assertEqual(sch.classes_for('Wed'), ['Free day'])
self.assertEqual(sch.classes_for('Thu'), ['Free day'])
self.assertEqual(sch.classes_for('Fri'), ['Free day'])
self.assertEqual(sch.classes_for('Sat'), ['Free day'])
self.assertEqual(sch.classes_for('Sun'), ['Free day'])
@skip("Rigorous test - checks None arguments")
def test_schedule_none_args(self):
"""Test an argument of None, and ensures that no error occurs."""
sch = Schedule(None, [['Math']])
for day in ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']:
self.assertEqual(sch.classes_for(day), ['Free day'])
sch = Schedule(["Mon"], None)
for day in ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']:
self.assertEqual(sch.classes_for(day), ['Free day'])
@skip("Rigorous test - checks non-iterable arguments")
def test_schedule_wrong_type_args(self):
"""Test an argument of None, and ensures that no error occurs."""
with self.assertRaises(TypeError):
Schedule(['Mon'], False)
with self.assertRaises(TypeError):
Schedule(False, [['Math']])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment