예제 #1
0
def test_func_parse_descriptor_log():
    f = Curve.parse_descriptor({'$log': 10})
    assert f.y(0) == approx(math.log(10), abs=0.01)
    f = Curve.parse_descriptor({'$log': {'@args': [10], 'base': 10}})
    assert f.y(0) == 1
    f = Curve.parse_descriptor({'$log2': 16})
    assert f.y(0) == 4
예제 #2
0
def test_func_parse_descriptor_add():
    f = Curve.parse_descriptor({'$add': [1, 2]})
    assert f.y(0) == 3
    f = Curve.parse_descriptor({'$add': [1, 2, 3]})
    assert f.y(0) == 6
    f = Curve.parse_descriptor({'$add': [1]})
    assert f.y(0) == 1
예제 #3
0
def test_func_parse_descriptor_log_decorator():
    f = Curve.parse_descriptor({'@log2': {'$add': [16, 16]}})
    assert f.y(0) == 256

    v = Curve.parse_descriptor({'@log10': 10}, fragment=True)
    assert v == 10
    v = Curve.parse_descriptor({'@log': 10}, fragment=True)
    assert v == approx(10, abs=0.01)
예제 #4
0
def test_func_parse_descriptor_chain_with_decorator():
    f = Curve.parse_descriptor({'@log': {'$constant': 16}, '$max': 10})
    assert f.y(0) == approx(16, abs=0.01)
    f = Curve.parse_descriptor({'@log': {'$constant': 16}, '$max': [10]})
    assert f.y(0) == approx(16, abs=0.01)

    # 2 ^ (10 + 2) = 4096
    f = Curve.parse_descriptor({
        '@log10': {
            '$constant': 10
        },
        '@log2': {
            '$add': 4
        }
    })
    assert f.y(0) == approx(4096, abs=0.01)
예제 #5
0
def test_func_parse_descriptor_line():
    f = Curve.parse_descriptor(
        {'$line': {
            'points': [[100.0, 1000.0], [200.0, 2000.0]]
        }})
    assert f.y(100) == 1000.0
    assert f.y(200) == 2000.0
    assert f.y(300) == 3000.0
예제 #6
0
def test_func_parse_descriptor_chain_with_class_method():
    f = Curve.parse_descriptor({'$constant': 16, '$max': [10]})
    assert f.y(0) == 16
예제 #7
0
def test_func_parse_descriptor_chain_with_instance_method():
    f = Curve.parse_descriptor({'$constant': -16, '$abs': []})
    assert f.y(0) == 16
예제 #8
0
def test_func_parse_descriptor_chain():
    f = Curve.parse_descriptor({'$constant': 16, '$log': {'base': 2}})
    assert f.y(0) == 4
예제 #9
0
def test_func_parse_descriptor_log2():
    f = Curve.parse_descriptor({'$log2': 16})
    assert f.y(0) == 4
예제 #10
0
def test_func_parse_descriptor_raised():
    f = Curve.parse_descriptor({'$raised': {'@args': [4], 'base': 2}})
    assert f.y(0) == 16
예제 #11
0
def test_func_parse_descriptor_constant():
    f = Curve.parse_descriptor({'$constant': 10})
    assert f.y(0) == 10
예제 #12
0
def test_func_parse_descriptor_fragment_date_decorator():
    date = Curve.parse_descriptor({'@date': '2020-02-12 01:23+1200'},
                                  fragment=True)
    assert date == 1581427380
예제 #13
0
def test_func_parse_descriptor_args_decorator():
    f = Curve.parse_descriptor({'$add': {'@args': [10, 20]}})
    assert f.y(0) == 30
예제 #14
0
def test_func_parse_descriptor_min():
    f = Curve.parse_descriptor({'$min': [1, 2, 3, -1]})
    assert f.y(0) == -1