Ejemplo n.º 1
0
    def test_one_symbol_is_predefined(self):
        predefined_symbol = StringSymbolContext.of_constant(
            'predefined symbol name',
            'predefined string constant symbol value')

        expected_predefined_symbols = predefined_symbol.symbol_table
        all_predefined_symbols = frozenset((predefined_symbol.name, ))

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP:
            psr.same_value_for_all_steps(step.ALL_SETUP_WITH_ENV_ARG,
                                         all_predefined_symbols),
            PhaseEnum.ACT:
            psr.same_value_for_all_steps(step.ALL_ACT_WITH_ENV_ARG,
                                         all_predefined_symbols),
            PhaseEnum.BEFORE_ASSERT:
            psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                         all_predefined_symbols),
            PhaseEnum.ASSERT:
            psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG,
                                         all_predefined_symbols),
            PhaseEnum.CLEANUP:
            psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG,
                                         all_predefined_symbols),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(
                phase_step, actual_phase_2_step_2_names_set,
                get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                psr.setup_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.
                before_assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
        )
        test__va(
            self, test_case,
            Arrangement(psr.actor_that_records_a_value_per_step(
                recorder_for, recorder_for_parse_step=psr.no_recording),
                        predefined_symbols=expected_predefined_symbols),
            asrt.anything_goes())
        _check_result(self, expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)
Ejemplo n.º 2
0
    def test(self):
        hds_with_different_sub_dirs = fake_hds()

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP:
            psr.same_value_for_all_steps(step.ALL_SETUP_WITH_ENV_ARG,
                                         hds_with_different_sub_dirs),
            PhaseEnum.ACT:
            psr.same_value_for_all_steps(step.ALL_ACT_WITH_ENV_ARG,
                                         hds_with_different_sub_dirs),
            PhaseEnum.BEFORE_ASSERT:
            psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                         hds_with_different_sub_dirs),
            PhaseEnum.ASSERT:
            psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG,
                                         hds_with_different_sub_dirs),
            PhaseEnum.CLEANUP:
            psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG,
                                         hds_with_different_sub_dirs),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(
                phase_step, actual_phase_2_step_2_names_set,
                get_hds_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                psr.setup_phase_instruction_that_records_a_value_per_step(
                    recorder_for),
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.
                before_assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
        )
        test__va(
            self, test_case,
            Arrangement(psr.actor_that_records_a_value_per_step(
                recorder_for, recorder_for_parse_step=psr.no_recording),
                        hds=hds_with_different_sub_dirs), asrt.anything_goes())
        self._check_result(expected_phase_2_step_2_names_set,
                           actual_phase_2_step_2_names_set)
Ejemplo n.º 3
0
    def test_one_symbol_is_predefined(self):
        predefined_symbol = NameAndValue('predefined symbol name',
                                         'predefined string constant symbol value')

        expected_predefined_symbols = SymbolTable({
            predefined_symbol.name: symbol_utils.container(string_resolvers.str_constant(predefined_symbol.value))
        })
        all_predefined_symbols = frozenset((predefined_symbol.name,))

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: psr.same_value_for_all_steps(step.ALL_SETUP_WITH_ENV_ARG, all_predefined_symbols),
            PhaseEnum.ACT: psr.same_value_for_all_steps(step.ALL_ACT_WITH_ENV_ARG, all_predefined_symbols),
            PhaseEnum.BEFORE_ASSERT: psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                                                  all_predefined_symbols),
            PhaseEnum.ASSERT: psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG, all_predefined_symbols),
            PhaseEnum.CLEANUP: psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG, all_predefined_symbols),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(phase_step,
                                           actual_phase_2_step_2_names_set,
                                           get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                psr.setup_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.before_assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
        )
        test__va(
            self,
            test_case,
            Arrangement(psr.actor_that_records_a_value_per_step(recorder_for,
                                                                recorder_for_parse_step=psr.no_recording),
                        predefined_symbols=expected_predefined_symbols),
            asrt.anything_goes())
        _check_result(self,
                      expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)
