def runTest(self):
        def model(
            environment: FullResolvingEnvironment
        ) -> string_sources.StringSource:
            return string_sources.of_lines__w_check_for_validity(
                self,
                with_appended_new_lines([
                    str(environment.tcds.hds.case_dir),
                    str(environment.tcds.hds.act_dir),
                    str(environment.tcds.sds.act_dir),
                    str(environment.tcds.sds.user_tmp_dir),
                ]),
                environment.application_environment.tmp_files_space.
                sub_dir_space())

        expected = with_appended_new_lines([
            path.EXACTLY_DIR__REL_HDS_CASE,
            path.EXACTLY_DIR__REL_HDS_ACT,
            path.EXACTLY_DIR__REL_ACT,
            path.EXACTLY_DIR__REL_TMP,
        ])

        integration_check.CHECKER__PARSE_SIMPLE.check__w_source_variants(
            self, Arguments(args.tcds_path_replacement()), model,
            arrangement_w_tcds(),
            expectation_of_successful_execution_2(
                symbol_references=asrt.is_empty_sequence,
                output_lines=expected,
                may_depend_on_external_resources=False,
                is_identity_transformer=False,
                adv=freeze_check.
                first_invoked_method_of_source_model__is_freeze,
            ))
 def test_no_lines(self):
     integration_check.CHECKER__PARSE_FULL.check__w_source_variants(
         self, Arguments(self.config.arguments),
         model_constructor.of_lines(self, []), arrangement_w_tcds(),
         expectation_of_successful_execution_2(
             symbol_references=asrt.is_empty_sequence,
             output_lines=[],
             may_depend_on_external_resources=False,
             is_identity_transformer=False,
             adv=freeze_check.
             first_invoked_method_of_source_model__is_freeze,
         ))
Exemple #3
0
def expectation_of_successful_replace_execution(
    output_lines: List[str],
    symbol_references: Assertion[
        Sequence[SymbolReference]] = asrt.anything_goes(),
    may_depend_on_external_resources: bool = False,
) -> StExpectation:
    return integration_check.expectation_of_successful_execution_2(
        output_lines,
        may_depend_on_external_resources,
        symbol_references,
        False,
        adv=freeze_check.first_invoked_method_of_source_model__is_freeze,
    )
Exemple #4
0
    def runTest(self):
        # ARRANGE #
        symbol_1 = NameAndValue('symbol_1_name', 'added by 1st transformer')
        symbol_2 = NameAndValue('symbol_2_name', 'added by 2nd transformer')
        symbol_3 = NameAndValue('symbol_3_name', 'added by 3rd transformer')

        cases = [
            NameAndValue('2 transformers', [
                symbol_1,
                symbol_2,
            ]),
            NameAndValue('3 transformers', [
                symbol_1,
                symbol_2,
                symbol_3,
            ]),
        ]
        for case in cases:
            sequenced_transformer_symbols = case.value

            arguments = st_args.syntax_for_sequence_of_transformers(
                [symbol.name for symbol in sequenced_transformer_symbols])

            initial_line = 'initial line\n'
            initial_model_lines = [initial_line]

            expected_output_lines = [initial_line] + [
                symbol.value + '\n' for symbol in sequenced_transformer_symbols
            ]

            symbol_contexts = [
                StringTransformerSymbolContext.of_primitive(
                    symbol.name, string_transformers.add_line(symbol.value))
                for symbol in sequenced_transformer_symbols
            ]
            # ACT & ASSERT #

            with self.subTest(case.name):
                integration_check.CHECKER__PARSE_FULL.check__w_source_variants(
                    self, Arguments(arguments),
                    model_constructor.of_lines(self, initial_model_lines),
                    arrangement_w_tcds(
                        symbols=SymbolContext.symbol_table_of_contexts(
                            symbol_contexts)),
                    expectation_of_successful_execution_2(
                        output_lines=expected_output_lines,
                        symbol_references=SymbolContext.
                        references_assertion_of_contexts(symbol_contexts),
                        may_depend_on_external_resources=False,
                        is_identity_transformer=False,
                    ))
Exemple #5
0
def _check(
    put: unittest.TestCase,
    input_lines: List[str],
    expected_lines: List[str],
):
    integration_check.CHECKER__PARSE_SIMPLE.check__w_source_variants(
        put, Arguments(args.strip_space()),
        model_constructor.of_lines(put, input_lines), arrangement_w_tcds(),
        expectation_of_successful_execution_2(
            symbol_references=asrt.is_empty_sequence,
            output_lines=expected_lines,
            may_depend_on_external_resources=False,
            is_identity_transformer=False,
            adv=freeze_check.first_invoked_method_of_source_model__is_freeze,
        ))
Exemple #6
0
    def runTest(self):
        input_lines = ['1st\n', '2nd\n', '3rd\n']
        range_expr = '1+1'
        evaluated_expr = 2
        expected_output_lines = input_lines[:evaluated_expr]

        arguments = single_line_arguments(range_expr)
        integration_check.CHECKER__PARSE_SIMPLE.check__w_source_variants_for_full_line_parser_2(
            self, arguments.as_arguments,
            model_constructor.of_lines(self,
                                       input_lines,
                                       may_depend_on_external_resources=False),
            arrangement_w_tcds(),
            integration_check.expectation_of_successful_execution_2(
                symbol_references=asrt.is_empty_sequence,
                output_lines=expected_output_lines,
                may_depend_on_external_resources=False,
                is_identity_transformer=False,
            ))
