def test_hash_same(test_case_mock, variable_reference_mock, field_mock): statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) statement2 = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert hash(statement) == hash(statement2)
def test_statement_to_ast_field( statement_to_ast_visitor, test_case_mock, field_mock, variable_reference_mock ): f_stmt = field_stmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) statement_to_ast_visitor.visit_field_statement(f_stmt)
def test_field_statement_eq_other_type( test_case_mock, variable_reference_mock, field_mock ): statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert not statement.__eq__(variable_reference_mock)
def test_primitive_statement_replace_ignore(field_mock): test_case = dtc.DefaultTestCase() ref = prim.IntPrimitiveStatement(test_case, 5) statement = fstmt.FieldStatement(test_case, field_mock, ref.return_value) new = prim.FloatPrimitiveStatement(test_case, 0).return_value old = statement.source statement.replace(new, new) assert statement.source == old
def test_mutate_no_replacements(field_mock, constructor_mock): config.INSTANCE.change_parameter_probability = 1.0 test_case = dtc.DefaultTestCase() const = ps.ConstructorStatement(test_case, constructor_mock) field = fstmt.FieldStatement(test_case, field_mock, const.return_value) test_case.add_statement(const) test_case.add_statement(field) assert not field.mutate()
def test_constructor_statement_accept(test_case_mock, variable_reference_mock, field_mock): statement = fstmt.FieldStatement(test_case_mock, field_mock, variable_reference_mock) visitor = MagicMock(sv.StatementVisitor) statement.accept(visitor) visitor.visit_field_statement.assert_called_once_with(statement)
def test_primitive_statement_replace(field_mock): test_case = dtc.DefaultTestCase() ref = prim.IntPrimitiveStatement(test_case, 5) test_case.add_statement(ref) statement = fstmt.FieldStatement(test_case, field_mock, ref.return_value) test_case.add_statement(statement) new = vri.VariableReferenceImpl(test_case, int) statement.replace(ref.return_value, new) assert statement.source == new
def test_field_statement_eq_clone(field_mock): test_case1 = dtc.DefaultTestCase() test_case1.add_statement(prim.IntPrimitiveStatement(test_case1, 0)) test_case2 = dtc.DefaultTestCase() test_case2.add_statement(prim.IntPrimitiveStatement(test_case2, 0)) statement = fstmt.FieldStatement(test_case1, field_mock, test_case1.statements[0].ret_val) test_case1.add_statement(statement) clone = statement.clone(test_case2) test_case2.add_statement(clone) assert statement.__eq__(clone)
def test_mutate_success(field_mock, constructor_mock): config.INSTANCE.change_parameter_probability = 1.0 test_case = dtc.DefaultTestCase() const = ps.ConstructorStatement(test_case, constructor_mock) const2 = ps.ConstructorStatement(test_case, constructor_mock) field = fstmt.FieldStatement(test_case, field_mock, const.return_value) const3 = ps.ConstructorStatement(test_case, constructor_mock) test_case.add_statement(const) test_case.add_statement(const2) test_case.add_statement(field) test_case.add_statement(const3) assert field.mutate() assert field.source == const2.return_value
def add_field( self, test_case: tc.TestCase, field: gao.GenericField, position: int = -1, recursion_depth: int = 0, callee: Optional[vr.VariableReference] = None, ) -> vr.VariableReference: """Adds a field access to a test case at a given position. If the position is not given, the field access will be appended to the end of the test case. A given recursion depth controls how far the factory searches for suitable parameter values. Args: test_case: The test case field: The field access to add to the test case position: The position where to put the statement in the test case, defaults to the end of the test case recursion_depth: A recursion limit for the search of values callee: The callee, if it is already known. Returns: A variable reference to the field value Raises: ConstructionFailedException: if construction of an object failed """ self._logger.debug("Adding field %s", field) if recursion_depth > config.INSTANCE.max_recursion: self._logger.debug("Max recursion depth reached") raise ConstructionFailedException("Max recursion depth reached") if position < 0: position = test_case.size() length = test_case.size() if callee is None: callee = self._create_or_reuse_variable(test_case, field.owner, position, recursion_depth, allow_none=False) assert callee, "The callee must not be None" position = position + test_case.size() - length statement = f_stmt.FieldStatement(test_case, field, callee) return test_case.add_statement(statement, position)
def test_get_var_references(test_case_mock, variable_reference_mock, field_mock): statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert statement.get_variable_references() == {variable_reference_mock}
def test_field_statement_eq_same(test_case_mock, variable_reference_mock, field_mock): statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert statement.__eq__(statement)
def test_accessible_object(test_case_mock, variable_reference_mock, field_mock): stmt = fstmt.FieldStatement(test_case_mock, field_mock, variable_reference_mock) assert stmt.accessible_object() == field_mock
def test_new_source(test_case_mock, variable_reference_mock, field_mock): stmt = fstmt.FieldStatement(test_case_mock, field_mock, variable_reference_mock) new_source = MagicMock(vr.VariableReference) stmt.source = new_source assert stmt.source == new_source
def test_field_statement(test_case_mock, variable_reference_mock, field_mock): field_statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert field_statement.field == field_mock
def test_mutate_not(test_case_mock, field_mock, variable_reference_mock): config.INSTANCE.change_parameter_probability = 0.0 statement = fstmt.FieldStatement( test_case_mock, field_mock, variable_reference_mock ) assert not statement.mutate()