Ejemplo n.º 4
0
    def test(self):
        hds_with_different_sub_dirs = fake_hds()

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: psr.same_value_for_all_steps(step.ALL_SETUP_WITH_ENV_ARG, hds_with_different_sub_dirs),
            PhaseEnum.ACT: psr.same_value_for_all_steps(step.ALL_ACT_WITH_ENV_ARG, hds_with_different_sub_dirs),
            PhaseEnum.BEFORE_ASSERT: psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                                                  hds_with_different_sub_dirs),
            PhaseEnum.ASSERT: psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG, hds_with_different_sub_dirs),
            PhaseEnum.CLEANUP: psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG, hds_with_different_sub_dirs),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(phase_step,
                                           actual_phase_2_step_2_names_set,
                                           get_hds_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                psr.setup_phase_instruction_that_records_a_value_per_step(recorder_for),
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.before_assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
        )
        test__va(
            self,
            test_case,
            Arrangement(psr.actor_that_records_a_value_per_step(recorder_for,
                                                                recorder_for_parse_step=psr.no_recording),
                        hds=hds_with_different_sub_dirs),
            asrt.anything_goes())
        self._check_result(expected_phase_2_step_2_names_set,
                           actual_phase_2_step_2_names_set)
Ejemplo n.º 5
0
    def test_one_symbol_is_defined_in_the_setup_phase(self):
        symbol = NameAndValue('symbol name',
                              'symbol value (not used in test)')
        all_defined_symbols = frozenset((symbol.name,))
        symbol_definition = data_symbol_utils.string_symbol_definition(symbol.name, symbol.value)
        symbol_usages_of_instruction_that_defines_symbol = [symbol_definition]

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: {
                step.SETUP__VALIDATE_PRE_SDS.step: all_defined_symbols,
                step.SETUP__MAIN.step: set(),
                step.SETUP__VALIDATE_POST_SETUP.step: all_defined_symbols,
            },
            PhaseEnum.ACT: {
                step.ACT__VALIDATE_PRE_SDS.step: all_defined_symbols,
                step.ACT__VALIDATE_POST_SETUP.step: all_defined_symbols,
                step.ACT__EXECUTE.step: all_defined_symbols,
                step.ACT__PREPARE.step: all_defined_symbols,
            },
            PhaseEnum.BEFORE_ASSERT: psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                                                  all_defined_symbols),
            PhaseEnum.ASSERT: psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG, all_defined_symbols),
            PhaseEnum.CLEANUP: psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG, all_defined_symbols),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(phase_step,
                                           actual_phase_2_step_2_names_set,
                                           get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                setup_phase_instruction_that(
                    symbol_usages=do_return(symbol_usages_of_instruction_that_defines_symbol),
                    validate_pre_sds_initial_action=recorder_for(step.SETUP__VALIDATE_PRE_SDS),
                    main_initial_action=Sequence([
                        recorder_for(step.SETUP__MAIN),
                        _ActionThatSetsSymbolInSymbolTable(symbol_definition),
                    ]),
                    validate_post_setup_initial_action=recorder_for(step.SETUP__VALIDATE_POST_SETUP),
                )
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.before_assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
        )
        test__va(
            self,
            test_case,
            Arrangement(psr.actor_that_records_a_value_per_step(recorder_for,
                                                                recorder_for_parse_step=psr.no_recording)),
            asrt.anything_goes())
        _check_result(self,
                      expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)
