Skip to content

Commit 165763c

Browse files
committed
PCC13 pavelekshin fix tests
1 parent f8394ec commit 165763c

File tree

2 files changed

+38
-21
lines changed

2 files changed

+38
-21
lines changed

13/pavelekshin/directors.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,20 @@ def get_average_scores(directors):
3030
fd, dd = {}, {}
3131
Movie = namedtuple("Movie", "score movies")
3232
for k, v in directors.items():
33-
if len(v) > MIN_MOVIES:
34-
score = _calc_mean(v)
35-
fd[k] = Movie(score=score, movies=v)
33+
if not len(v) < MIN_MOVIES:
34+
movies = _year_sort(v)
35+
score = _calc_mean(movies)
36+
fd[k] = Movie(score=score, movies=movies)
3637
sd = OrderedDict(
3738
{k: v for k, v in sorted(fd.items(), key=lambda x: x[1][0], reverse=True)}
3839
)
3940
return sd
4041

42+
def _year_sort(movies):
43+
for count, movie in enumerate(movies):
44+
if not int(movie.year) > MIN_YEAR:
45+
del (movies[count])
46+
return movies
4147

4248
def _calc_mean(movies):
4349
"""Helper method to calculate mean of list of Movie namedtuples"""
@@ -51,11 +57,16 @@ def print_results(directors):
5157
"""Print directors ordered by highest average rating. For each director
5258
print his/her movies also ordered by highest rated movie.
5359
See http://pybit.es/codechallenge13.html for example output"""
60+
directors = dict(list(directors.items())[:10])
5461
fmt_director_entry = "{counter:02}. {director:<52} {avg}"
5562
fmt_movie_entry = "{year} {title:<50} {score}"
5663
sep_line = "-" * 60
5764
for count, (director, movies) in enumerate(directors.items(), 1):
58-
print(fmt_director_entry.format(counter=count, director=director, avg=movies.score))
65+
print(
66+
fmt_director_entry.format(
67+
counter=count, director=director, avg=movies.score
68+
)
69+
)
5970
print(sep_line)
6071
for title, year, score in sorted(
6172
movies.movies, key=lambda x: x[2], reverse=True

13/pavelekshin/test_directors.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,39 @@
44
def test():
55
directors = get_movies_by_director()
66

7-
assert 'Sergio Leone' in directors
8-
assert 'Andrew Stanton' in directors # has 3 movies, but not yet filtered
9-
assert len(directors['Sergio Leone']) == 4
10-
assert len(directors['Peter Jackson']) == 12
7+
assert "Sergio Leone" in directors
8+
assert "Andrew Stanton" in directors # has 3 movies, but not yet filtered
9+
assert len(directors["Sergio Leone"]) == 4
10+
assert len(directors["Peter Jackson"]) == 12
1111

12-
movies_sergio = directors['Sergio Leone']
13-
movies_nolan = directors['Christopher Nolan']
12+
movies_sergio = directors["Sergio Leone"]
13+
movies_nolan = directors["Christopher Nolan"]
1414
assert _calc_mean(movies_sergio) == 8.5
1515
assert _calc_mean(movies_nolan) == 8.4
1616

1717
directors = get_average_scores(directors)
18-
assert 'Andrew Stanton' not in directors # director 3 movies now filtered out
19-
20-
expected_directors = ['Sergio Leone', 'Christopher Nolan', 'Quentin Tarantino',
21-
'Hayao Miyazaki', 'Frank Darabont', 'Stanley Kubrick']
18+
assert "Andrew Stanton" not in directors # director 3 movies now filtered out
19+
20+
expected_directors = [
21+
"Sergio Leone",
22+
"Christopher Nolan",
23+
"Quentin Tarantino",
24+
"Hayao Miyazaki",
25+
"Frank Darabont",
26+
"Stanley Kubrick",
27+
]
2228
expected_avg_scores = [8.5, 8.4, 8.2, 8.2, 8.0, 8.0]
2329
expected_num_movies = [4, 8, 8, 4, 4, 7]
24-
report = sorted(directors.items(), key=lambda x: float(x[0][1]), reverse=True)
30+
report = sorted(directors.items(), key=lambda x: float(x[1][0]), reverse=True)
2531
for counter, (i, j, k) in enumerate(
26-
zip(expected_directors,
27-
expected_avg_scores, expected_num_movies)):
28-
assert report[counter][0] == (i, j)
29-
assert len(report[counter][1]) == k
30-
assert _calc_mean(report[counter][1]) == j
32+
zip(expected_directors, expected_avg_scores, expected_num_movies)
33+
):
34+
assert report[counter][0], [counter][1][0] == (i, j)
35+
assert len(report[counter][1][1]) == k
36+
assert _calc_mean(report[counter][1][1]) == j
3137

3238
return "tests pass"
3339

3440

35-
if __name__ == '__main__':
41+
if __name__ == "__main__":
3642
print(test())

0 commit comments

Comments
 (0)