Example #1
0
def no_newlines_before_unit():
    s = '1\nm'

    with assert_raises(TestFailed): # does not work
        parse_wrap_check(s,  Syntax.pint_unit_simple)
        
    with assert_raises(TestFailed):
        parse_wrap_check(s,  Syntax.valuewithunit_number_with_units)
Example #2
0
def check_comments01():
    " Single quotes "
    parse_wrap_check("""'ciao'""", Syntax.comment_string_simple)
    parse_wrap_check(""" "ciao" """, Syntax.comment_string_simple)
    
    parse_wrap_check("""'ciao'""", Syntax.comment_fun)
    parse_wrap_check("""'ciao'""", Syntax.comment_res)
    parse_wrap_check("""'ciao'""", Syntax.comment_var)
Example #3
0
def check_comments01():
    " Single quotes "
    parse_wrap_check("""'ciao'""", Syntax.comment_string_simple)
    parse_wrap_check(""" "ciao" """, Syntax.comment_string_simple)
    
    parse_wrap_check("""'ciao'""", Syntax.comment_fun)
    parse_wrap_check("""'ciao'""", Syntax.comment_res)
    parse_wrap_check("""'ciao'""", Syntax.comment_var)
Example #4
0
def check_shortcut1():
    x = parse_wrap_check('requires x, y, z [Nat] "comment"', Syntax.res_shortcut5)
    rnames = [_.value for _ in get_odd_ops(unwrap_list(x.rnames))]
    assert_equal(rnames, ['x','y','z'])

    s = parse_wrap_check('provides x, y, z [Nat] "comment"', Syntax.fun_shortcut5)
    rnames = [_.value for _ in get_odd_ops(unwrap_list(s.fnames))]
    assert_equal(rnames, ['x','y','z'])
Example #5
0
def check_shortcut1():
    x = parse_wrap_check('requires x, y, z [Nat] "comment"',
                         Syntax.res_shortcut5)
    rnames = [_.value for _ in get_odd_ops(unwrap_list(x.rnames))]
    assert_equal(rnames, ['x', 'y', 'z'])

    s = parse_wrap_check('provides x, y, z [Nat] "comment"',
                         Syntax.fun_shortcut5)
    rnames = [_.value for _ in get_odd_ops(unwrap_list(s.fnames))]
    assert_equal(rnames, ['x', 'y', 'z'])
Example #6
0
def check_comments15():
    s = "gravity = 9.8 m/s^2 'Gravity on Earth'"
    parse_wrap_check(s, Syntax.setname_constant)
    
    # We don't think that division is allowed 
    # in definitely_constant_value
    s = '(9.8 m/s^2) / 6 dimensionless'
    assert_syntax_error(s, Syntax.definitely_constant_value)
    s = "constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'"
    parse_wrap_check(s, Syntax.setname_constant)
    
    pass
Example #7
0
def check_comments15():
    s = "gravity = 9.8 m/s^2 'Gravity on Earth'"
    parse_wrap_check(s, Syntax.setname_constant)
    
    # We don't think that division is allowed 
    # in definitely_constant_value
    s = '(9.8 m/s^2) / 6 dimensionless'
    assert_syntax_error(s, Syntax.definitely_constant_value)
    s = "constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'"
    parse_wrap_check(s, Syntax.setname_constant)
    
    pass
Example #8
0
def check_addmake1():
    parse_wrap_check(
        """ addmake(root: code mcdp_lang_tests.syntax_misc.f) mcdp {} """,
        Syntax.ndpt_addmake)

    ndp = parse_ndp(
        """ addmake(root: code mcdp_lang_tests.syntax_misc.f) mcdp {} """)

    assert len(ndp.make) == 1
    assert ndp.make[0][0] == 'root'
    from mcdp_lang.eval_ndp_imp import ImportedFunction
    assert isinstance(ndp.make[0][1], ImportedFunction)
Example #9
0
def check_poset_geq():

    parse_wrap_check('a>=b>=c', Syntax.finite_poset_chain_geq)
    parse_wrap_check('a<=b<=c', Syntax.finite_poset_chain_leq)

    s = """
    poset {
      a >= b >= c 
    }
    """

    P = parse_poset(s)
    assert len(P.elements) == 3
Example #10
0
def check_poset_geq():
    
    parse_wrap_check('a>=b>=c', Syntax.finite_poset_chain_geq)
    parse_wrap_check('a<=b<=c', Syntax.finite_poset_chain_leq)
    
    s = """
    poset {
      a >= b >= c 
    }
    """
    
    P = parse_poset(s)
    assert len(P.elements) == 3
