Пример #1
0
 def test_successful_sequence(self):
     phase_contents = SectionContents((
         new_instruction_element(Line(1, '1'),
                                 TestInstruction('First instruction')),
         new_comment_element(Line(2, '2')),
         new_instruction_element(Line(3, '3'),
                                 TestInstruction('Second instruction')),
         new_comment_element(Line(4, '4')),
         new_comment_element(Line(50, '50')),
         new_instruction_element(Line(60, '60'),
                                 TestInstruction('Third instruction')),
         new_instruction_element(Line(70, '70'),
                                 TestInstruction('Fourth instruction')),
         new_comment_element(Line(80, '80')),
     ))
     self._standard_test_with_successful_instruction_executor(
         phase_contents, asrt_failure.is_not_present(), [
             'instruction header for source line number: 1',
             'instruction executor: First instruction',
             'comment header for source line number: 2',
             'instruction header for source line number: 3',
             'instruction executor: Second instruction',
             'comment header for source line number: 4',
             'comment header for source line number: 50',
             'instruction header for source line number: 60',
             'instruction executor: Third instruction',
             'instruction header for source line number: 70',
             'instruction executor: Fourth instruction',
             'comment header for source line number: 80',
         ])
Пример #2
0
 def test_middle_instruction_fails(self):
     recording_media = RecordingMedia()
     instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor(
         instruction_with_name('Middle instruction'),
         recording_media.new_recorder_with_header('instruction executor'),
         PartialInstructionControlledFailureInfo(
             PartialControlledFailureEnum.FAIL,
             asrt_text_doc.new_single_string_text_for_test('fail message')))
     phase_contents = SectionContents((
         new_instruction_element(Line(1, '1'),
                                 TestInstruction('First instruction')),
         new_instruction_element(Line(2, '2'),
                                 TestInstruction('Middle instruction')),
         new_instruction_element(Line(3, '3'),
                                 TestInstruction('Last instruction')),
     ))
     self._standard_test(
         recording_media, phase_contents, instruction_executor,
         asrt_failure.is_present_with(
             ExecutionFailureStatus.FAIL,
             equals_single_line_source_location_path(Line(2, '2')),
             asrt_failure_details.is_failure_message_of('fail message')), [
                 'instruction header for source line number: 1',
                 'instruction executor: First instruction',
                 'instruction header for source line number: 2',
                 'instruction executor: Middle instruction',
             ])
Пример #3
0
 def test_when_there_are_only_comment_elements_than_the_result_should_be_pass(self):
     phase_contents = SectionContents((new_comment_element(Line(1, '1')),
                                       new_comment_element(Line(2, '2'))))
     self._standard_test_with_successful_instruction_executor(
         phase_contents,
         asrt_failure.is_not_present(),
         ['comment header for source line number: 1',
          'comment header for source line number: 2'])
Пример #4
0
 def test_successful_execution_of_single_instruction(self):
     phase_contents = SectionContents(
         (new_instruction_element(Line(1, '1'),
                                  TestInstruction('The instruction')), ))
     self._standard_test_with_successful_instruction_executor(
         phase_contents, asrt_failure.is_not_present(), [
             'instruction header for source line number: 1',
             'instruction executor: The instruction'
         ])
Пример #5
0
def _separate_configuration_elements(
    section_contents: SectionContents
) -> Tuple[SectionContents, SectionContents]:
    suite_elements = []
    case_elements = []

    for element in section_contents.elements:
        if element.element_type is ElementType.INSTRUCTION:
            if isinstance(element.instruction_info.instruction,
                          ConfigurationSectionInstruction):
                suite_elements.append(element)
            else:
                case_elements.append(element)
        else:
            suite_elements.append(element)

    return SectionContents(tuple(suite_elements)), SectionContents(
        tuple(case_elements))
Пример #6
0
 def test_single_exception_raising_instruction_executor(self):
     recording_media = RecordingMedia()
     instruction_executor = InstructionExecutorThatRecordsInstructionNameAndRaisesExceptionFor(
         any_instruction,
         recording_media.new_recorder_with_header('instruction executor'),
         TestException())
     phase_contents = SectionContents(
         (new_instruction_element(Line(1, '1'),
                                  TestInstruction('The instruction')), ))
     self._standard_test(
         recording_media, phase_contents, instruction_executor,
         asrt_failure.is_present_with(
             ExecutionFailureStatus.INTERNAL_ERROR,
             equals_single_line_source_location_path(Line(1, '1')),
             asrt_failure_details.is_exception_of_type(TestException)), [
                 'instruction header for source line number: 1',
                 'instruction executor: The instruction'
             ])
Пример #7
0
 def test_single_failing_instruction_executor__status_hard_error(self):
     recording_media = RecordingMedia()
     instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor(
         any_instruction,
         recording_media.new_recorder_with_header('instruction executor'),
         PartialInstructionControlledFailureInfo(
             PartialControlledFailureEnum.HARD_ERROR,
             asrt_text_doc.new_single_string_text_for_test(
                 'hard error message')))
     phase_contents = SectionContents(
         (new_instruction_element(Line(1, '1'),
                                  TestInstruction('The instruction')), ))
     self._standard_test(
         recording_media, phase_contents, instruction_executor,
         asrt_failure.is_present_with(
             ExecutionFailureStatus.HARD_ERROR,
             equals_single_line_source_location_path(Line(1, '1')),
             asrt_failure_details.is_failure_message_of(
                 'hard error message')), [
                     'instruction header for source line number: 1',
                     'instruction executor: The instruction'
                 ])
Пример #8
0
 def test_when_there_are_no_elements_no_executor_should_be_invoked_and_the_result_should_be_pass(
         self):
     phase_contents = SectionContents(())
     self._standard_test_with_successful_instruction_executor(
         phase_contents, asrt_failure.is_not_present(), [])
Пример #9
0
 def append(fst: SectionContents,
            snd: SectionContents) -> SectionContents:
     return SectionContents(
         tuple(list(fst.elements) + list(snd.elements)))
Пример #10
0
 def section_contents(instructions: list) -> SectionContents:
     return SectionContents(tuple(map(instruction_line_con, instructions)))