aboutsummaryrefslogtreecommitdiff
path: root/ql/test/test.py
diff options
context:
space:
mode:
Diffstat (limited to 'ql/test/test.py')
-rw-r--r--ql/test/test.py80
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())