예제 #1
0
def check__w_access_of_all_model_properties(
    put: unittest.TestCase,
    range_expr: Sequence[range_args.Range],
    input_and_expected: InputAndExpectedWExtDeps,
):
    arguments = args.filter_line_nums__multi(range_expr)
    for source_may_depend_on_external_resources in [False, True]:
        with put.subTest(may_depend_on_external_resources=
                         source_may_depend_on_external_resources):
            integration_check.CHECKER__PARSE_SIMPLE.check(
                put, arguments.as_remaining_source,
                model_constructor.of_lines(
                    put,
                    input_and_expected.input,
                    may_depend_on_external_resources=
                    source_may_depend_on_external_resources,
                ), arrangement_w_tcds(),
                integration_check.expectation_of_successful_execution(
                    symbol_references=asrt.is_empty_sequence,
                    output_lines=input_and_expected.expected.lines,
                    may_depend_on_external_resources=input_and_expected.
                    expected.may_dep_on_ext_rsrc(
                        source_may_depend_on_external_resources),
                    frozen_may_depend_on_external_resources=asrt.anything_goes(
                    ),
                    is_identity_transformer=False,
                ))
예제 #2
0
 def argument_cases(self) -> List[str]:
     return [
         args.filter_line_nums(ranges.single(7).as_arg).as_str,
         args.filter_line_nums(ranges.single(-7).as_arg).as_str,
         args.filter_line_nums(ranges.to_(5).as_arg).as_str,
         args.filter_line_nums(ranges.to_(-5).as_arg).as_str,
         args.filter_line_nums(ranges.from_(5).as_arg).as_str,
         args.filter_line_nums(ranges.from_(-5).as_arg).as_str,
         args.filter_line_nums(ranges.from_to(5, 6).as_arg).as_str,
         args.filter_line_nums(ranges.from_to(-8, 8).as_arg).as_str,
         args.filter_line_nums(ranges.from_to(2, -2).as_arg).as_str,
         args.filter_line_nums(ranges.from_to(-5, -3).as_arg).as_str,
         args.filter_line_nums__multi(
             [ranges.single(5).as_arg,
              ranges.single(6).as_arg]).as_str,
         args.filter_line_nums__multi(
             [ranges.single(-5).as_arg,
              ranges.single(-6).as_arg]).as_str,
     ]
예제 #3
0
def check__w_max_as_lines_invocations__wo_max_lines_from_iter(
    put: unittest.TestCase,
    range_expr: Sequence[range_args.Range],
    input_and_expected: InputAndExpected,
    max_as_lines_invocations: int = 1,
):
    arguments = args.filter_line_nums__multi(range_expr)
    integration_check.CHECKER__PARSE_SIMPLE__WO_IMPLICIT_MODEL_EVALUATION.check(
        put, arguments.as_remaining_source,
        model_constructor.of_lines__w_max_invocations(
            put,
            input_and_expected.input,
            max_as_lines_invocations,
        ), arrangement_wo_tcds(),
        expectation_of_successful_execution__check_only_as_lines(
            symbol_references=asrt.is_empty_sequence,
            output_lines=input_and_expected.expected,
        ))
예제 #4
0
 def runTest(self):
     invalid_int_expr = range_args.SingleLineRange('1.5')
     valid_int_expr = range_args.SingleLineRange('1')
     range_expression_cases = [
         [invalid_int_expr, valid_int_expr, valid_int_expr],
         [valid_int_expr, invalid_int_expr, valid_int_expr],
         [valid_int_expr, valid_int_expr, invalid_int_expr],
     ]
     for range_expressions in range_expression_cases:
         with self.subTest([str(r) for r in range_expressions]):
             integration_check.CHECKER__PARSE_SIMPLE.check(
                 self,
                 args.filter_line_nums__multi(
                     range_expressions).as_remaining_source,
                 model_constructor.arbitrary(self), arrangement_wo_tcds(),
                 Expectation(
                     ParseExpectation(),
                     ExecutionExpectation(validation=ValidationAssertions.
                                          pre_sds_fails__w_any_msg(), ),
                 ))
예제 #5
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,
            ))