Files
python/exercises/grade-school/grade_school_test.py

70 lines
2.3 KiB
Python
Raw Normal View History

from collections import Sequence
from types import GeneratorType
2013-08-02 09:02:15 -05:00
import unittest
from school import School
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
class SchoolTest(unittest.TestCase):
def setUp(self):
# assertCountEqual is py3, py2 only knowns assetItemsEqual
if not hasattr(self, 'assertCountEqual'):
self.assertCountEqual = self.assertItemsEqual
2013-08-02 09:02:15 -05:00
self.school = School("Haleakala Hippy School")
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_an_empty_school(self):
for n in range(1, 9):
self.assertCountEqual(set(), self.school.grade(n))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_add_student(self):
self.school.add("Aimee", 2)
self.assertCountEqual(("Aimee",), self.school.grade(2))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_add_more_students_in_same_class(self):
self.school.add("James", 2)
self.school.add("Blair", 2)
self.school.add("Paul", 2)
self.assertCountEqual(("James", "Blair", "Paul"), self.school.grade(2))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_add_students_to_different_grades(self):
self.school.add("Chelsea", 3)
self.school.add("Logan", 7)
self.assertCountEqual(("Chelsea",), self.school.grade(3))
self.assertCountEqual(("Logan",), self.school.grade(7))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_get_students_in_a_grade(self):
self.school.add("Franklin", 5)
self.school.add("Bradley", 5)
self.school.add("Jeff", 1)
self.assertCountEqual(("Franklin", "Bradley"), self.school.grade(5))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_get_students_in_a_non_existant_grade(self):
self.assertCountEqual(set(), self.school.grade(1))
2014-02-22 10:55:33 +08:00
2013-08-02 09:02:15 -05:00
def test_sort_school(self):
students = [
(3, ("Kyle",)),
(4, ("Christopher", "Jennifer",)),
(6, ("Kareem",))
]
for grade, students_in_grade in students:
for student in students_in_grade:
self.school.add(student, grade)
result = self.school.sort()
# Attempts to catch false positives
self.assertTrue(isinstance(result, Sequence) or
isinstance(result, GeneratorType) or
callable(getattr(result, '__reversed__', False)))
result_list = list(result.items() if hasattr(result, "items")
else result)
self.assertEqual(result_list, students)
2013-08-02 09:02:15 -05:00
if __name__ == '__main__':
unittest.main()