Skip to content

Commit bd28598

Browse files
Added misc expression tests
1 parent eec4dd6 commit bd28598

File tree

1 file changed

+62
-0
lines changed

1 file changed

+62
-0
lines changed

test/sttp/data/test_expressiontree.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2012,3 +2012,65 @@ def test_negative_expressions(self):
20122012

20132013
if err is None:
20142014
self.fail("test_negative_expressions: expected error executing FilterExpressionParser.evaluate_expression")
2015+
2016+
def test_misc_expressions(self):
2017+
with open("test/MetadataSample2.xml", "rb") as binary_file:
2018+
data = binary_file.read()
2019+
2020+
dataset, err = DataSet.from_xml(data)
2021+
2022+
if err is not None:
2023+
self.fail(f"test_misc_expressions: error executing DataSet.from_xml: {err}")
2024+
2025+
datarow = dataset["DeviceDetail"][0]
2026+
2027+
value_expression, err = FilterExpressionParser.evaluate_datarowexpression(datarow, "AccessID ^ 2 + FramesPerSecond XOR 4")
2028+
2029+
if err is not None:
2030+
self.fail(f"test_misc_expressions: error executing FilterExpressionParser.evaluate_datarowexpression: {err}")
2031+
2032+
if value_expression.valuetype != ExpressionValueType.INT32:
2033+
self.fail(f"test_misc_expressions: expected value type of int32, received {value_expression.valuetype}")
2034+
2035+
result, err = value_expression.int32value()
2036+
2037+
if err is not None:
2038+
self.fail(f"test_misc_expressions: error executing value_expression.int32value: {err}")
2039+
2040+
if result != 38:
2041+
self.fail(f"test_misc_expressions: unexpected value expression result, expected 38, received {result}")
2042+
2043+
# test edge case of evaluating standalone Guid not used as a row identifier
2044+
g = uuid1()
2045+
value_expression, err = FilterExpressionParser.evaluate_datarowexpression(datarow, str(g))
2046+
2047+
if err is not None:
2048+
self.fail(f"test_misc_expressions: error executing FilterExpressionParser.evaluate_datarowexpression: {err}")
2049+
2050+
if value_expression.valuetype != ExpressionValueType.GUID:
2051+
self.fail(f"test_misc_expressions: expected value type of guid, received {value_expression.valuetype}")
2052+
2053+
result, err = value_expression.guidvalue()
2054+
2055+
if err is not None:
2056+
self.fail(f"test_misc_expressions: error executing value_expression.guidvalue: {err}")
2057+
2058+
if result != g:
2059+
self.fail(f"test_misc_expressions: unexpected value expression result, expected {g}, received {result}")
2060+
2061+
# test computed column with expression defined in schema
2062+
value_expression, err = FilterExpressionParser.evaluate_datarowexpression(datarow, "ComputedCol")
2063+
2064+
if err is not None:
2065+
self.fail(f"test_misc_expressions: error executing FilterExpressionParser.evaluate_datarowexpression: {err}")
2066+
2067+
if value_expression.valuetype != ExpressionValueType.INT32:
2068+
self.fail(f"test_misc_expressions: expected value type of int32, received {value_expression.valuetype}")
2069+
2070+
result, err = value_expression.int32value()
2071+
2072+
if err is not None:
2073+
self.fail(f"test_misc_expressions: error executing value_expression.int32value: {err}")
2074+
2075+
if result != 32:
2076+
self.fail(f"test_misc_expressions: unexpected value expression result, expected 32, received {result}")

0 commit comments

Comments
 (0)