コード例 #1
0
def create_stmt_from_constant(
        constant: ast.Constant,
        testcase: tc.TestCase) -> Optional[prim_stmt.PrimitiveStatement]:
    """Creates a statement from an ast.constant node.

    Args:
        constant: the ast.Constant statement
        testcase: the testcase containing the statement

    Returns:
        The corresponding statement.
    """
    if constant.value is None:
        return prim_stmt.NoneStatement(testcase, constant.value)

    val = constant.value
    if isinstance(val, bool):
        return prim_stmt.BooleanPrimitiveStatement(testcase, val)
    if isinstance(val, int):
        return prim_stmt.IntPrimitiveStatement(testcase, val)
    if isinstance(val, float):
        return prim_stmt.FloatPrimitiveStatement(testcase, val)
    if isinstance(val, str):
        return prim_stmt.StringPrimitiveStatement(testcase, val)
    if isinstance(val, bytes):
        return prim_stmt.BytesPrimitiveStatement(testcase, val)
    logger.info(
        "Could not find case for constant while handling assign statement.")
    return None
コード例 #2
0
def test_string_primitive_statement_delta_none(test_case_mock):
    value = "t"
    statement = prim.StringPrimitiveStatement(test_case_mock, value)
    with mock.patch("pynguin.utils.randomness.next_float") as float_mock:
        float_mock.side_effect = [1.0, 1.0, 1.0]
        statement.delta()
        assert statement.value == value
コード例 #3
0
def test_string_primitive_statement_delta_all(test_case_mock):
    value = "te"
    statement = prim.StringPrimitiveStatement(test_case_mock, value)
    with mock.patch("pynguin.utils.randomness.next_char") as char_mock:
        char_mock.side_effect = ["a", "b"]
        with mock.patch("pynguin.utils.randomness.next_int") as int_mock:
            int_mock.return_value = 0
            with mock.patch("pynguin.utils.randomness.next_float") as float_mock:
                deletion = [0.0, 0.0, 1.0]
                replacement = [0.0, 0.0]
                insertion = [0.0, 0.0, 1.0]
                float_mock.side_effect = deletion + replacement + insertion
                statement.delta()
                assert statement.value == "ba"
コード例 #4
0
def simple_test_case(function_mock) -> dtc.DefaultTestCase:
    test_case = dtc.DefaultTestCase()
    int_prim = prim.IntPrimitiveStatement(test_case, 5)
    int_prim2 = prim.IntPrimitiveStatement(test_case, 5)
    float_prim = prim.FloatPrimitiveStatement(test_case, 5.5)
    func = ps.FunctionStatement(test_case, function_mock,
                                [float_prim.return_value])
    string_prim = prim.StringPrimitiveStatement(test_case, "Test")
    string_prim.return_value.variable_type = type(None)
    test_case.add_statement(int_prim)
    test_case.add_statement(int_prim2)
    test_case.add_statement(float_prim)
    test_case.add_statement(func)
    test_case.add_statement(string_prim)
    return test_case
コード例 #5
0
def simple_test_case(function_mock) -> dtc.DefaultTestCase:
    test_case = dtc.DefaultTestCase()
    int_prim = prim.IntPrimitiveStatement(test_case, 5)
    int_prim2 = prim.IntPrimitiveStatement(test_case, 5)
    float_prim = prim.FloatPrimitiveStatement(test_case, 5.5)
    func = ps.FunctionStatement(test_case, function_mock,
                                {"z": float_prim.ret_val})
    func.add_assertion(pas.PrimitiveAssertion(func.ret_val, 3.1415))
    string_prim = prim.StringPrimitiveStatement(test_case, "Test")
    string_prim.ret_val.variable_type = type(None)
    test_case.add_statement(int_prim)
    test_case.add_statement(int_prim2)
    test_case.add_statement(float_prim)
    test_case.add_statement(func)
    test_case.add_statement(string_prim)
    return test_case
コード例 #6
0
def test_method_statement_clone(method_mock):
    test_case = dtc.DefaultTestCase()
    int_prim = prim.IntPrimitiveStatement(test_case, 5)
    str_prim = prim.StringPrimitiveStatement(test_case, "TestThis")
    method_stmt = ps.MethodStatement(
        test_case,
        method_mock,
        str_prim.ret_val,
        {"x": int_prim.ret_val},
    )
    test_case.add_statement(int_prim)
    test_case.add_statement(str_prim)
    test_case.add_statement(method_stmt)

    cloned = test_case.clone()
    assert isinstance(cloned.statements[2], ps.MethodStatement)
    assert cloned.statements[2] is not method_stmt
コード例 #7
0
 def _create_primitive(
     test_case: tc.TestCase,
     parameter_type: Type,
     position: int,
     recursion_depth: int,
 ) -> vr.VariableReference:
     if parameter_type == int:
         statement: prim.PrimitiveStatement = prim.IntPrimitiveStatement(
             test_case)
     elif parameter_type == float:
         statement = prim.FloatPrimitiveStatement(test_case)
     elif parameter_type == bool:
         statement = prim.BooleanPrimitiveStatement(test_case)
     else:
         statement = prim.StringPrimitiveStatement(test_case)
     ret = test_case.add_statement(statement, position)
     ret.distance = recursion_depth
     return ret
コード例 #8
0
def test_string_primitive_statement_randomize_value(test_case_mock):
    statement = prim.StringPrimitiveStatement(test_case_mock)
    statement.randomize_value()
    assert 0 <= len(statement.value) <= config.INSTANCE.string_length