Пример #1
0
    def test_superfluous_arguments(self):
        # ARRANGE #
        arbitrary_transformer_symbol = StringTransformerSymbolContext.of_arbitrary_value(
            'TRANSFORMER_SYMBOL')

        src_file_relativity_conf = conf_rel_hds(RelHdsOptionType.REL_HDS_CASE)

        file_contents_builder = string_source_abs_stx.TransformableAbsStxBuilder(
            string_source_abs_stx.StringSourceOfFileAbsStx(
                src_file_relativity_conf.path_abs_stx_of_name('src-file.txt')))

        file_contents_cases = [
            NameAndValue('contents of existing file / without transformation',
                         file_contents_builder.without_transformation()),
            NameAndValue(
                'contents of existing file / with transformation',
                file_contents_builder.with_transformation(
                    arbitrary_transformer_symbol.abstract_syntax)),
        ]

        for file_contents_case in file_contents_cases:
            valid_instruction_syntax = instr_abs_stx.create_w_explicit_contents(
                path_abs_stx.DefaultRelPathAbsStx('dst-file.txt'),
                file_contents_case.value,
            )
            invalid_instruction_syntax = custom_abs_stx.SequenceAbsStx([
                valid_instruction_syntax,
                custom_abs_stx.CustomAbstractSyntax.singleton(
                    'superfluous_argument')
            ])
            with self.subTest(file_contents_variant=file_contents_case.name):
                # ACT & ASSERT #
                check_invalid_syntax__abs_stx(self, invalid_instruction_syntax)
Пример #2
0
    def test_transformation_in_referenced_program_and_as_source_argument(self):
        # ARRANGE #
        valid_transformer = StringTransformerSymbolContext.of_arbitrary_value(
            'VALID_TRANSFORMER', )

        referenced_program__system_program = 'the-system-program'

        for validation_case in validation_cases.failing_validation_cases(
                'INVALID_TRANSFORMER'):
            invalid_transformer_location_cases = [
                ValidationCaseWAccumulation(
                    'in referenced program',
                    of_referenced_program=validation_case.value.symbol_context,
                    accumulated=valid_transformer,
                ),
                ValidationCaseWAccumulation(
                    'in referenced program',
                    of_referenced_program=valid_transformer,
                    accumulated=validation_case.value.symbol_context,
                ),
            ]
            for invalid_transformer_location_case in invalid_transformer_location_cases:
                referenced_program__sdv = program_sdvs.system_program(
                    string_sdvs.str_constant(
                        referenced_program__system_program),
                    transformations=[
                        invalid_transformer_location_case.
                        of_referenced_program.reference_sdv
                    ])
                referenced_program = ProgramSymbolContext.of_sdv(
                    'REFERENCED_PROGRAM', referenced_program__sdv)
                program_w_transformer = FullProgramAbsStx(
                    ProgramOfSymbolReferenceAbsStx(referenced_program.name, ),
                    transformation=invalid_transformer_location_case.
                    accumulated.abstract_syntax,
                )
                symbols__all = [
                    referenced_program,
                    valid_transformer,
                    validation_case.value.symbol_context,
                ]
                symbols__expected_references = [
                    referenced_program,
                    invalid_transformer_location_case.accumulated
                ]

                with self.subTest(validation=validation_case.name,
                                  invalid_transformer_location=
                                  invalid_transformer_location_case.name):
                    # ACT & ASSERT #
                    CHECKER_WO_EXECUTION.check__abs_stx__layouts__source_variants__wo_input(
                        self,
                        equivalent_source_variants__for_expr_parse__s__nsc,
                        program_w_transformer,
                        arrangement_wo_tcds(
                            symbols=SymbolContext.symbol_table_of_contexts(
                                symbols__all), ),
                        MultiSourceExpectation.of_const(
                            symbol_references=SymbolContext.
                            references_assertion_of_contexts(
                                symbols__expected_references),
                            execution=ExecutionExpectation(
                                validation=validation_case.value.expectation,
                            ),
                            primitive=asrt.anything_goes(),
                        ))