Ejemplo n.º 6
0
    def test_one_symbol_is_predefined_and_one_symbol_is_defined_in_the_setup_phase(self):
        predefined_symbol = NameAndValue('predefined symbol',
                                         'predefined string constant symbol value')
        defined_symbol = NameAndValue('defined symbol',
                                      'value of symbol defined in the setup phase (not used in this test)')
        predefined_symbols_table = SymbolTable({
            predefined_symbol.name: symbol_utils.container(string_resolvers.str_constant(predefined_symbol.value))
        })
        predefined_symbols = frozenset((predefined_symbol.name,))
        predefined_and_defined_symbols = frozenset((predefined_symbol.name, defined_symbol.name))

        symbol_definition = data_symbol_utils.string_symbol_definition(defined_symbol.name, defined_symbol.value)

        symbol_usages_of_instruction_that_defines_symbol = [symbol_definition]

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: {
                step.SETUP__VALIDATE_PRE_SDS.step: predefined_and_defined_symbols,
                step.SETUP__MAIN.step: predefined_symbols,
                step.SETUP__VALIDATE_POST_SETUP.step: predefined_and_defined_symbols,
            },
            PhaseEnum.ACT: {
                step.ACT__VALIDATE_PRE_SDS.step: predefined_and_defined_symbols,
                step.ACT__VALIDATE_POST_SETUP.step: predefined_and_defined_symbols,
                step.ACT__PREPARE.step: predefined_and_defined_symbols,
                step.ACT__EXECUTE.step: predefined_and_defined_symbols,
            },
            PhaseEnum.BEFORE_ASSERT: {
                step.BEFORE_ASSERT__VALIDATE_PRE_SDS.step: predefined_and_defined_symbols,
                step.BEFORE_ASSERT__VALIDATE_POST_SETUP.step: predefined_and_defined_symbols,
                step.BEFORE_ASSERT__MAIN.step: predefined_and_defined_symbols,

            },
            PhaseEnum.ASSERT: {
                step.ASSERT__VALIDATE_PRE_SDS.step: predefined_and_defined_symbols,
                step.ASSERT__VALIDATE_POST_SETUP.step: predefined_and_defined_symbols,
                step.ASSERT__MAIN.step: predefined_and_defined_symbols,
            },
            PhaseEnum.CLEANUP: {
                step.CLEANUP__VALIDATE_PRE_SDS.step: predefined_and_defined_symbols,
                step.CLEANUP__MAIN.step: predefined_and_defined_symbols,
            },
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(phase_step,
                                           actual_phase_2_step_2_names_set,
                                           get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                setup_phase_instruction_that(
                    symbol_usages=do_return(symbol_usages_of_instruction_that_defines_symbol),
                    validate_pre_sds_initial_action=recorder_for(step.SETUP__VALIDATE_PRE_SDS),
                    main_initial_action=Sequence([
                        recorder_for(step.SETUP__MAIN),
                        _ActionThatSetsSymbolInSymbolTable(symbol_definition),
                    ]),
                    validate_post_setup_initial_action=recorder_for(step.SETUP__VALIDATE_POST_SETUP),
                )
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.before_assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(recorder_for)
            ],
        )
        test__va(
            self,
            test_case,
            Arrangement(
                actor=psr.actor_that_records_a_value_per_step(recorder_for,
                                                              recorder_for_parse_step=psr.no_recording),
                predefined_symbols=predefined_symbols_table),
            asrt.anything_goes())
        _check_result(self,
                      expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)
Ejemplo n.º 7
0
    def test_one_symbol_is_defined_in_the_setup_phase(self):
        symbol = NameAndValue('symbol name', 'symbol value (not used in test)')
        all_defined_symbols = frozenset((symbol.name, ))
        symbol_definition = StringConstantSymbolContext(
            symbol.name, symbol.value).definition
        symbol_usages_of_instruction_that_defines_symbol = [symbol_definition]

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: {
                step.SETUP__VALIDATE_PRE_SDS.step: all_defined_symbols,
                step.SETUP__MAIN.step: set(),
                step.SETUP__VALIDATE_POST_SETUP.step: all_defined_symbols,
            },
            PhaseEnum.ACT: {
                step.ACT__VALIDATE_PRE_SDS.step: all_defined_symbols,
                step.ACT__VALIDATE_POST_SETUP.step: all_defined_symbols,
                step.ACT__EXECUTE.step: all_defined_symbols,
                step.ACT__PREPARE.step: all_defined_symbols,
            },
            PhaseEnum.BEFORE_ASSERT:
            psr.same_value_for_all_steps(step.ALL_BEFORE_ASSERT_WITH_ENV_ARG,
                                         all_defined_symbols),
            PhaseEnum.ASSERT:
            psr.same_value_for_all_steps(step.ALL_ASSERT_WITH_ENV_ARG,
                                         all_defined_symbols),
            PhaseEnum.CLEANUP:
            psr.same_value_for_all_steps(step.ALL_CLEANUP_WITH_ENV_ARG,
                                         all_defined_symbols),
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(
                phase_step, actual_phase_2_step_2_names_set,
                get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                setup_phase_instruction_that(
                    symbol_usages=do_return(
                        symbol_usages_of_instruction_that_defines_symbol),
                    validate_pre_sds_initial_action=recorder_for(
                        step.SETUP__VALIDATE_PRE_SDS),
                    main_initial_action=sequence_of_actions([
                        recorder_for(step.SETUP__MAIN),
                        _ActionThatSetsSymbolInSymbolTable(symbol_definition),
                    ]),
                    validate_post_setup_initial_action=recorder_for(
                        step.SETUP__VALIDATE_POST_SETUP),
                )
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.
                before_assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
        )
        test__va(
            self, test_case,
            Arrangement(
                psr.actor_that_records_a_value_per_step(
                    recorder_for, recorder_for_parse_step=psr.no_recording)),
            asrt.anything_goes())
        _check_result(self, expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)
