aboutsummaryrefslogtreecommitdiff
path: root/ql/test/expression_evaluation
diff options
context:
space:
mode:
Diffstat (limited to 'ql/test/expression_evaluation')
-rw-r--r--ql/test/expression_evaluation/__pycache__/test_expression_evaluation.cpython-35.pycbin0 -> 2258 bytes
-rw-r--r--ql/test/expression_evaluation/test_expression_evaluation.py49
-rw-r--r--ql/test/expression_evaluation/valid/test001.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test002.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test003.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test004.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test005.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test006.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test007.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test008.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test009.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test010.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test011.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test012.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test013.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test014.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test015.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test016.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test017.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test018.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test019.ql5
-rw-r--r--ql/test/expression_evaluation/valid/test020.ql5
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
new file mode 100644
index 0000000..2104122
--- /dev/null
+++ b/ql/test/expression_evaluation/__pycache__/test_expression_evaluation.cpython-35.pyc
Binary files differ
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