예제 #1
0
def test_any_as_argument():
    @signature(types.any(), types.int(), returns=types.float())
    def f(x, y):
        return x + y

    @signature(types.int(), returns=types.float())
    def g(x):
        return f(x, x)

    sig = getsig(g)
    assert sig == [model.SomeInteger(), model.SomeFloat()]

    @signature(types.float(), returns=types.float())
    def g(x):
        return f(x, 4)

    sig = getsig(g)
    assert sig == [model.SomeFloat(), model.SomeFloat()]

    @signature(types.str(), returns=types.int())
    def cannot_add_string(x):
        return f(x, 2)

    exc = py.test.raises(model.AnnotatorError, annotate_at,
                         cannot_add_string).value
    assert 'Blocked block' in str(exc)
예제 #2
0
def test_any_as_argument():
    @signature(types.any(), types.int(), returns=types.float())
    def f(x, y):
        return x + y

    @signature(types.int(), returns=types.float())
    def g(x):
        return f(x, x)

    sig = getsig(g)
    assert sig == [model.SomeInteger(), model.SomeFloat()]

    @signature(types.float(), returns=types.float())
    def g(x):
        return f(x, 4)

    sig = getsig(g)
    assert sig == [model.SomeFloat(), model.SomeFloat()]

    @signature(types.str(), returns=types.int())
    def cannot_add_string(x):
        return f(x, 2)

    exc = py.test.raises(model.AnnotatorError, annotate_at, cannot_add_string).value
    assert "Blocked block" in str(exc)
예제 #3
0
def test_float():
    @signature(types.longfloat(), types.singlefloat(), returns=types.float())
    def f(a, b):
        return 3.0

    assert getsig(f) == [
        model.SomeLongFloat(),
        model.SomeSingleFloat(),
        model.SomeFloat()
    ]
예제 #4
0
def test_float():
    @signature(types.longfloat(), types.singlefloat(), returns=types.float())
    def f(a, b):
        return 3.0
    assert getsig(f) == [model.SomeLongFloat(), model.SomeSingleFloat(), model.SomeFloat()]