Exemple #7
0
    def runTest(self):
        # ARRANGE #
        for may_dep__src_model in [False, True]:
            for may_dep__t1 in [False, True]:
                for may_dep__t2 in [False, True]:
                    dependencies = [
                        may_dep__src_model, may_dep__t1, may_dep__t2
                    ]
                    resulting_model_may_dep = any(dependencies)

                    with self.subTest(dependencies):
                        trans_1 = self._sym_ctx_of('trans_1', may_dep__t1)
                        trans_2 = self._sym_ctx_of('trans_2', may_dep__t2)

                        symbol_contexts = [trans_1, trans_2]
                        arguments = st_args.syntax_for_sequence_of_transformers(
                            [
                                trans.name__sym_ref_syntax
                                for trans in symbol_contexts
                            ])
                        # ACT & ASSERT #

                        integration_check.CHECKER__PARSE_FULL.check(
                            self, remaining_source(arguments),
                            model_constructor.empty(
                                self,
                                may_depend_on_external_resources=
                                may_dep__src_model),
                            arrangement_w_tcds(
                                symbols=SymbolContext.symbol_table_of_contexts(
                                    symbol_contexts)),
                            expectation_of_successful_execution_2(
                                output_lines=[],
                                symbol_references=SymbolContext.
                                references_assertion_of_contexts(
                                    symbol_contexts),
                                may_depend_on_external_resources=
                                resulting_model_may_dep,
                                is_identity_transformer=False,
                            ))
Exemple #8
0
    def runTest(self):
        # ARRANGE #
        input_lines = ['1\n', '2\n', '3\n']
        single_range_1_symbol = StringIntConstantSymbolContext(
            'RANGE_SYMBOL_1',
            1,
            default_restrictions=IS_RANGE_EXPR_STR_REFERENCE_RESTRICTIONS,
        )
        single_range_2_symbol = StringIntConstantSymbolContext(
            'RANGE_SYMBOL_2',
            3,
            default_restrictions=IS_RANGE_EXPR_STR_REFERENCE_RESTRICTIONS,
        )
        symbols = [single_range_1_symbol, single_range_2_symbol]

        expected_output_lines = [
            input_lines[single_range_1_symbol.int_value - 1],
            input_lines[single_range_2_symbol.int_value - 1]
        ]

        arguments = args.filter_line_nums__multi([
            range_args.SingleLineRange(
                single_range_1_symbol.name__sym_ref_syntax),
            range_args.SingleLineRange(
                single_range_2_symbol.name__sym_ref_syntax),
        ])
        integration_check.CHECKER__PARSE_SIMPLE.check__w_source_variants_for_full_line_parser_2(
            self, arguments.as_arguments,
            model_constructor.of_lines(self,
                                       input_lines,
                                       may_depend_on_external_resources=False),
            arrangement_w_tcds(
                symbols=SymbolContext.symbol_table_of_contexts(symbols), ),
            integration_check.expectation_of_successful_execution_2(
                symbol_references=SymbolContext.
                references_assertion_of_contexts(symbols),
                output_lines=expected_output_lines,
                may_depend_on_external_resources=False,
                is_identity_transformer=False,
            ))
 def test_every_line_SHOULD_be_transformed(self):
     # ARRANGE #
     trans_fun = self.config.str_transformer
     input_lines = [
         'I object!',
         'Object Oriented',
         'Unidentified FLYING Object',
     ]
     expected_lines = [trans_fun(line) for line in input_lines]
     # ACT & ASSERT #
     integration_check.CHECKER__PARSE_FULL.check__w_source_variants(
         self, Arguments(self.config.arguments),
         model_constructor.of_lines_wo_nl(self, input_lines),
         arrangement_w_tcds(),
         expectation_of_successful_execution_2(
             symbol_references=asrt.is_empty_sequence,
             output_lines=with_appended_new_lines(expected_lines),
             may_depend_on_external_resources=False,
             is_identity_transformer=False,
             adv=freeze_check.
             first_invoked_method_of_source_model__is_freeze,
         ))
Exemple #10
0
 def runTest(self):
     # ARRANGE #
     input_lines = ['1\n', '2\n', '3\n']
     expected_output_lines = input_lines[:2]
     range_expr = StringSymbolContext.of_constant(
         'RANGE_SYMBOL',
         '2',
         default_restrictions=IS_RANGE_EXPR_STR_REFERENCE_RESTRICTIONS,
     )
     integration_check.CHECKER__PARSE_SIMPLE.check__w_source_variants_for_full_line_parser_2(
         self,
         single_line_arguments(
             range_expr.name__sym_ref_syntax).as_arguments,
         model_constructor.of_lines(self,
                                    input_lines,
                                    may_depend_on_external_resources=False),
         arrangement_w_tcds(symbols=range_expr.symbol_table, ),
         integration_check.expectation_of_successful_execution_2(
             symbol_references=range_expr.references_assertion,
             output_lines=expected_output_lines,
             may_depend_on_external_resources=False,
             is_identity_transformer=False,
         ))