diff options
Diffstat (limited to 'ql/test/test.py')
| -rw-r--r-- | ql/test/test.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/ql/test/test.py b/ql/test/test.py new file mode 100644 index 0000000..79b67d4 --- /dev/null +++ b/ql/test/test.py @@ -0,0 +1,80 @@ +from os import listdir +from os import path + +from termcolor import colored + + +class Test: + def __init__(self, name, directory): + self.__name = name + self.directory = directory + self.valid_files = self.get_directory_files(directory + 'valid') + self.invalid_files = self.get_directory_files(directory + 'invalid') + + @property + def name(self): + return self.__name + + @staticmethod + def get_directory_files(directory): + if path.exists(directory): + return sorted(listdir(directory)) + + return [] + + def test(self): + successes = 0 + print('-------------------------------------------------------------------------------------------\n') + print('Performing {} tests.\n'.format(self.name)) + print('-------------------------------------------------------------------------------------------\n') + + if self.valid_files: + print('Performing valid tests:') + successes += self.test_valid_files() + print() + + if self.invalid_files: + print('Performing invalid tests:') + successes += self.test_invalid_files() + print() + + print('{} out of {} {} tests successful.\n'.format(successes, len(self.valid_files) + len(self.invalid_files), + self.name)) + + def test_file(self, file): + pass + + def test_valid_files(self, valid=True): + successes = 0 + + for file in self.valid_files: + test = open(self.directory + 'valid/' + file, 'r').read() + result = valid == self.test_file(test) + self.print_result(file, result, test.split('\n')[0]) + + if result: + successes += 1 + + return successes + + def test_invalid_files(self, valid=False): + successes = 0 + + for file in self.invalid_files: + test = open(self.directory + 'invalid/' + file, 'r').read() + result = valid == self.test_file(test) + self.print_result(file, result, test.split('\n')[0]) + + if result: + successes += 1 + + return successes + + @staticmethod + def print_result(file, result=True, test=''): + tag = colored('[failure]', 'red') + + if result: + tag = colored('[success]', 'green') + + print(tag, file, test.strip('//').strip()) |