Ejemplo n.º 8
0
    def test_one_symbol_is_predefined_and_one_symbol_is_defined_in_the_setup_phase(
            self):
        predefined_symbol = StringSymbolContext.of_constant(
            'predefined symbol', 'predefined string constant symbol value')
        defined_symbol = StringConstantSymbolContext(
            'defined symbol',
            'value of symbol defined in the setup phase (not used in this test)'
        )
        predefined_symbols_table = predefined_symbol.symbol_table
        predefined_symbols = frozenset((predefined_symbol.name, ))
        predefined_and_defined_symbols = frozenset(
            (predefined_symbol.name, defined_symbol.name))

        symbol_definition = defined_symbol.definition

        symbol_usages_of_instruction_that_defines_symbol = [symbol_definition]

        expected_phase_2_step_2_names_set = {
            PhaseEnum.SETUP: {
                step.SETUP__VALIDATE_PRE_SDS.step:
                predefined_and_defined_symbols,
                step.SETUP__MAIN.step:
                predefined_symbols,
                step.SETUP__VALIDATE_POST_SETUP.step:
                predefined_and_defined_symbols,
            },
            PhaseEnum.ACT: {
                step.ACT__VALIDATE_PRE_SDS.step:
                predefined_and_defined_symbols,
                step.ACT__VALIDATE_POST_SETUP.step:
                predefined_and_defined_symbols,
                step.ACT__PREPARE.step: predefined_and_defined_symbols,
                step.ACT__EXECUTE.step: predefined_and_defined_symbols,
            },
            PhaseEnum.BEFORE_ASSERT: {
                step.BEFORE_ASSERT__VALIDATE_PRE_SDS.step:
                predefined_and_defined_symbols,
                step.BEFORE_ASSERT__VALIDATE_POST_SETUP.step:
                predefined_and_defined_symbols,
                step.BEFORE_ASSERT__MAIN.step: predefined_and_defined_symbols,
            },
            PhaseEnum.ASSERT: {
                step.ASSERT__VALIDATE_PRE_SDS.step:
                predefined_and_defined_symbols,
                step.ASSERT__VALIDATE_POST_SETUP.step:
                predefined_and_defined_symbols,
                step.ASSERT__MAIN.step: predefined_and_defined_symbols,
            },
            PhaseEnum.CLEANUP: {
                step.CLEANUP__VALIDATE_PRE_SDS.step:
                predefined_and_defined_symbols,
                step.CLEANUP__MAIN.step: predefined_and_defined_symbols,
            },
        }
        actual_phase_2_step_2_names_set = psr.new_phase_enum_2_empty_dict()

        def recorder_for(phase_step: SimplePhaseStep):
            return psr.StepRecordingAction(
                phase_step, actual_phase_2_step_2_names_set,
                get_symbols_name_set_from_instruction_environment)

        test_case = partial_test_case_with_instructions(
            [
                setup_phase_instruction_that(
                    symbol_usages=do_return(
                        symbol_usages_of_instruction_that_defines_symbol),
                    validate_pre_sds_initial_action=recorder_for(
                        step.SETUP__VALIDATE_PRE_SDS),
                    main_initial_action=sequence_of_actions([
                        recorder_for(step.SETUP__MAIN),
                        _ActionThatSetsSymbolInSymbolTable(symbol_definition),
                    ]),
                    validate_post_setup_initial_action=recorder_for(
                        step.SETUP__VALIDATE_POST_SETUP),
                )
            ],
            psr.act_phase_instructions_that_does_nothing(),
            [
                psr.
                before_assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.assert_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
            [
                psr.cleanup_phase_instruction_that_records_a_value_per_step(
                    recorder_for)
            ],
        )
        test__va(
            self, test_case,
            Arrangement(actor=psr.actor_that_records_a_value_per_step(
                recorder_for, recorder_for_parse_step=psr.no_recording),
                        predefined_symbols=predefined_symbols_table),
            asrt.anything_goes())
        _check_result(self, expected_phase_2_step_2_names_set,
                      actual_phase_2_step_2_names_set)