diff options
Diffstat (limited to 'ql/test/expression_evaluation')
22 files changed, 149 insertions, 0 deletions
diff --git a/ql/test/expression_evaluation/__pycache__/test_expression_evaluation.cpython-35.pyc b/ql/test/expression_evaluation/__pycache__/test_expression_evaluation.cpython-35.pyc Binary files differnew file mode 100644 index 0000000..2104122 --- /dev/null +++ b/ql/test/expression_evaluation/__pycache__/test_expression_evaluation.cpython-35.pyc diff --git a/ql/test/expression_evaluation/test_expression_evaluation.py b/ql/test/expression_evaluation/test_expression_evaluation.py new file mode 100644 index 0000000..067ebda --- /dev/null +++ b/ql/test/expression_evaluation/test_expression_evaluation.py @@ -0,0 +1,49 @@ +from json import loads + +from ql.ast.extractors.extractor import extract_gui_model +from ql.ast.extractors.extractor import extract_identifier_types +from ql.ast.visitors.expression_evaluator import ExpressionEvaluator +from ql.ast.visitors.type_visitor import TypeVisitor +from ql.types.boolean import QLBoolean +from ql.types.date import QLDate +from ql.types.decimal import QLDecimal +from ql.types.integer import QLInteger +from ql.types.money import QLMoney +from ql.types.string import QLString +from ql.test.test import Test + + +class TestExpressionEvaluation(Test): + def __init__(self, directory, lexer, parser): + super(TestExpressionEvaluation, self).__init__('expression evaluation', directory) + self.__lexer = lexer + self.__parser = parser + + def test_file(self, file): + ast = self.__parser.parse(file, self.__lexer.lexer) + + if not self.__parser.errors: + TypeVisitor(extract_identifier_types(ast)).visit(ast) + model = extract_gui_model(ast) + result_type, result_value = file.split('\n')[0].split()[-2:] + correct_result = None + + if result_type == 'QLBoolean' and result_value == 'True': + correct_result = QLBoolean(True) + elif result_type == 'QLBoolean': + correct_result = QLBoolean() + elif result_type == 'QLDate': + day, month, year = loads(result_value) + correct_result = QLDate(day, month, year) + elif result_type == 'QLDecimal': + correct_result = QLDecimal(result_value) + elif result_type == 'QLInteger': + correct_result = QLInteger(result_value) + elif result_type == 'QLMoney': + correct_result = QLMoney(result_value) + elif result_type == 'QLString': + correct_result = QLString(result_value) + + expression_evaluator = ExpressionEvaluator(model) + expression_evaluator.visit(ast.block[0].answer) + return bool(expression_evaluator.result == correct_result) diff --git a/ql/test/expression_evaluation/valid/test001.ql b/ql/test/expression_evaluation/valid/test001.ql new file mode 100644 index 0000000..fc72525 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test001.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test002.ql b/ql/test/expression_evaluation/valid/test002.ql new file mode 100644 index 0000000..f4d722b --- /dev/null +++ b/ql/test/expression_evaluation/valid/test002.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test003.ql b/ql/test/expression_evaluation/valid/test003.ql new file mode 100644 index 0000000..2998f36 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test003.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = not False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test004.ql b/ql/test/expression_evaluation/valid/test004.ql new file mode 100644 index 0000000..fcfd827 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test004.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = not True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test005.ql b/ql/test/expression_evaluation/valid/test005.ql new file mode 100644 index 0000000..0ee8989 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test005.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = False == False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test006.ql b/ql/test/expression_evaluation/valid/test006.ql new file mode 100644 index 0000000..70f15f2 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test006.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = False == True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test007.ql b/ql/test/expression_evaluation/valid/test007.ql new file mode 100644 index 0000000..76f37b0 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test007.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = True == False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test008.ql b/ql/test/expression_evaluation/valid/test008.ql new file mode 100644 index 0000000..f6d5710 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test008.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = True == True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test009.ql b/ql/test/expression_evaluation/valid/test009.ql new file mode 100644 index 0000000..6a3d465 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test009.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = False != False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test010.ql b/ql/test/expression_evaluation/valid/test010.ql new file mode 100644 index 0000000..e398dde --- /dev/null +++ b/ql/test/expression_evaluation/valid/test010.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = False != True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test011.ql b/ql/test/expression_evaluation/valid/test011.ql new file mode 100644 index 0000000..3a7cbd1 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test011.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = True != False +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test012.ql b/ql/test/expression_evaluation/valid/test012.ql new file mode 100644 index 0000000..2a7185e --- /dev/null +++ b/ql/test/expression_evaluation/valid/test012.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = True != True +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test013.ql b/ql/test/expression_evaluation/valid/test013.ql new file mode 100644 index 0000000..bed71a2 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test013.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLDate [1,1,2018] +form label { + "Question" + id : boolean = date(1,1,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test014.ql b/ql/test/expression_evaluation/valid/test014.ql new file mode 100644 index 0000000..4d4413d --- /dev/null +++ b/ql/test/expression_evaluation/valid/test014.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean True +form label { + "Question" + id : boolean = date(1,1,2018) == date(1,1,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test015.ql b/ql/test/expression_evaluation/valid/test015.ql new file mode 100644 index 0000000..06a75ba --- /dev/null +++ b/ql/test/expression_evaluation/valid/test015.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(1,1,2018) == date(1,1,2017) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test016.ql b/ql/test/expression_evaluation/valid/test016.ql new file mode 100644 index 0000000..3cb4215 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test016.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(1,1,109) == date(1,1,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test017.ql b/ql/test/expression_evaluation/valid/test017.ql new file mode 100644 index 0000000..d4a3bbf --- /dev/null +++ b/ql/test/expression_evaluation/valid/test017.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(1,1,2018) == date(1,7,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test018.ql b/ql/test/expression_evaluation/valid/test018.ql new file mode 100644 index 0000000..38f80ea --- /dev/null +++ b/ql/test/expression_evaluation/valid/test018.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(1,3,2018) == date(1,1,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test019.ql b/ql/test/expression_evaluation/valid/test019.ql new file mode 100644 index 0000000..8d797b5 --- /dev/null +++ b/ql/test/expression_evaluation/valid/test019.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(1,1,2018) == date(5,1,2018) +}
\ No newline at end of file diff --git a/ql/test/expression_evaluation/valid/test020.ql b/ql/test/expression_evaluation/valid/test020.ql new file mode 100644 index 0000000..5d401cf --- /dev/null +++ b/ql/test/expression_evaluation/valid/test020.ql @@ -0,0 +1,5 @@ +// Correct result type and result value: QLBoolean False +form label { + "Question" + id : boolean = date(21,1,2018) == date(1,1,2018) +}
\ No newline at end of file |