-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.py
121 lines (85 loc) · 3.94 KB
/
tests.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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
import unittest
import logging
import datetime
import generate_numbers as gennum
import serialize_numbers as sernum
import deserialize_numbers as desnum
SummaryInTextLength = None
SummarySerializedTextLength = None
def calculate_ratio(text_in_length, text_out_length):
return (100.0 * text_out_length) / text_in_length
def setUpModule():
global SummaryInTextLength, \
SummarySerializedTextLength
SummaryInTextLength = 0
SummarySerializedTextLength = 0
def tearDownModule():
average_ratio = calculate_ratio(SummaryInTextLength,
SummarySerializedTextLength)
logging.info("\n---SUMMARY RESULT---")
logging.info(" average ratio: ({out_len}/{in_len})={ratio:.1f}%".format(
out_len=SummarySerializedTextLength,
in_len=SummaryInTextLength,
ratio=average_ratio))
class TestSerialization(unittest.TestCase):
def check_serialization(self, numbers):
global SummaryInTextLength, \
SummarySerializedTextLength
in_text = gennum.numbers_to_string(numbers)
serialized_text = sernum.serialize_text(in_text)
deserialized_text = desnum.deserialize_text(serialized_text)
self.assertEqual(in_text, deserialized_text)
in_text_length = len(in_text)
serialized_text_length = len(serialized_text)
SummaryInTextLength += in_text_length
SummarySerializedTextLength += serialized_text_length
logging.info("\tINPUT STRING: " + in_text)
logging.info("\tOUTPUT STRING: " + serialized_text)
ratio = calculate_ratio(in_text_length, serialized_text_length)
logging.info("\tRATIO: ({out_len}/{in_len})={ratio:.1f}%".format(
out_len=serialized_text_length,
in_len=in_text_length,
ratio=ratio))
def check_random_numbers_serialization(self, size):
numbers = gennum.generate_random_numbers(size)
self.check_serialization(numbers)
def test_00_simple_random_number(self):
for i in range(0, 10):
logging.info('\nTest single number')
numbers = gennum.generate_random_numbers(1)
self.check_serialization(numbers)
def test_10_all_numbers_of_digits1(self):
logging.info('\nTest all numbers of 1 digit')
numbers = gennum.generate_all_numbers_of_digits1()
self.check_serialization(numbers)
def test_11_all_numbers_of_digits2(self):
logging.info('\nTest all numbers of 2 digits')
numbers = gennum.generate_all_numbers_of_digits2()
self.check_serialization(numbers)
def test_12_all_numbers_of_digits3(self):
logging.info('\nTest all numbers of 3 digits')
numbers = gennum.generate_all_numbers_of_digits3()
self.check_serialization(numbers)
def test_20_random_numbers50(self):
logging.info('\nTest 50 random numbers')
self.check_random_numbers_serialization(50)
def test_21_random_numbers100(self):
logging.info('\nTest 100 random numbers')
self.check_random_numbers_serialization(100)
def test_22_random_numbers500(self):
logging.info('\nTest 500 random numbers')
self.check_random_numbers_serialization(500)
def test_23_random_numbers1000(self):
logging.info('\nTest 1000 random numbers')
self.check_random_numbers_serialization(1000)
def test_30_triple_numbers(self):
logging.info('\nTest 300 tripple numbers')
numbers = gennum.generate_random_numbers(300)
numbers = gennum.duplicate_numbers(numbers, 3)
self.check_serialization(numbers)
if __name__ == '__main__':
logging.basicConfig(level=logging.INFO,
filename="output/output__{date}.txt".format(
date=datetime.datetime.now().strftime("%Y-%m-%d__%H-%M-%S")),
format="%(message)s")
unittest.main()