def test_python_only_i32(): def return_true(): return True def return_false(): return False def return_non_zero(): return 3 def return_string(): return "string" # I32 datatype creation from boolean forms assert I32Value(True).value == 1 assert I32Value(return_true()).value == 1 assert I32Value(not return_false()).value == 1 assert I32Value(I32Value(True)).value == 1 assert I32Value(I32Value(True).value).value == 1 assert I32Value(I32Value(return_true())).value == 1 assert I32Value(False).value == 0 assert I32Value(return_false()).value == 0 assert I32Value(not return_true()).value == 0 assert I32Value(I32Value(False)).value == 0 assert I32Value(I32Value(False).value).value == 0 assert I32Value(I32Value(return_false())).value == 0 # I32 datatype creation from numeric forms assert I32Value(3).value == 3 assert I32Value(3.3).value == 3 assert I32Value(DoubleValue(3.3)).value == 3 assert I32Value(return_non_zero()).value == return_non_zero() assert I32Value(I32Value(3)).value == 3 assert I32Value(I32Value(3).value).value == 3 # I32 datatype creation from expression assert I32Value(2 + 1).value == 3 assert I32Value(False and True).value == 0 assert I32Value(5 < 10).value == 1 assert I32Value(return_non_zero() > 1).value == 1 # I32 datatype creation from array assert I32Value(I32ValueArray([1, 3])[0]).value == 1 assert I32Value([1, 3][1]).value == 3 # I32 datatype creation that should fail with pytest.raises(TypeError): I32Value('3') with pytest.raises(TypeError): I32Value('string') with pytest.raises(TypeError): I32Value(object()) with pytest.raises(TypeError): I32Value([]) with pytest.raises(TypeError): I32Value(I32ValueArray([True]))
def sub_multiple_types1(): a = I32Value(0) a.value = 1 - I32Value(2) - 3.0 - DoubleValue(4) return a.value
def multitask_nested_validate_order(): a = I32Value(0) counter = I32Value(1000) ret = I32Value(0) with multitask() as mt_top: @task(mt_top) def fa(): with multitask() as mt_nested: @task(mt_nested) def f0(): with multitask() as mt_bottom: @task(mt_bottom) def fx(): if a.value != 0: ret.value = -1000 while counter.value > 0: counter.value -= 1 nivs_yield() @task(mt_nested) def f1(): if a.value > 3 and ret.value == 0: ret.value = -1 a.value += 1 nivs_yield() if a.value > 303 and ret.value == 0: ret.value = -100 a.value += 100 nivs_yield() @task(mt_nested) def f2(): if a.value > 3 and ret.value == 0: ret.value = -2 a.value += 1 nivs_yield() if a.value > 303 and ret.value == 0: ret.value = -200 a.value += 100 nivs_yield() @task(mt_top) def fb(): if a.value > 3 and ret.value == 0: ret.value = -3 a.value += 1 nivs_yield() if a.value > 303 and ret.value == 0: ret.value = -300 a.value += 100 nivs_yield() @task(mt_top) def fc(): while counter.value > 0: counter.value -= 1 nivs_yield() if counter.value != 0: ret.value -= 10000 return ret.value
def sub_with_parentheses1(): a = DoubleValue(0) a.value = 1 - (DoubleValue(2) - I32Value(5)) return a.value
def aug_sub_with_parentheses(): a = DoubleValue(1) a.value -= (I32Value(2) + 3.0) + DoubleValue(4) return a.value
def mult_nivsdatatype_nivsdatatype3(): a = DoubleValue(0) a.value = I32Value(1) * I32Value(2) return a.value
def sub_use_rtseq4(): a = DoubleValue(0) a.value = I32Value(1) - _return_constant() return a.value
def aug_modulo_with_parentheses(): a = DoubleValue(5) a.value %= (I32Value(2) % 3.0) % DoubleValue(4) return a.value
def modulo_nivsdatatype_nivsdatatype1(): a = DoubleValue(0) a.value = DoubleValue(5) % I32Value(2) return a.value
def modulo_with_parentheses7(): a = DoubleValue(0) a.value = I32Value(11) % (I64Value(11) % DoubleValue(7)) % DoubleValue(2) return a.value
def modulo_variable_variable1(): a = DoubleValue(5) b = I32Value(2) c = DoubleValue(0) c.value = a.value % b.value return c.value
def modulo_with_parentheses1(): a = DoubleValue(1) a.value = 5 % (DoubleValue(5) % I32Value(3)) return a.value
def modulo_use_rtseq5(): a = DoubleValue(0) a.value = _return_constant() % I32Value(2) return a.value
def modulo_use_rtseq4(): a = DoubleValue(0) a.value = I32Value(7) % _return_constant() return a.value
def mult_variable_variable1(): a = DoubleValue(1) b = I32Value(2) c = DoubleValue(0) c.value = a.value * b.value return c.value
def modulo_nivsdatatype_nivsdatatype2(): a = DoubleValue(0) a.value = I32Value(7) % DoubleValue(2) return a.value
def aug_mult_with_parentheses(): a = DoubleValue(2) a.value *= (I32Value(1) * 3.0) * DoubleValue(4) return a.value
def modulo_nivsdatatype_nivsdatatype3(): a = I32Value(0) a.value = I32Value(7) % I32Value(2) return a.value
def mult_multiple_types1(): a = I32Value(0) a.value = 1 * I32Value(2) * 3.0 * DoubleValue(4) return a.value
def modulo_multiple_types1(): a = I32Value(0) a.value = 12 % I32Value(7) % 3 return a.value
def sub_use_rtseq5(): a = DoubleValue(0) a.value = _return_constant() - I32Value(1) return a.value
def mult_use_rtseq4(): a = DoubleValue(0) a.value = I32Value(2) * _return_constant() return a.value
def sub_with_parentheses2(): a = DoubleValue(0) a.value = DoubleValue(5) - (I32Value(2) - 3.0) - DoubleValue(4) return a.value
def mult_use_rtseq5(): a = DoubleValue(0) a.value = _return_constant() * I32Value(2) return a.value
def sub_nivsdatatype_nivsdatatype3(): a = DoubleValue(0) a.value = I32Value(1) - I32Value(2) return a.value
def mult_with_parentheses1(): a = DoubleValue(1) a.value = 1 * (DoubleValue(2) * I32Value(5)) return a.value
import sys import threading from niveristand import nivs_rt_sequence, NivsParam from niveristand import realtimesequencetools from niveristand.clientapi import I32Value from niveristand.clientapi import RealTimeSequence from niveristand.errors import TranslateError, VeristandError from niveristand.library import multitask, nivs_yield, task from niveristand.library._tasks import get_scheduler import pytest from testutilities import rtseqrunner, validation @NivsParam('param', I32Value(0), NivsParam.BY_REF) @nivs_rt_sequence def _increase_param_by_ref(param): param.value += 1 @NivsParam('param', I32Value(0), NivsParam.BY_REF) @nivs_rt_sequence def _subseq_with_multitask(param): with multitask() as mt: @task(mt) def fa(): nivs_yield() if param.value == 2: param.value = 3 @task(mt)
def mult_with_parentheses2(): a = DoubleValue(0) a.value = DoubleValue(1) * (I32Value(2) * 3.0) * DoubleValue(4) return a.value
def f1(): a = I32Value(1) a.value = 2
def int32_max_value_overflow(): a = I32Value(0x800000001) return a.value