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
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
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"
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
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
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
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
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