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