Example #11
0
def check_lang89h():  # TODO: rename
    parse_wrap_check('Rcomp:1', Syntax.space_custom_value1)
    parse_wrap_check('Rcomp:1.2', Syntax.space_custom_value1)
    s = """
    mcdp { 
        requires r [Nat] 
        
        required r >= ceil(Rcomp:1.2) 
    }
    """
    print s
    dp = parse_ndp(s).get_dp()
    print dp.repr_long()
    check_isinstance(dp, Constant)
Example #12
0
def check_nat1():
    parse_wrap_check('1', Syntax.integer_or_float)
    parse_wrap_check('2', Syntax.nat_constant2)
    parse_wrap_check('3', Syntax.definitely_constant_value)
    parse_wrap_check('4', Syntax.constant_value)

    eval_constant_same_exactly('5', 'Nat:5')
Example #13
0
def check_rcomp1():
    parse_wrap_check('1.05', SyntaxBasics.floatnumber)
    parse_wrap_check('2.05', Syntax.rcomp_constant)
    parse_wrap_check('3.05', Syntax.definitely_constant_value)
    parse_wrap_check('4.05', Syntax.constant_value)
    
    eval_constant_same_exactly('5.05', 'Rcomp:5.05')
Example #14
0
def check_nat1():
    parse_wrap_check('1', Syntax.integer_or_float)
    parse_wrap_check('2', Syntax.nat_constant2)
    parse_wrap_check('3', Syntax.definitely_constant_value)
    parse_wrap_check('4', Syntax.constant_value)

    eval_constant_same_exactly('5', 'Nat:5')
Example #15
0
def check_rcomp1():
    parse_wrap_check('1.05', SyntaxBasics.floatnumber)
    parse_wrap_check('2.05', Syntax.rcomp_constant)
    parse_wrap_check('3.05', Syntax.definitely_constant_value)
    parse_wrap_check('4.05', Syntax.constant_value)

    eval_constant_same_exactly('5.05', 'Rcomp:5.05')
Example #16
0
def special_letters_identifiers():
    examples = []  # ustring,

    for identifier, letter in greek_letters_utf8.items():
        if letter == 'π': continue
        example = (identifier, letter)
        examples.append(example)

    for num, subscript in subscripts_utf8.items():
        identifier = 'x_%d' % num
        appears = 'x' + subscript
        example = (identifier, appears)
        examples.append(example)

    idn = SyntaxIdentifiers.get_idn()

    for identifier, appears in examples:

        res = parse_wrap_check(appears, idn)
        #print('- %r %r -> %r' % (identifier, appears, res))
        #         x = '  %s %s -> %s' % (identifier.decode('utf8'),
        #                                appears.decode('utf8'),
        #                                res.decode('utf8'))
        #print(x)
        assert_equal(res, identifier)
Example #17
0
def check_spaces4():
    parse_wrap_check('<5mm, 5mm, 5mm>', Syntax.tuple_of_constants)
    parse_wrap_check('step_up1 | {5 V}        | {1.5 V} |  5 $ | 20 g | <5mm, 5mm, 5mm>', Syntax.catalogue_row)
    parse_ndp("""
catalogue {
    provides voltage    [℘(V)]
    requires v_in       [℘(V)]
    requires cost       [$]
    requires mass       [g]
    requires shape      [m x m x m]
    
    step_up1 | {5 V}        | {1.5 V} |  5 $ | 20 g | <5mm, 5mm, 5mm>
    step_up2 |       {12 V} | {1.5 V} | 10 $ | 20 g | <5mm, 5mm, 5mm>
    step_up2 | {5 V,  12 V} | {1.5 V} | 10 $ | 20 g | <5mm, 5mm, 5mm>
}
""")
Example #18
0
def check_lang89():  # TODO: rename
    parse_wrap_check('provided f, provided f, provided f',
                     Syntax.rvalue_generic_op_ops)
    parse_wrap_check('required f, required f, required f',
                     Syntax.fvalue_generic_op_ops)
    parse_wrap_check('op1(required f, required f, required f)',
                     Syntax.fvalue_generic_op)
    parse_wrap_check('op1(provided f, provided f, provided f)',
                     Syntax.rvalue_generic_op)
Example #19
0
def check_comments02():
    """ Triple quotes """
    parse_wrap_check(""" '''ciao\n''' """, Syntax.comment_string_complex)
    parse_wrap_check(''' """ciao""" ''', Syntax.comment_string_complex)

    parse_wrap_check(""" '''ciao\n''' """, Syntax.comment_model)
    parse_wrap_check(''' """ciao""" ''', Syntax.comment_model)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_fun)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_var)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_res)
