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', ])
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', ])
def test_last_instruction_fails(self): recording_media = RecordingMedia() instruction_executor = InstructionExecutorThatRecordsInstructionNameAndFailsFor( instruction_with_name('Last instruction'), recording_media.new_recorder_with_header('instruction executor'), PartialInstructionControlledFailureInfo(PartialControlledFailureEnum.FAIL, 'fail message') ) phase_contents = SectionContents((new_instruction_element(Line(1, '1'), TestInstruction('First instruction')), new_instruction_element(Line(2, '2'), TestInstruction('Last instruction')) )) self._standard_test( recording_media, phase_contents, instruction_executor, asrt_failure.is_present_with(PartialExeResultStatus.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: Last instruction', ])
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' ])
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'])
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', ])
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' ])
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(PartialExeResultStatus.IMPLEMENTATION_ERROR, equals_single_line_source_location_path(Line(1, '1')), asrt_failure_details.is_exception(TestException)), ['instruction header for source line number: 1', 'instruction executor: The instruction'])
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, '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(PartialExeResultStatus.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'])
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' ])
def apply(self, instruction: TestCaseInstruction) -> model.SectionContentElement: return elements.new_instruction_element( self.lines_generator.next_line(), instruction)