-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgrade_school_test.py
61 lines (49 loc) · 2.09 KB
/
grade_school_test.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
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()