arnaucube
arnaucube/provojPublic Self-hosted repository
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)