provoj/provoj.py
provoj.pyRaw
1import math
2import datetime
3
4class NewTest(object):
5 def __init__(self, title=None):
6 # define the scores dictionary, and initialize
7 self.scores = {}
8 self.scores["success"] = 0
9 self.scores["error"] = 0
10 self.time = datetime.datetime.now()
11 if title != None:
12 self.title = title
13 print("")
14 pc.blue("- " + title)
15 else:
16 self.title = ""
17 print("")
18 pc.blue("- unnamed test")
19 def equal(self, action, a, b):
20 if a != b:
21 pc.error(action + " - Error, '" + str(a) + "' should be equal to '" + str(b) + "'")
22 self.scores["error"] += 1
23 else:
24 pc.checked(action)
25 self.scores["success"] += 1
26 def notequal(self, action, a, b):
27 if a == b:
28 pc.error(action + " - Error, '" + str(a) + "' should be not equal to '" + str(b) + "'")
29 self.scores["error"] += 1
30 else:
31 pc.checked(action)
32 self.scores["success"] += 1
33 def bigger(self, action, a, b):
34 if a < b:
35 pc.error(action + " - Error, '" + str(a) + "' should be bigger than '" + str(b) + "'")
36 self.scores["error"] += 1
37 else:
38 pc.checked(action)
39 self.scores["success"] += 1
40 def smaller(self, action, a, b):
41 if a > b:
42 pc.error(action + " - Error, '" + str(a) + "' should be smaller than '" + str(b) + "'")
43 self.scores["error"] += 1
44 else:
45 pc.checked(action)
46 self.scores["success"] += 1
47
48 def length(self, action, a, l):
49 if len(a) != l:
50 pc.error(action + " - Error, actual length is '" + str(len(a)) + "', expected to be '" + str(l) + "'")
51 self.scores["error"] += 1
52 else:
53 pc.checked(action)
54 self.scores["success"] += 1
55
56 def rStatus(self, action, r, verbose=False):
57 if r.status_code < 200 or r.status_code > 299:
58 if verbose:
59 pc.error(action + " - Error " + str(r.status_code) + ": " + r.text)
60 else:
61 pc.error(action + " - Error " + str(r.status_code))
62
63 self.scores["error"] += 1
64 else:
65 pc.checked(action)
66 self.scores["success"] += 1
67
68 def printScores(self):
69 pc.purple(" Test title: " + self.title)
70 score = math.ceil(( self.scores["success"]/(self.scores["success"]+self.scores["error"]) )*100)
71 elapsed = datetime.datetime.now() - self.time
72 pc.purple(" Score: " + str(score)
73 + "% (" + str(self.scores["success"]) + "/" + str(self.scores["success"] + self.scores["error"]) + ")"
74 + " Time benchmark: " + str(elapsed))
75
76
77'''
78code to print the colors in the terminal
79'''
80checkIcon = "✓ "
81errorIcon = "❌ "
82
83class pc:
84 RED = '\033[31m'
85 GREEN = '\033[32m'
86 BLUE = '\033[94m'
87 PURPLE = '\033[95m'
88 END = '\033[0m'
89
90 @classmethod
91 def red(cls, s, **kwargs):
92 print(cls.RED + s + cls.END, **kwargs)
93
94 @classmethod
95 def green(cls, s, **kwargs):
96 print(cls.GREEN + s + cls.END, **kwargs)
97
98 @classmethod
99 def blue(cls, s, **kwargs):
100 print(cls.BLUE + s + cls.END, **kwargs)
101
102 @classmethod
103 def purple(cls, s, **kwargs):
104 print(cls.PURPLE + s + cls.END, **kwargs)
105
106 @classmethod
107 def checked(cls, s, **kwargs):
108 print(" " + cls.GREEN + checkIcon + s + cls.END, **kwargs)
109
110 @classmethod
111 def error(cls, s, **kwargs):
112 print(" " + cls.RED + errorIcon + s + cls.END, **kwargs)