Example #20
0
def check_comments02():
    """ Triple quotes """
    parse_wrap_check(""" '''ciao\n''' """, Syntax.comment_string_complex)
    parse_wrap_check(''' """ciao""" ''', Syntax.comment_string_complex)

    parse_wrap_check(""" '''ciao\n''' """, Syntax.comment_model)
    parse_wrap_check(''' """ciao""" ''', Syntax.comment_model)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_fun)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_var)
    assert_syntax_error(""" '''ciao\n''' """, Syntax.comment_res)
Example #21
0
def check_lang_singlespace1():
#      SingleElementPosetKeyword = namedtuplewhere('SingleElementPosetKeyword', 'keyword')
#     SingleElementPosetTag = namedtuplewhere('SingleElementPosetTag', 'value')
#     SingleElementPoset = namedtuplewhere('SingleElementPoset', 'keyword tag')

    p = parse_wrap_check('S(singleton)', Syntax.space_single_element_poset,
                     CDP.SingleElementPoset(CDP.SingleElementPosetKeyword('S'),
                                            CDP.SingleElementPosetTag(value='singleton')))

    print recursive_print(p)
Example #22
0
def check_lang_singlespace1():
    #      SingleElementPosetKeyword = namedtuplewhere('SingleElementPosetKeyword', 'keyword')
    #     SingleElementPosetTag = namedtuplewhere('SingleElementPosetTag', 'value')
    #     SingleElementPoset = namedtuplewhere('SingleElementPoset', 'keyword tag')

    p = parse_wrap_check(
        'S(singleton)', Syntax.space_single_element_poset,
        CDP.SingleElementPoset(CDP.SingleElementPosetKeyword('S'),
                               CDP.SingleElementPosetTag(value='singleton')))

    print recursive_print(p)
Example #23
0
def power1():
    parse_wrap_check('x^2', Syntax.rvalue_power_expr)
    parse_wrap_check('²', Syntax.superscripts)
    parse_wrap_check('x²', Syntax.rvalue_power_expr)
    parse_ndp("""
    mcdp {
        provides f [dimensionless]
        requires r [dimensionless]
        
        (provided f)²  <= required r
    }
    """)
Example #24
0
def check_lang9_max():
    parse_wrap_check("""provides x [dimensionless]""", Syntax.fun_statement)
    parse_wrap_check("""requires x [dimensionless]""", Syntax.res_statement)

    parse_wrap_check(
        """
            provides x [dimensionless]
            requires r [dimensionless]
        """, Syntax.simple_dp_model_stats)

    parse_wrap_check(
        """dp {
            provides x [dimensionless]
            requires r [dimensionless]
            
            implemented-by load SimpleNonlinearity1
        }""", Syntax.ndpt_simple_dp_model)

    #     parse_wrap(Syntax.rvalue_binary, 'max(f, g)')
    parse_wrap(Syntax.rvalue, 'max(f, g)')
    parse_wrap(Syntax.constraint_expr_geq, 'hnlin.x >= max(f, g)')
Example #25
0
def check_comments16():
    parse_wrap_check('1 g', Syntax.definitely_constant_value)
    parse_wrap_check("'Number of constants'", Syntax.comment_con)
    
    parse_wrap_check("axx = 1.2 g", Syntax.setname_rvalue)
    parse_wrap_check("axx", Syntax.constant_name)
#     expr = Syntax.constant_name + Syntax.EQ + Syntax.definitely_constant_value
#     parse_wrap_check("axx = 1.2 g", expr)
#     def parse(t):
#         return CDPLanguage.SetNameConstant(t[0], t[1], t[2], t[3])
#     expr2 = sp(expr, parse)
#     parse_wrap_check("axx = 1.2 g", expr2)
    parse_wrap_check("axx = 1.2 g", Syntax.setname_constant)
    parse_wrap_check("a = 1 g", Syntax.setname_constant)
    parse_wrap_check("a = 1 g  'Number of constants'", Syntax.setname_constant)
    parse_wrap_check("constant a = 1 g  'Number of constants'", Syntax.setname_constant)
    parse_wrap_check(
        "constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'",
        Syntax.setname_constant)
    s = """
     mcdp {
    ' One example of documentation for the entire MCDP.'

    requires     mass [kg]   'The mass that must be transported.'
    provides capacity [kWh]  'The capacity of the battery.'

    constant a = 1 g  'Number of constants'
  
    constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'

    variable x, y [Nat] 'constant '
  }"""
    parse_ndp(s)
