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
Example #6
0
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
Example #8
0
def aug_modulo_with_parentheses():
    a = DoubleValue(5)
    a.value %= (I32Value(2) % 3.0) % DoubleValue(4)
    return a.value
Example #9
0
def modulo_nivsdatatype_nivsdatatype1():
    a = DoubleValue(0)
    a.value = DoubleValue(5) % I32Value(2)
    return a.value
Example #10
0
def modulo_with_parentheses7():
    a = DoubleValue(0)
    a.value = I32Value(11) % (I64Value(11) % DoubleValue(7)) % DoubleValue(2)
    return a.value
Example #11
0
def modulo_variable_variable1():
    a = DoubleValue(5)
    b = I32Value(2)
    c = DoubleValue(0)
    c.value = a.value % b.value
    return c.value
Example #12
0
def modulo_with_parentheses1():
    a = DoubleValue(1)
    a.value = 5 % (DoubleValue(5) % I32Value(3))
    return a.value
Example #13
0
def modulo_use_rtseq5():
    a = DoubleValue(0)
    a.value = _return_constant() % I32Value(2)
    return a.value
Example #14
0
def modulo_use_rtseq4():
    a = DoubleValue(0)
    a.value = I32Value(7) % _return_constant()
    return a.value
Example #15
0
def mult_variable_variable1():
    a = DoubleValue(1)
    b = I32Value(2)
    c = DoubleValue(0)
    c.value = a.value * b.value
    return c.value
Example #16
0
def modulo_nivsdatatype_nivsdatatype2():
    a = DoubleValue(0)
    a.value = I32Value(7) % DoubleValue(2)
    return a.value
Example #17
0
def aug_mult_with_parentheses():
    a = DoubleValue(2)
    a.value *= (I32Value(1) * 3.0) * DoubleValue(4)
    return a.value
Example #18
0
def modulo_nivsdatatype_nivsdatatype3():
    a = I32Value(0)
    a.value = I32Value(7) % I32Value(2)
    return a.value
Example #19
0
def mult_multiple_types1():
    a = I32Value(0)
    a.value = 1 * I32Value(2) * 3.0 * DoubleValue(4)
    return a.value
Example #20
0
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
Example #22
0
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
Example #24
0
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
Example #26
0
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)
Example #28
0
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