mirror of
https://github.com/Xevion/exercism.git
synced 2025-12-06 01:14:56 -06:00
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
import unittest
|
|
|
|
from grade_school import School
|
|
|
|
|
|
# Tests adapted from `problem-specifications//canonical-data.json` @ v1.0.0
|
|
|
|
class GradeSchoolTest(unittest.TestCase):
|
|
def test_adding_student_adds_them_to_sorted_roster(self):
|
|
school = School()
|
|
school.add_student(name='Aimee', grade=2)
|
|
expected = ['Aimee']
|
|
self.assertEqual(school.roster(), expected)
|
|
|
|
def test_adding_more_students_adds_them_to_sorted_roster(self):
|
|
school = School()
|
|
school.add_student(name='Blair', grade=2)
|
|
school.add_student(name='James', grade=2)
|
|
school.add_student(name='Paul', grade=2)
|
|
expected = ['Blair', 'James', 'Paul']
|
|
self.assertEqual(school.roster(), expected)
|
|
|
|
def test_students_in_different_grades_in_same_roster(self):
|
|
school = School()
|
|
school.add_student(name='Chelsea', grade=3)
|
|
school.add_student(name='Logan', grade=7)
|
|
expected = ['Chelsea', 'Logan']
|
|
self.assertEqual(school.roster(), expected)
|
|
|
|
def test_roster_returns_empty_list_if_no_students_are_enrolled(self):
|
|
self.assertEqual(School().roster(), [])
|
|
|
|
def test_roster_is_sorted_by_grade_then_name(self):
|
|
school = School()
|
|
for name, grade in [
|
|
('Peter', 2),
|
|
('Anna', 1),
|
|
('Barb', 1),
|
|
('Zoe', 2),
|
|
('Alex', 2),
|
|
('Jim', 3),
|
|
('Charlie', 1),
|
|
]:
|
|
school.add_student(name, grade)
|
|
expected = ['Anna', 'Barb', 'Charlie', 'Alex', 'Peter', 'Zoe', 'Jim']
|
|
self.assertEqual(school.roster(), expected)
|
|
|
|
def test_grade_returns_students_in_that_grade_in_alphabetical_order(self):
|
|
school = School()
|
|
school.add_student(name='Franklin', grade=5)
|
|
school.add_student(name='Bradley', grade=5)
|
|
school.add_student(name='Jeff', grade=1)
|
|
expected = ['Bradley', 'Franklin']
|
|
self.assertEqual(school.grade(5), expected)
|
|
|
|
def test_grade_returns_empty_list_if_no_students_are_in_that_grade(self):
|
|
self.assertEqual(School().grade(1), [])
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|