Example #26
0
def check_namedproduct1():
    parse_wrap_check("required in", Syntax.fvalue_new_resource2)
    parse_wrap_check("required in", Syntax.fvalue_operand)
    parse_wrap_check("required in", Syntax.fvalue)
    parse_wrap_check("(required in).dc", Syntax.fvalue_label_indexing3)
    parse_wrap_check("((required in).dc).connector",
                     Syntax.fvalue_label_indexing3)

    parse_wrap_check(
        "((required in).dc).connector >= `USB_connectors: USB_Std_A",
        Syntax.line_expr)
Example #27
0
def check_spaces3():  # changename
    parse_wrap_check('instance simple_cell', Syntax.dpinstance_from_type)
    parse_wrap_check('sub cell = instance simple_cell', Syntax.setname_ndp_instance1)
Example #28
0
 def p(s):
     c = Context()
     r = parse_wrap_check(s, Syntax.space)
     _x = eval_space(r, c)
Example #29
0
def check_deriv02():
    parse_wrap_check('deriv(a, `b)', Syntax.template_deriv)
Example #30
0
def check_lang112():  # TODO: rename

    parse_wrap_check("required r >= required r", Syntax.constraint_invalid1a)
    parse_wrap_check("provided f >= provided f", Syntax.constraint_invalid2a)
    parse_wrap_check("required r <= required r", Syntax.constraint_invalid1b)
    parse_wrap_check("provided f <= provided f", Syntax.constraint_invalid2b)

    parse_wrap_check("required r >= required r", Syntax.line_expr)
    parse_wrap_check("provided f >= provided f", Syntax.line_expr)
    parse_wrap_check("required r <= required r", Syntax.line_expr)
    parse_wrap_check("provided f <= provided f", Syntax.line_expr)

    parse_wrap_check("f required by ob1 >= r provided by ob2",
                     Syntax.constraint_invalid3a)
    parse_wrap_check("r provided by ob1 <= f required by ob1",
                     Syntax.constraint_invalid3b)
    parse_wrap_check("f required by ob1 >= r provided by ob2",
                     Syntax.line_expr)
    parse_wrap_check("r provided by ob1 <= f required by ob1",
                     Syntax.line_expr)

    parse_wrap_check("provided f >= required r", Syntax.constraint_invalid3a)
    parse_wrap_check("required r <= provided f", Syntax.constraint_invalid3b)
    parse_wrap_check("provided f >= required r", Syntax.line_expr)
    parse_wrap_check("required r <= provided f", Syntax.line_expr)
Example #31
0
def check_spaces_superscript1():
    parse_wrap_check('m^2', Syntax.space_pint_unit)
    # ¹²³⁴⁵⁶⁷⁸⁹
    parse_wrap_check('m¹', Syntax.space_pint_unit)
    parse_wrap_check('m²', Syntax.space_pint_unit)
    parse_wrap_check('m³', Syntax.space_pint_unit)
    parse_wrap_check('m⁴', Syntax.space_pint_unit)
    parse_wrap_check('m⁵', Syntax.space_pint_unit)
    parse_wrap_check('m⁶', Syntax.space_pint_unit)
    parse_wrap_check('m⁷', Syntax.space_pint_unit)
    parse_wrap_check('m⁸', Syntax.space_pint_unit)
    parse_wrap_check('m⁹', Syntax.space_pint_unit)

    eval_rvalue_as_constant('9.81 m/s²')
Example #32
0
def check_comments16():
    parse_wrap_check('1 g', Syntax.definitely_constant_value)
    parse_wrap_check("'Number of constants'", Syntax.comment_con)
    
    parse_wrap_check("axx = 1.2 g", Syntax.setname_rvalue)
    parse_wrap_check("axx", Syntax.constant_name)
    expr=Syntax.constant_name + Syntax.EQ + Syntax.definitely_constant_value
    parse_wrap_check("axx = 1.2 g", expr)
    def parse(t):
        return CDPLanguage.SetNameConstant(t[0], t[1], t[2])
    expr2 = sp(expr, parse)
    parse_wrap_check("axx = 1.2 g", expr2)
    parse_wrap_check("axx = 1.2 g", Syntax.setname_constant)
    parse_wrap_check("a = 1 g", Syntax.setname_constant)
    parse_wrap_check("a = 1 g  'Number of constants'", Syntax.setname_constant)
    parse_wrap_check("constant a = 1 g  'Number of constants'", Syntax.setname_constant)
    parse_wrap_check(
        "constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'",
        Syntax.setname_constant)
    s = """
     mcdp {
    ' One example of documentation for the entire MCDP.'

    requires     mass [kg]   'The mass that must be transported.'
    provides capacity [kWh]  'The capacity of the battery.'

    constant a = 1 g  'Number of constants'
  
    constant gravity = (9.8 m/s^2) / 6 dimensionless 'Gravity on Earth'

    variable x, y [Nat] 'constant '
  }"""
    parse_ndp(s)