示例#1
0
 def is_section_item(self,
                     put: unittest.TestCase,
                     value,
                     message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
     asrt.IsInstance(doc.SectionItem).apply(put, value, message_builder)
     assert isinstance(value, doc.SectionItem)
     asrt.sub_component('header',
                        doc.SectionItem.header.fget,
                        is_text
                        ).apply(put, value, message_builder)
     asrt.sub_component('tags',
                        doc.SectionItem.tags.fget,
                        asrt.is_instance_with(set,
                                              asrt.on_transformed(list,
                                                                  asrt.is_sequence_of(asrt.is_instance(str)))
                                              )
                        ).apply(put, value, message_builder)
     asrt.sub_component('target',
                        doc.SectionItem.target.fget,
                        asrt.is_instance(core.CrossReferenceTarget)),
     if isinstance(value, doc.Article):
         is_article_contents.apply(put, value.contents,
                                   message_builder.for_sub_component('article_contents'))
     elif isinstance(value, doc.Section):
         is_section_contents.apply(put, value.contents,
                                   message_builder.for_sub_component('section_contents'))
     else:
         asrt.fail('Not a {}: {}'.format(str(doc.SectionItem), str(value)))
示例#2
0
 def test_false__with_message_builder(self):
     with self.assertRaises(TestException):
         value = ['not none']
         sut.sub_component('component name', lambda x: x[0],
                           sut.ValueIsNone()).apply(
                               self.put, value,
                               sut.MessageBuilder('message head'))
示例#3
0
 def __init__(self, put: unittest.TestCase, arrangement: ArrangementPostAct,
              expectation: MultiSourceExpectation):
     super().__init__(put, arrangement, expectation)
     self.put = put
     self.arrangement = arrangement
     self.expectation = expectation
     self.message_builder = asrt.MessageBuilder()
示例#4
0
 def runTest(self):
     # ARRANGE #
     may_depend_on_external_resources = False
     contents = 'the contents'
     expectation = sut.ExpectationOnUnFrozenAndFrozen.equals(
         contents,
         may_depend_on_external_resources=asrt.equals(
             may_depend_on_external_resources),
         frozen_may_depend_on_external_resources=asrt.equals(
             may_depend_on_external_resources),
     )
     data__before_and_after_freeze = StringSourceData(
         contents, may_depend_on_external_resources)
     source_constructor = ConstructorOfStringSourceData(
         data__before_and_after_freeze,
         data__before_and_after_freeze,
     )
     for checker_variant in check_variants(expectation):
         with self.subTest(checker_variant.name):
             # ACT & ASSERT #
             checker_variant.value.apply(
                 self,
                 sut.SourceConstructors.of_common(source_constructor),
                 asrt.MessageBuilder(),
             )
示例#5
0
 def __init__(self,
              expected: CrossReferenceId,
              put: unittest.TestCase,
              message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
     self.put = put
     self.message_builder = message_builder
     self.expected = expected
示例#6
0
 def test_true(self):
     value = [None]
     sut.sub_component('component name', lambda x: x[0],
                       sut.ValueIsNone()).apply(self.put, value)
     sut.sub_component('component name', lambda x: x[0],
                       sut.ValueIsNone()).apply(
                           self.put, value,
                           sut.MessageBuilder('message head'))
示例#7
0
 def runTest(self):
     command_line_arguments = self.test_case.arrangement.command_line_arguments(
     )
     sub_process_result = self.main_program_runner.run(
         self, command_line_arguments)
     message_builder = value_assertion.MessageBuilder(
         '(stderr = "%s")' % sub_process_result.stderr)
     self.test_case.assertion.apply(self, sub_process_result,
                                    message_builder)
示例#8
0
 def _execute_validate_post_setup(self,
                                  environment: InstructionEnvironmentForPostSdsStep,
                                  instruction: AssertPhaseInstruction) -> svh.SuccessOrValidationErrorOrHardError:
     result = instruction.validate_post_setup(environment)
     self.put.assertIsNotNone(result,
                              'Result from validate method cannot be None')
     self.expectation.validation_post_sds.apply(self.put, result,
                                                asrt.MessageBuilder('result of validate/post setup'))
     return result
示例#9
0
def matcher_that_asserts_model_is_frozen(
        put: unittest.TestCase, result: bool,
        matcher_name: str) -> MatcherWTrace[TestModelWFreezing]:
    assert_model_is_frozen = ActionThatAppliesAssertion2(
        put,
        asrt.sub_component('is_frozen', TestModelWFreezing.is_frozen,
                           asrt.equals(True)),
        asrt.MessageBuilder(matcher_name))
    return MatcherWInitialAction(assert_model_is_frozen.action,
                                 matching_result.of(result))
示例#10
0
 def test_generate_and_output_SHOULD_output_xhtml(self):
     # ARRANGE #
     application_help = new_application_help(
         default_instructions_setup.INSTRUCTIONS_SETUP,
         CONFIGURATION_SECTION_INSTRUCTIONS)
     output_file = io.StringIO()
     # ACT #
     sut.generate_and_output(output_file, application_help)
     # ASSERT #
     actual_output = output_file.getvalue()
     begins_with(DOCTYPE_XHTML1_0).apply(self, actual_output,
                                         asrt.MessageBuilder('file output'))
 def __init__(
     self,
     put: unittest.TestCase,
     arrangement: Arrangement,
     symbols_after_parse: Assertion[Sequence[SymbolUsage]],
     symbols_after_main: Assertion[SymbolTable],
     expectation: ExecutionExpectation[T],
 ):
     self.put = put
     self.arrangement = arrangement
     self.symbols_after_parse = symbols_after_parse
     self.symbols_after_main = symbols_after_main
     self.expectation = expectation
     self.message_builder = asrt.MessageBuilder()
示例#12
0
def test__va(put: unittest.TestCase,
             test_case: TestCase,
             arrangement: Arrangement,
             assertions_on_result: Assertion[Result],
             is_keep_sandbox_during_assertions: bool = False):
    with preserved_cwd():
        result = _execute(test_case,
                          arrangement,
                          is_keep_sandbox=is_keep_sandbox_during_assertions)

        assertions_on_result.apply(put, result, asrt.MessageBuilder('Result'))
    # CLEANUP #
    if result.sds.root_dir.exists():
        shutil.rmtree(str(result.sds.root_dir), ignore_errors=True)
示例#13
0
def check(put: unittest.TestCase,
          arrangement: Arrangement,
          expectation: Expectation,
          is_keep_sandbox: bool = False):
    exe_conf = ExecutionConfiguration(
        arrangement.predefined_properties.default_environ_getter,
        arrangement.predefined_properties.environ,
        arrangement.predefined_properties.timeout_in_seconds,
        arrangement.os_services, sandbox_root_name_resolver.for_test(),
        arrangement.mem_buff_size,
        arrangement.predefined_properties.predefined_symbols)
    result = execution.execute(exe_conf, arrangement.configuration_builder,
                               is_keep_sandbox, arrangement.test_case)
    expectation.full_result.apply(put, result,
                                  asrt.MessageBuilder('FullExeResult'))
示例#14
0
 def is_section_contents(self,
                         put: unittest.TestCase,
                         value,
                         message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
     asrt.And([
         asrt.IsInstance(doc.SectionContents),
         asrt.sub_component_sequence('initial_paragraphs',
                                     doc.SectionContents.initial_paragraphs.fget,
                                     is_paragraph_item)
     ]).apply(put, value, message_builder)
     assert isinstance(value, doc.SectionContents)
     sections_message = asrt.sub_component_builder('sections', message_builder)
     asrt.IsInstance(list).apply(put, value.sections, sections_message)
     for (idx, section) in enumerate(value.sections):
         self.is_section_item(put, section,
                              asrt.sub_component_builder('[%d]' % idx, sections_message))
def assert_equals_single_line(test_case: unittest.TestCase,
                              expected: Line,
                              actual: LineSequence,
                              message_header: str = None):
    """
    :param expected: May be None
    :param actual: May be None
    :param message_header: Optional header for assert messages.
    """
    if expected is None:
        assertion = asrt.is_none
    else:
        assertion = equals_line_sequence(line_sequence_from_line(expected))
    message_builder = asrt.MessageBuilder(
        '' if message_header is None else message_header)

    assertion.apply(test_case, actual, message_builder)
示例#16
0
def check(put: unittest.TestCase,
          actual: DdvValidator,
          arrangement: Arrangement,
          expectation: Expectation,
          message_builder: asrt.MessageBuilder = asrt.MessageBuilder()):
    with tcds_with_act_as_curr_dir_2(
            tcds_contents=arrangement.dir_contents) as tcds:
        actual_validation_result = actual.validate_pre_sds_if_applicable(
            tcds.hds)
        expectation.pre_sds.apply(
            put, actual_validation_result,
            message_builder.for_sub_component('validation pre sds'))
        if actual_validation_result is not None:
            return
        actual_validation_result = actual.validate_post_sds_if_applicable(tcds)
        expectation.post_sds.apply(
            put, actual_validation_result,
            message_builder.for_sub_component('validation post sds'))
示例#17
0
    def _check_sdv(
        self,
        put: unittest.TestCase,
        parsed_object,
        symbol_references: Assertion[Sequence[SymbolReference]],
    ):
        message_builder = asrt.MessageBuilder('parsed object')
        asrt.is_instance(FullDepsSdv).apply(
            put, parsed_object,
            message_builder.for_sub_component('object type'))

        assert isinstance(parsed_object, FullDepsSdv)  # Type info for IDE

        self._configuration.new_sdv_checker().check(put, parsed_object,
                                                    message_builder)
        symbol_references.apply(
            put, parsed_object.references,
            message_builder.for_sub_component('symbol references'))
 def __init__(
     self,
     put: unittest.TestCase,
     arrangement: Arrangement,
     expectation: Expectation[T],
     extra_source_expectation: Assertion[ParseSource] = asrt.anything_goes(
     ),
 ):
     self.put = put
     self.arrangement = arrangement
     self.expectation = expectation
     self.message_builder = asrt.MessageBuilder()
     self.extra_source_expectation = extra_source_expectation
     self.parse_checker = _ParseChecker(self.put, expectation.symbol_usages,
                                        expectation.source,
                                        extra_source_expectation)
     self.execution_checker = _ExecutionChecker(
         self.put, arrangement, expectation.symbol_usages,
         expectation.symbols_after_main, expectation)
示例#19
0
    def _parse(self, source: ParseSource) -> FullDepsSdv[PRIMITIVE]:
        sdv = self.parser.parse(source)

        self.source_expectation.apply_with_message(
            self.put,
            source,
            'source after parse',
        )

        message_builder = asrt.MessageBuilder('parsed object')

        self.expectation.parse.symbol_references.apply(
            self.put,
            sdv.references,
            message_builder.for_sub_component('symbol references'),
        )
        self.configuration.new_sdv_checker().check(
            self.put,
            sdv,
            message_builder,
        )
        return sdv
 def _check_instance_and(self, object_name: str, expected_class: type,
                         additional: Assertion, actual):
     asrt.And([asrt.IsInstance(expected_class),
               additional]).apply(self.put, actual,
                                  asrt.MessageBuilder(object_name))
 def _check_side_effects_on_tcds(self, tcds: TestCaseDs):
     self.expectation.main_side_effects_on_tcds.apply(
         self.put, tcds, asrt.MessageBuilder('side effects on HomeAndSds'))
 def _check_main_side_effects_on_sds(self, tcds: TestCaseDs):
     self.expectation.main_side_effects_on_sds.apply(
         self.put, tcds.sds,
         asrt.MessageBuilder('main side effects on SDS'))
示例#23
0
 def test_empty_list(self):
     self.every_element_is_none.apply(self.put, [])
     self.every_element_is_none.apply(self.put, [],
                                      sut.MessageBuilder('message head'))
示例#24
0
 def test_none(self):
     sut.ValueIsNone().apply(self.put, None)
     sut.ValueIsNone().apply(self.put, None, sut.MessageBuilder('head'))
示例#25
0
 def test_not_none(self):
     with self.assertRaises(TestException):
         sut.ValueIsNone().apply(self.put, 'not none')
     with self.assertRaises(TestException):
         sut.ValueIsNone().apply(self.put, 'not none',
                                 sut.MessageBuilder('head'))
示例#26
0
 def _check(self, component: str, assertion: Assertion, actual):
     assertion.apply(self.put, actual, asrt.MessageBuilder(component))
     return actual
示例#27
0
 def test_none__with_message_builder(self):
     with self.assertRaises(TestException):
         sut.ValueIsNotNone().apply(self.put, None,
                                    sut.MessageBuilder('message head'))
示例#28
0
 def test_not_none(self):
     sut.ValueIsNotNone().apply(self.put, 'not none')
     sut.ValueIsNotNone().apply(self.put, 'not none',
                                sut.MessageBuilder('head'))
示例#29
0
 def test_consume_with_valid_arguments(self):
     test_cases = [
         (TestSetupForConsume('one whole line and part of next, with one line remaining',
                              source_lines=['123',
                                            '45',
                                            '6'],
                              number_of_characters_to_consume_from_current_line_before_test=0,
                              number_of_characters_to_consume=4 + 1),
          assert_source(is_at_eof=asrt.equals(False),
                        is_at_eol=asrt.equals(False),
                        is_at_eol__except_for_space=asrt.equals(False),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        column_index=asrt.equals(1),
                        remaining_part_of_current_line=asrt.equals('5'),
                        remaining_source=asrt.equals('5\n6'))),
         (TestSetupForConsume('one whole line and part of next, with one line remaining, on column index 1',
                              source_lines=['123',
                                            '45',
                                            '6'],
                              number_of_characters_to_consume_from_current_line_before_test=1,
                              number_of_characters_to_consume=4 + 1 - 1),
          assert_source(is_at_eof=asrt.equals(False),
                        is_at_eol=asrt.equals(False),
                        is_at_eol__except_for_space=asrt.equals(False),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        column_index=asrt.equals(1),
                        remaining_part_of_current_line=asrt.equals('5'),
                        remaining_source=asrt.equals('5\n6'))),
         (TestSetupForConsume('two whole lines, with one line remaining',
                              source_lines=['123',
                                            '45',
                                            '6'],
                              number_of_characters_to_consume_from_current_line_before_test=0,
                              number_of_characters_to_consume=5 + 1),
          assert_source(is_at_eof=asrt.equals(False),
                        is_at_eol=asrt.equals(True),
                        is_at_eol__except_for_space=asrt.equals(True),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        column_index=asrt.equals(2),
                        remaining_part_of_current_line=asrt.equals(''),
                        remaining_source=asrt.equals('\n6'))),
         (TestSetupForConsume('two whole lines, with one line remaining, on column index 2',
                              source_lines=['123',
                                            '45',
                                            '6'],
                              number_of_characters_to_consume_from_current_line_before_test=2,
                              number_of_characters_to_consume=5 + 1 - 2),
          assert_source(is_at_eof=asrt.equals(False),
                        is_at_eol=asrt.equals(True),
                        is_at_eol__except_for_space=asrt.equals(True),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        column_index=asrt.equals(2),
                        remaining_part_of_current_line=asrt.equals(''),
                        remaining_source=asrt.equals('\n6'))),
         (TestSetupForConsume('two whole lines, with no line after',
                              source_lines=['123',
                                            '45'],
                              number_of_characters_to_consume_from_current_line_before_test=0,
                              number_of_characters_to_consume=5 + 1),
          assert_source(is_at_eof=asrt.equals(True),
                        is_at_eol=asrt.equals(True),
                        is_at_eol__except_for_space=asrt.equals(True),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        remaining_part_of_current_line=asrt.equals(''),
                        remaining_source=asrt.equals(''))),
         (TestSetupForConsume('two whole lines, with no line after, on column index 3',
                              source_lines=['123',
                                            '45'],
                              number_of_characters_to_consume_from_current_line_before_test=3,
                              number_of_characters_to_consume=5 + 1 - 3),
          assert_source(is_at_eof=asrt.equals(True),
                        is_at_eol=asrt.equals(True),
                        is_at_eol__except_for_space=asrt.equals(True),
                        has_current_line=asrt.equals(True),
                        current_line_number=asrt.equals(2),
                        current_line_text=asrt.equals('45'),
                        column_index=asrt.equals(2),
                        remaining_part_of_current_line=asrt.equals(''),
                        remaining_source=asrt.equals(''))),
     ]
     for setup, assertion in test_cases:
         with self.subTest(case_name=setup.name):
             source_lines = '\n'.join(setup.source_lines)
             source = ParseSource(source_lines)
             source.consume_part_of_current_line(setup.number_of_characters_to_consume_from_current_line_before_test)
             source.consume(setup.number_of_characters_to_consume)
             assertion.apply(self, source, asrt.MessageBuilder(setup.name))
示例#30
0
 def test_true(self):
     value = [None]
     sut.OnTransformed(lambda x: x[0],
                       sut.ValueIsNone()).apply(self.put, value)
     sut.OnTransformed(lambda x: x[0], sut.ValueIsNone()).apply(
         self.put, value, sut.MessageBuilder('message head'))