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, ))
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, )
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, ))
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, ))
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, ))
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, ))
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, ))
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, ))