chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# Licensed to the Apache Software Foundation (ASF) under one
|
||||
# or more contributor license agreements. See the NOTICE file
|
||||
# distributed with this work for additional information
|
||||
# regarding copyright ownership. The ASF licenses this file
|
||||
# to you under the Apache License, Version 2.0 (the
|
||||
# "License"); you may not use this file except in compliance
|
||||
# with the License. You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing,
|
||||
# software distributed under the License is distributed on an
|
||||
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||
# KIND, either express or implied. See the License for the
|
||||
# specific language governing permissions and limitations
|
||||
# under the License.
|
||||
# ruff: noqa: F401
|
||||
"""Unittests for tvm.script.parser.evaluator"""
|
||||
|
||||
import pytest
|
||||
|
||||
import tvm.testing
|
||||
from tvm.script.parser.core.diagnostics import Source
|
||||
from tvm.script.parser.core.evaluator import ExprEvaluator
|
||||
|
||||
|
||||
def _calc(expr, extra_vars=None):
|
||||
if extra_vars is None:
|
||||
extra_vars = {}
|
||||
source = Source(expr)
|
||||
mod_ast = source.as_ast()
|
||||
mod_body_ast = mod_ast.body
|
||||
expr_stmt_ast = mod_body_ast[0]
|
||||
expr_ast = expr_stmt_ast.value
|
||||
return ExprEvaluator.eval(None, extra_vars, expr_ast)
|
||||
|
||||
|
||||
def test_evaluator_basic():
|
||||
assert _calc("1, 3.14, True, 'str'") == (1, 3.14, True, "str")
|
||||
|
||||
|
||||
def test_evaluator_op():
|
||||
assert _calc("1 + 2, 1 - 2, 1 * 2, 1 / 2") == (3, -1, 2, 0.5)
|
||||
|
||||
|
||||
def test_evaluator_value_table():
|
||||
res = _calc("a + b, a - b, a * b, a / b", {"a": 1, "b": 2})
|
||||
a, b = 1, 2
|
||||
assert res == (a + b, a - b, a * b, a / b)
|
||||
|
||||
|
||||
def test_evaluator_func_call():
|
||||
def func(a, b):
|
||||
return a + b, a - b, a * b, a / b
|
||||
|
||||
assert _calc("func(1, 2)", {"func": func}) == func(1, 2)
|
||||
|
||||
|
||||
def test_evaluator_slice():
|
||||
res = _calc("a, a[1:], a[:5], a[1: 5], a[1: 5: 2]", {"a": [1, 2, 3, 4, 5, 6]})
|
||||
a = [1, 2, 3, 4, 5, 6]
|
||||
assert res == (a, a[1:], a[:5], a[1:5], a[1:5:2])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
tvm.testing.main()
|
||||
Reference in New Issue
Block a user