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
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
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)
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)
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
def test_func_parse_descriptor_chain_with_class_method(): f = Curve.parse_descriptor({'$constant': 16, '$max': [10]}) assert f.y(0) == 16
def test_func_parse_descriptor_chain_with_instance_method(): f = Curve.parse_descriptor({'$constant': -16, '$abs': []}) assert f.y(0) == 16
def test_func_parse_descriptor_chain(): f = Curve.parse_descriptor({'$constant': 16, '$log': {'base': 2}}) assert f.y(0) == 4
def test_func_parse_descriptor_log2(): f = Curve.parse_descriptor({'$log2': 16}) assert f.y(0) == 4
def test_func_parse_descriptor_raised(): f = Curve.parse_descriptor({'$raised': {'@args': [4], 'base': 2}}) assert f.y(0) == 16
def test_func_parse_descriptor_constant(): f = Curve.parse_descriptor({'$constant': 10}) assert f.y(0) == 10
def test_func_parse_descriptor_fragment_date_decorator(): date = Curve.parse_descriptor({'@date': '2020-02-12 01:23+1200'}, fragment=True) assert date == 1581427380
def test_func_parse_descriptor_args_decorator(): f = Curve.parse_descriptor({'$add': {'@args': [10, 20]}}) assert f.y(0) == 30
def test_func_parse_descriptor_min(): f = Curve.parse_descriptor({'$min': [1, 2, 3, -1]}) assert f.y(0) == -1