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())
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())