-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_review_classes.py
97 lines (80 loc) · 4.1 KB
/
test_review_classes.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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
"""
Module tests work of classes Review and ReviewList.
"""
from unittest import TestCase, main
from review_classes import Review, ReviewList
class TestReviews(TestCase):
"""Test class."""
def setUp(self) -> None:
self.review = Review(('Andy', 5, 'This is the best book, that I have \
ever read in my entire life! The plot is amazing and illustrations \
are fantastic.'))
self.review2 = Review(('Andy', 3, 'This is not the best book, that I have \
read in my life. The plot is okay and illustrations are good.'))
self.review3 = Review(('Andy', 3, "This is not the best book, that I've \
read in my life. The plot is okay and illustrations are good."))
self.review4 = Review(('Alex', 2, "2.5 The book is freaking bad and dull"))
self.review5 = Review(('Xena', 4, "Дуже крута книга. Рекомендую"))
self.review6 = Review(('V', 1, 'slkлаб джedai linьлдж'))
self.review7 = Review(('Anna', 2, 'This is a bad book.'))
self.review8 = Review(('Xena', 4, "A very cool book. Read it!"))
self.review9 = Review(('Andy', 3, "A very good book. Amazing!"))
def test_correct_review(self):
self.assertEqual(self.review.rating, 5)
self.assertFalse(self.review.rating == 3)
self.assertEqual(self.review.author, 'Andy')
self.assertEqual(self.review.length, 116)
self.assertEqual(self.review.neutrality, 0.602)
def test_reviews_compare(self):
self.assertFalse(self.review < self.review2) # reviews with different rating
self.assertTrue(self.review2 < self.review)
# similar ratings, different neutrality
self.assertLess(self.review9.neutrality, self.review3.neutrality)
self.assertTrue(self.review9 < self.review3)
# same neutrality
self.assertTrue(self.review2.neutrality == self.review3.neutrality)
# different length of text
self.assertGreater(self.review2.length, self.review3.length)
self.assertFalse(self.review2 < self.review3) # reviews with similar rating
def test_add_review_list(self):
reviews = ReviewList()
reviews.add_review(self.review4)
self.assertEqual(len(reviews.reviews), 0) # Language of (2) could not be detect
reviews.add_review(self.review5)
self.assertEqual(len(reviews.reviews), 0) # Doesn't add reviews not written in English
reviews.add_review(self.review6)
self.assertEqual(len(reviews.reviews), 0)
reviews.add_review(self.review)
self.assertEqual(len(reviews.reviews), 1)
def test_review_list_sorting1(self):
reviews = ReviewList()
reviews.add_review(self.review7) # rating: 2
reviews.add_review(self.review2) # rating: 3
reviews.add_review(self.review) # rating: 5
# reviews.reliability_sort()
self.assertEqual(len(reviews.reviews), 3)
self.assertEqual(len(reviews.get_mood_range()), 3) # reviews with rat. 5, 3, 2
self.assertEqual(reviews.reviews[0].rating, 5)
def test_review_list_sorting2(self):
reviews = ReviewList()
reviews.add_review(self.review8) # rating: 4
reviews.add_review(self.review2) # rating: 3
reviews.add_review(self.review7) # rating: 2
# reviews.reliability_sort()
self.assertEqual(len(reviews.get_mood_range()), 3) # reviews with rat. 4, 3, 2
self.assertEqual(reviews.reviews[0].rating, 4)
self.assertEqual(len(reviews.reviews), 3)
def test_review_list_sorting3(self):
reviews = ReviewList()
reviews.add_review(self.review8) # rating: 4
reviews.add_review(self.review) # rating: 5
reviews.add_review(self.review7) # rating: 2
# no neutral reviews
self.assertEqual(len(reviews.get_mood_range()), 2) # reviews with rat. 5, 2
self.assertEqual(reviews.get_mood_range()[0].rating, 5)
self.assertEqual(reviews.get_mood_range()[1].rating, 2)
self.assertEqual(len(reviews.reviews), 3)
def tearDown(self) -> None:
return super(TestReviews, self).tearDown()
if __name__ == '__main__':
main()