예제 #1
0
class TestPresenter(unittest.TestCase):
    def setUp(self):
        self.viewstub = ViewStub()
        self.businesslogicstub = BusinessLogicStub()
        self.presenter = Presenter(self.viewstub, self.businesslogicstub)

        self.presenter.init()

    def test_init(self):
        self.assertEquals([UPPER_TRANS, LOWER_TRANS, TRIM_PREFIX_SPACES_TRANS],
                          self.viewstub.get_avail_transes())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())

    def test_add_not_the_last_trans(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)

        self.presenter.add_trans()

        self.assertEquals([UPPER_TRANS], self.viewstub.get_chain_transes())
        self.assertEquals(0, self.viewstub.get_chain_selected_index())
        self.assertEquals(1, self.viewstub.get_avail_selected_index())

    def test_add_the_last_trans(self):
        self.viewstub.set_avail_selected_trans(TRIM_PREFIX_SPACES_TRANS)

        self.presenter.add_trans()

        self.assertEquals([TRIM_PREFIX_SPACES_TRANS],
                          self.viewstub.get_chain_transes())
        self.assertEquals(0, self.viewstub.get_chain_selected_index())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())

    def test_add_already_existed_in_chain_trans(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)

        self.presenter.add_trans()

        self.assertTrue(
            self.viewstub.is_add_already_existed_in_chain_trans_notified())
        self.assertEquals([UPPER_TRANS, LOWER_TRANS],
                          self.viewstub.get_chain_transes())
        self.assertEquals(1, self.viewstub.get_chain_selected_index())
        self.assertEquals(1, self.viewstub.get_avail_selected_index())

    def test_add_trans_but_avail_trans_not_specified(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(None)

        self.presenter.add_trans()

        self.assertTrue(self.viewstub.is_avail_trans_not_specified_notified())
        self.assertEquals([UPPER_TRANS, LOWER_TRANS],
                          self.viewstub.get_chain_transes())
        self.assertEquals(1, self.viewstub.get_chain_selected_index())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())

    def test_remove_not_the_last_trans_when_chain_has_more_than_one_transes(
            self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(TRIM_PREFIX_SPACES_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(LOWER_TRANS)

        self.presenter.remove_trans()

        self.assertEquals([UPPER_TRANS, TRIM_PREFIX_SPACES_TRANS],
                          self.viewstub.get_chain_transes())
        self.assertEquals(1, self.viewstub.get_avail_selected_index())
        self.assertEquals(1, self.viewstub.get_chain_selected_index())

    def test_remove_the_last_trans_when_chain_has_more_than_one_transes(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(TRIM_PREFIX_SPACES_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(TRIM_PREFIX_SPACES_TRANS)

        self.presenter.remove_trans()

        self.assertEquals([UPPER_TRANS, LOWER_TRANS],
                          self.viewstub.get_chain_transes())
        self.assertEquals(2, self.viewstub.get_avail_selected_index())
        self.assertEquals(0, self.viewstub.get_chain_selected_index())

    def test_remove_a_trans_when_chain_has_only_one_transes(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(UPPER_TRANS)

        self.presenter.remove_trans()

        self.assertEquals([], self.viewstub.get_chain_transes())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())
        self.assertEquals(NONE_SELECTED_INDEX,
                          self.viewstub.get_chain_selected_index())

    def test_remove_trans_when_chain_is_not_empty_but_chain_trans_not_specified(
            self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(None)

        self.presenter.remove_trans()

        self.assertTrue(self.viewstub.is_chain_trans_not_specified_notified())
        self.assertEquals([UPPER_TRANS], self.viewstub.get_chain_transes())
        self.assertEquals(1, self.viewstub.get_avail_selected_index())
        self.assertEquals(0, self.viewstub.get_chain_selected_index())

    def test_remove_trans_when_chain_is_empty(self):
        self.presenter.remove_trans()

        self.assertTrue(self.viewstub.is_chain_empty_notified())
        self.assertEquals([], self.viewstub.get_chain_transes())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())
        self.assertEquals(NONE_SELECTED_INDEX,
                          self.viewstub.get_chain_selected_index())

    def test_remove_all_transes_when_chain_is_not_empty(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()

        self.presenter.remove_all_transes()

        self.assertEquals([], self.viewstub.get_chain_transes())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())
        self.assertEquals(NONE_SELECTED_INDEX,
                          self.viewstub.get_chain_selected_index())

    def test_remove_all_transes_when_chain_is_empty(self):
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(LOWER_TRANS)
        self.presenter.remove_trans()

        self.presenter.remove_all_transes()

        self.assertTrue(self.viewstub.is_chain_empty_notified())
        self.assertEquals([], self.viewstub.get_chain_transes())
        self.assertEquals(1, self.viewstub.get_avail_selected_index())
        self.assertEquals(NONE_SELECTED_INDEX,
                          self.viewstub.get_chain_selected_index())

    def test_apply_trans_chain(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_source_str('Hello, world.')

        self.presenter.apply_trans_chain()

        self.assertEquals('HELLO, WORLD.', self.viewstub.get_result_str())

    def test_apply_trans_chain_when_source_str_is_empty(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_source_str('')

        self.presenter.apply_trans_chain()

        self.assertTrue(self.viewstub.is_source_str_empty_notified())
        self.assertEquals('', self.viewstub.get_result_str())

    def test_apply_trans_chain_when_source_str_is_illegal(self):
        self.viewstub.set_avail_selected_trans(UPPER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_source_str('a中文b')

        self.presenter.apply_trans_chain()

        self.assertTrue(self.viewstub.is_source_str_illegal_notified())
        self.assertEquals('', self.viewstub.get_result_str())

    def test_apply_trans_chain_when_chain_is_empty(self):
        self.viewstub.set_avail_selected_trans(LOWER_TRANS)
        self.presenter.add_trans()
        self.viewstub.set_chain_selected_trans(LOWER_TRANS)
        self.presenter.remove_trans()
        self.viewstub.set_source_str('Hello, world.')

        self.presenter.apply_trans_chain()

        self.assertTrue(self.viewstub.is_chain_empty_notified())
        self.assertEquals('', self.viewstub.get_result_str())
        self.assertEquals(0, self.viewstub.get_avail_selected_index())
예제 #2
0
class TestPresenter(unittest.TestCase):
    def setUp(self):
        self.viewstub = ViewStub()
        self.businesslogicstub = BusinessLogicStub()
        self.presenter = Presenter(self.viewstub, self.businesslogicstub)

        self.presenter.init()

    def test_init(self):
        expected = {
            AVAIL_TRANSES:
            [UPPER_TRANS, LOWER_TRANS, TRIM_PREFIX_SPACES_TRANS],
            AVAIL_SELECTED_INDEX: 0
        }
        self.assertEquals(expected, self.viewstub.get_on_init_data())

    def test_add_not_the_last_trans(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})

        self.presenter.add_trans()

        expected = {
            CHAIN_TRANSES: [UPPER_TRANS],
            CHAIN_SELECTED_INDEX: 0,
            AVAIL_SELECTED_INDEX: 1
        }
        self.assertEquals(expected, self.viewstub.get_on_add_trans_data())

    def test_add_the_last_trans(self):
        self.viewstub.set_add_trans_data(
            {AVAIL_SELECTED_TRANS: TRIM_PREFIX_SPACES_TRANS})

        self.presenter.add_trans()

        expected = {
            CHAIN_TRANSES: [TRIM_PREFIX_SPACES_TRANS],
            CHAIN_SELECTED_INDEX: 0,
            AVAIL_SELECTED_INDEX: 0
        }
        self.assertEquals(expected, self.viewstub.get_on_add_trans_data())

    def test_add_already_existed_in_chain_trans(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})

        self.presenter.add_trans()

        self.assertEquals(
            {
                VALIDATING_FAILED_REASON:
                ValidatingResult.VRFR_ADD_ALREADY_EXISTED_IN_CHAIN_TRANS
            }, self.viewstub.get_on_validating_failed_data())
        expected = {
            CHAIN_TRANSES: [UPPER_TRANS, LOWER_TRANS],
            CHAIN_SELECTED_INDEX: 1,
            AVAIL_SELECTED_INDEX: 1
        }
        self.assertEquals(expected, self.viewstub.get_on_add_trans_data())

    def test_add_trans_but_avail_trans_not_specified(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: None})

        self.presenter.add_trans()

        self.assertEquals(
            {
                VALIDATING_FAILED_REASON:
                ValidatingResult.VRFR_AVAIL_TRANS_NOT_SPECIFIED
            }, self.viewstub.get_on_validating_failed_data())
        expected = {
            CHAIN_TRANSES: [UPPER_TRANS, LOWER_TRANS],
            CHAIN_SELECTED_INDEX: 1,
            AVAIL_SELECTED_INDEX: 0
        }
        self.assertEquals(expected, self.viewstub.get_on_add_trans_data())

    def test_remove_not_the_last_trans_when_chain_has_more_than_one_transes(
            self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data(
            {AVAIL_SELECTED_TRANS: TRIM_PREFIX_SPACES_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data(
            {CHAIN_SELECTED_TRANS: LOWER_TRANS})

        self.presenter.remove_trans()

        expected = {
            CHAIN_TRANSES: [UPPER_TRANS, TRIM_PREFIX_SPACES_TRANS],
            AVAIL_SELECTED_INDEX: 1,
            CHAIN_SELECTED_INDEX: 1
        }
        self.assertEquals(expected, self.viewstub.get_on_remove_trans_data())

    def test_remove_the_last_trans_when_chain_has_more_than_one_transes(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data(
            {AVAIL_SELECTED_TRANS: TRIM_PREFIX_SPACES_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data(
            {CHAIN_SELECTED_TRANS: TRIM_PREFIX_SPACES_TRANS})

        self.presenter.remove_trans()

        expected = {
            CHAIN_TRANSES: [UPPER_TRANS, LOWER_TRANS],
            AVAIL_SELECTED_INDEX: 2,
            CHAIN_SELECTED_INDEX: 0
        }
        self.assertEquals(expected, self.viewstub.get_on_remove_trans_data())

    def test_remove_a_trans_when_chain_has_only_one_transes(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data(
            {CHAIN_SELECTED_TRANS: UPPER_TRANS})

        self.presenter.remove_trans()

        expected = {
            CHAIN_TRANSES: [],
            AVAIL_SELECTED_INDEX: 0,
            CHAIN_SELECTED_INDEX: NONE_SELECTED_INDEX
        }
        self.assertEquals(expected, self.viewstub.get_on_remove_trans_data())

    def test_remove_trans_when_chain_is_not_empty_but_chain_trans_not_specified(
            self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data({CHAIN_SELECTED_TRANS: None})

        self.presenter.remove_trans()

        self.assertEquals(
            {
                VALIDATING_FAILED_REASON:
                ValidatingResult.VRFR_CHAIN_TRANS_NOT_SPECIFIED
            }, self.viewstub.get_on_validating_failed_data())
        expected = {
            CHAIN_TRANSES: [UPPER_TRANS],
            AVAIL_SELECTED_INDEX: 1,
            CHAIN_SELECTED_INDEX: 0
        }
        self.assertEquals(expected, self.viewstub.get_on_remove_trans_data())

    def test_remove_trans_when_chain_is_empty(self):
        self.presenter.remove_trans()

        self.assertEquals(
            {VALIDATING_FAILED_REASON: ValidatingResult.VRFR_CHAIN_EMPTY},
            self.viewstub.get_on_validating_failed_data())
        expected = {
            CHAIN_TRANSES: [],
            AVAIL_SELECTED_INDEX: 0,
            CHAIN_SELECTED_INDEX: NONE_SELECTED_INDEX
        }
        self.assertEquals(expected, self.viewstub.get_on_remove_trans_data())

    def test_remove_all_transes_when_chain_is_not_empty(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()

        self.presenter.remove_all_transes()

        expected = {
            CHAIN_TRANSES: [],
            AVAIL_SELECTED_INDEX: 0,
            CHAIN_SELECTED_INDEX: NONE_SELECTED_INDEX
        }
        self.assertEquals(expected,
                          self.viewstub.get_on_remove_all_transes_data())

    def test_remove_all_transes_when_chain_is_empty(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data(
            {CHAIN_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.remove_trans()

        self.presenter.remove_all_transes()

        self.assertEquals(
            {VALIDATING_FAILED_REASON: ValidatingResult.VRFR_CHAIN_EMPTY},
            self.viewstub.get_on_validating_failed_data())
        expected = {
            CHAIN_TRANSES: [],
            AVAIL_SELECTED_INDEX: 1,
            CHAIN_SELECTED_INDEX: NONE_SELECTED_INDEX
        }
        self.assertEquals(expected,
                          self.viewstub.get_on_remove_all_transes_data())

    def test_apply_trans_chain(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_apply_trans_chain_data({SOURCE_STR: 'Hello, world.'})

        self.presenter.apply_trans_chain()

        self.assertEquals(
            {
                AVAIL_SELECTED_INDEX: 1,
                RESULT_STR: 'HELLO, WORLD.'
            }, self.viewstub.get_on_apply_trans_chain_data())

    def test_apply_trans_chain_when_source_str_is_empty(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_apply_trans_chain_data({SOURCE_STR: ''})

        self.presenter.apply_trans_chain()

        self.assertEquals(
            {VALIDATING_FAILED_REASON: ValidatingResult.VRFR_SOURCE_STR_EMPTY},
            self.viewstub.get_on_validating_failed_data())
        self.assertEquals({
            AVAIL_SELECTED_INDEX: 1,
            RESULT_STR: ''
        }, self.viewstub.get_on_apply_trans_chain_data())

    def test_apply_trans_chain_when_source_str_is_illegal(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: UPPER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_apply_trans_chain_data({SOURCE_STR: 'a中文b'})

        self.presenter.apply_trans_chain()

        self.assertEquals(
            {
                VALIDATING_FAILED_REASON:
                ValidatingResult.VRFR_SOURCE_STR_ILLEGAL
            }, self.viewstub.get_on_validating_failed_data())
        self.assertEquals({
            AVAIL_SELECTED_INDEX: 1,
            RESULT_STR: ''
        }, self.viewstub.get_on_apply_trans_chain_data())

    def test_apply_trans_chain_when_chain_is_empty(self):
        self.viewstub.set_add_trans_data({AVAIL_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.add_trans()
        self.viewstub.set_remove_trans_data(
            {CHAIN_SELECTED_TRANS: LOWER_TRANS})
        self.presenter.remove_trans()
        self.viewstub.set_apply_trans_chain_data({SOURCE_STR: 'Hello, world.'})

        self.presenter.apply_trans_chain()

        self.assertEquals(
            {VALIDATING_FAILED_REASON: ValidatingResult.VRFR_CHAIN_EMPTY},
            self.viewstub.get_on_validating_failed_data())
        self.assertEquals({
            AVAIL_SELECTED_INDEX: 0,
            RESULT_STR: ''
        }, self.viewstub.get_on_apply_trans_chain_data())