class TestMafiaOrganizationFindByName(TestCase):
    def setUp(self):
        self.big_boss = Gangster('Big Boss', 21)
        self.mog = MafiaOrganization(self.big_boss)

    def test_find_by_name_search_for_big_boss(self):
        self.assertEquals(self.mog.find_by_name('Big Boss'), self.big_boss)

    def test_find_by_name_search_for_big_boss_subordinate(self):
        g1 = Gangster('Big Boss Subordinate Level 1', 19)
        self.big_boss.add_subordinate(g1)

        self.assertEquals(self.mog.find_by_name('Big Boss Subordinate Level 1'), g1)

    def test_find_by_name_search_for_gangster_no_matter_its_level_in_organization(self):
        g3 = Gangster('Subordinate Level 3-1', 18)
        g4 = Gangster('Subordinate Level 3-2', 18)

        g2 = Gangster('Subordinate Level 2', 19)
        g2.add_subordinate(g4)
        g2.add_subordinate(g3)

        g1 = Gangster('Big Boss Subordinate Level 1', 20)
        g1.add_subordinate(g2)

        self.big_boss.add_subordinate(g1)

        self.assertEquals(self.mog.find_by_name('Subordinate Level 3-2'), g4)
class TestMafiaOrganizationSendMemberToJailCase3MultiLevelsKillLevel2(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21)
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 30, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 32, 'Location Gangster 3')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)
        self.mog.add_under(self.g1, self.g3)

        # When
        self.mog.send_member_to_jail('Gangster')

    def test_send_member_to_jail_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster'), Gangster)

    def test_send_member_to_jail_is_no_longer_found_by_is_member_of_organization(self):
        self.assertFalse(self.mog.is_member_of_organization('Gangster'))

    def test_send_member_to_jail_oldest_subordinate_has_big_boss_as_a_new_boss(self):
        self.assertEquals(self.g3.get_boss(), self.mog.get_big_boss())

    def test_send_member_to_jail_youngest_subordinate_has_a_new_boss(self):
        self.assertEquals(self.g2.get_boss(), self.g3)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 4)
class TestMafiaOrganizationMemberToFreedomCase3MultiLevelsKillLevel2(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21)
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 30, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 32, 'Location Gangster 3')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)
        self.mog.add_under(self.g1, self.g3)

        self.mog.send_member_to_jail('Gangster')

        # When
        self.mog.set_member_to_freedom('Gangster')

    def test_set_member_to_freedom_is_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster'), Gangster)

    def test_set_member_to_freedom_is_found_by_is_member_of_organization(self):
        self.assertTrue(self.mog.is_member_of_organization('Gangster'))

    def test_set_member_to_freedom_subordinate_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster 2'), Gangster)
        self.assertIsInstance(self.mog.find_by_name('Gangster 3'), Gangster)

    def test_set_member_to_freedom_previous_subordinate_returns_to_the_previous_boss(self):
        self.assertEquals(self.g3.get_boss(), self.g1)
        self.assertEquals(self.g2.get_boss(), self.g1)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 4)
class TestMafiaOrganizationKillMemberCase3MultiLevelsKillLevel2(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21)
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 30, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 32, 'Location Gangster 3')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)
        self.mog.add_under(self.g1, self.g3)

        # When
        self.mog.kill_member('Gangster')

    def test_killed_member_is_no_longer_in_organization(self):
        self.assertIsNone(self.mog.find_by_name('Gangster'))

    def test_killed_member_subordinates_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster 2'), Gangster)
        self.assertIsInstance(self.mog.find_by_name('Gangster 3'), Gangster)

    def test_killed_member_oldest_subordinate_has_big_boss_as_a_new_boss(self):
        self.assertEquals(self.g3.get_boss(), self.mog.get_big_boss())

    def test_killed_member_youngest_subordinate_has_a_new_boss(self):
        self.assertEquals(self.g2.get_boss(), self.g3)

    def test_all_subordinates_have_unknown_location(self):
        self.assertEquals(self.g2.location, GangsterLocation.UNKNOWN)
        self.assertEquals(self.g3.location, GangsterLocation.UNKNOWN)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 3)
    def setUp(self):
        self.big_boss = Gangster('Big Boss', 21)

        self.g1 = Gangster('Gangster', 20)
        self.g2 = Gangster('Gangster 2', 20, 'Location 2')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21, 'Location Big Boss')
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 20, 'Location Gangster 2')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)

        # When
        self.mog.kill_member('Gangster')
Beispiel #7
0
class TestGangsterSubordinates(TestCase):
    def setUp(self):
        self.g = Gangster('Gangster', 44)

        self.gs = Gangster('Subordinate', 43)
        self.g.add_subordinate(self.gs)

    def test_subordinates_counts_returns_correct_count(self):
        self.assertEquals(self.g.subordinates_count(), 1)

    def test_add_subordinate_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.add_subordinate, 'gigi')

    def test_add_subordinate_can_add_gangster(self):
        self.assertEquals(self.g.subordinates_count(), 1)

    def test_add_subordinate_sets_the_correct_boss_on_gangster(self):
        self.assertEquals(self.gs.get_boss(), self.g)

    def test_subordinates_returns_iterator(self):
        self.assertEquals(self.gs, next(self.g.subordinates()))

    def test_delete_subordinate_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.delete_subordinate, 'gigi')

    def test_delete_subordinate_when_delete_subordinate_gangster_returns_true(
            self):
        self.assertTrue(self.g.delete_subordinate(self.gs))

    def test_delete_subordinate_when_delete_unknown_gangster_returns_false(
            self):
        ngs = Gangster('Not Subordinate', 43)
        self.assertFalse(self.g.delete_subordinate(ngs))
Beispiel #8
0
class TestGangsterSubordinates(TestCase):
    def setUp(self):
        self.g = Gangster('Gangster', 44)

        self.gs = Gangster('Subordinate', 43)
        self.g.add_subordinate(self.gs)

    def test_subordinates_counts_returns_correct_count(self):
        self.assertEquals(self.g.subordinates_count(), 1)

    def test_add_subordinate_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.add_subordinate, 'gigi')

    def test_add_subordinate_can_add_gangster(self):
        self.assertEquals(self.g.subordinates_count(), 1)

    def test_add_subordinate_sets_the_correct_boss_on_gangster(self):
        self.assertEquals(self.gs.get_boss(), self.g)

    def test_subordinates_returns_iterator(self):
        self.assertEquals(self.gs, next(self.g.subordinates()))

    def test_delete_subordinate_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.delete_subordinate, 'gigi')

    def test_delete_subordinate_when_delete_subordinate_gangster_returns_true(self):
        self.assertTrue(self.g.delete_subordinate(self.gs))

    def test_delete_subordinate_when_delete_unknown_gangster_returns_false(self):
        ngs = Gangster('Not Subordinate', 43)
        self.assertFalse(self.g.delete_subordinate(ngs))
    def test_find_by_name_search_for_gangster_no_matter_its_level_in_organization(self):
        g3 = Gangster('Subordinate Level 3-1', 18)
        g4 = Gangster('Subordinate Level 3-2', 18)

        g2 = Gangster('Subordinate Level 2', 19)
        g2.add_subordinate(g4)
        g2.add_subordinate(g3)

        g1 = Gangster('Big Boss Subordinate Level 1', 20)
        g1.add_subordinate(g2)

        self.big_boss.add_subordinate(g1)

        self.assertEquals(self.mog.find_by_name('Subordinate Level 3-2'), g4)
class TestMafiaOrganizationKillMemberCase3LevelsKillLevel1(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21, 'Location Big Boss')
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 20, 'Location Gangster 2')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)

        #When
        self.mog.kill_member('Big Boss')

    def test_killed_member_is_no_longer_in_organization(self):
        self.assertIsNone(self.mog.find_by_name('Big Boss'))

    def test_killed_member_subordinate_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster'), Gangster)

    def test_killed_member_subordinate_is_the_new_big_boss(self):
        self.assertEquals(self.g1, self.mog.get_big_boss())

    def test_the_new_big_boss_doesnt_have_a_boss(self):
        self.assertIsNone(self.g1.get_boss())

    def test_killed_member_subordinate_has_unknown_location(self):
        self.assertEquals(self.g1.location, GangsterLocation.UNKNOWN)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 2)
class TestMafiaOrganizationSetMemberToFreedom(TestCase):
    def setUp(self):
        self.big_boss = Gangster('Big Boss', 21)

        self.g1 = Gangster('Gangster', 20)
        self.g2 = Gangster('Gangster 2', 20, 'Location 2')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)

        self.mog.send_member_to_jail('Gangster')

    def test_set_member_to_freedom_on_unknown_gangster_returns_false(self):
        self.assertFalse(self.mog.set_member_to_freedom('Unknown Gangster'))

    def test_set_member_to_freedom_on_known_gangster_returns_true(self):
        self.assertTrue(self.mog.set_member_to_freedom('Gangster'))

    def test_set_member_to_freedom_sets_freestatus(self):
        self.mog.set_member_to_freedom('Gangster')

        self.assertEquals(self.g1.status, GangsterStatus.FREE)

    def test_set_member_to_freedom_restores_all_subordinates(self):
        self.mog.set_member_to_freedom('Gangster')

        self.assertEquals(self.g1.subordinates_count(), 1)
Beispiel #12
0
class TestGangsterBoss(TestCase):
    def setUp(self):
        self.g = Gangster('Gangster', 15)
        self.gb = Gangster('Gangster  Boss', 75)

        self.g.set_boss(self.gb)

    def test_has_boss_on_newly_created_gangster_return_false(self):
        g = Gangster('Gang', 12)
        self.assertFalse(g.has_boss())

    def test_set_boss_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.set_boss, 'gigi')

    def test_set_boss_accepts_none(self):
        self.assertTrue(self.g.set_boss(None))

    def test_set_boss_updates_the_gangster_boss(self):
        self.assertTrue(self.g.has_boss())

    def test_get_boss_returns_gangster_boss(self):
        self.assertEquals(self.g.get_boss(), self.gb)
class TestMafiaOrganizationSendMemberToJail(TestCase):
    def setUp(self):
        self.big_boss = Gangster('Big Boss', 21)

        self.g1 = Gangster('Gangster', 20)
        self.g2 = Gangster('Gangster 2', 20, 'Location 2')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)

    def test_send_member_to_jail_on_unknown_gangster_returns_false(self):
        self.assertFalse(self.mog.send_member_to_jail('Unknown Gangster'))

    def test_send_member_to_jail_on_known_gangster_returns_true(self):
        self.assertTrue(self.mog.send_member_to_jail('Gangster'))

    def test_send_member_to_jail_sets_injailstatus(self):
        self.mog.send_member_to_jail('Gangster')

        self.assertEquals(self.g1.status, GangsterStatus.INJAIL)

    def test_send_member_to_jail_removes_all_subordinates(self):
        self.mog.send_member_to_jail('Gangster')

        self.assertEquals(self.g1.subordinates_count(), 0)

    def test_send_member_to_jail_doesnt_update_subordinate_location_to_unknown(self):
        self.mog.send_member_to_jail('Gangster')

        self.assertEquals(self.g2.location, 'Location 2')

    def test_send_member_to_jail_update_current_boss_attribute_on_subordinates(self):
        self.mog.send_member_to_jail('Gangster')
        self.assertEquals(self.g2.get_boss(), self.big_boss)

    def test_send_member_to_jail_update_previous_boss_attribute_on_subordinates(self):
        self.mog.send_member_to_jail('Gangster')
        self.assertEquals(self.g2.boss_in_jail, self.g1)
class TestMafiaOrganizationSendMemberToJailCase3MultiLevelsDepthKillLevel2(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21, 'Location Big Boss')
        self.g1 = Gangster('Gangster', 31, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 32, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 33, 'Location Gangster 3')

        self.g4 = Gangster('Gangster 4', 12, 'Location Gangster 4')
        self.g5 = Gangster('Gangster 5', 12, 'Location Gangster 5')
        self.g6 = Gangster('Gangster 6', 12, 'Location Gangster 6')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.big_boss, self.g2)
        self.mog.add_under(self.big_boss, self.g3)

        self.mog.add_under(self.g1, self.g4)
        self.mog.add_under(self.g2, self.g5)
        self.mog.add_under(self.g3, self.g6)

        # When
        self.mog.send_member_to_jail('Gangster')

    def test_send_member_to_jail_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster'), Gangster)

    def test_send_member_to_jail_is_no_longer_found_by_is_member_of_organization(self):
        self.assertFalse(self.mog.is_member_of_organization('Gangster'))

    def test_send_member_to_jail_subordinate_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster 4'), Gangster)

    def test_send_member_to_jail_subordinate_has_a_new_boss(self):
        self.assertEquals(self.g4.get_boss(), self.g3)
        self.assertEquals(self.g6.get_boss(), self.g3)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 7)
Beispiel #15
0
class TestGangsterBoss(TestCase):
    def setUp(self):
        self.g = Gangster('Gangster', 15)
        self.gb = Gangster('Gangster  Boss', 75)

        self.g.set_boss(self.gb)

    def test_has_boss_on_newly_created_gangster_return_false(self):
        g = Gangster('Gang', 12)
        self.assertFalse(g.has_boss())

    def test_set_boss_throws_error_on_not_gangster_instance(self):
        self.assertRaises(Exception, self.g.set_boss, 'gigi')

    def test_set_boss_accepts_none(self):
        self.assertTrue(self.g.set_boss(None))

    def test_set_boss_updates_the_gangster_boss(self):
        self.assertTrue(self.g.has_boss())

    def test_get_boss_returns_gangster_boss(self):
        self.assertEquals(self.g.get_boss(), self.gb)
class TestMafiaOrganizationKillMemberCase3MultiLevelsDepthKillLevel2(TestCase):
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21, 'Location Big Boss')
        self.g1 = Gangster('Gangster', 31, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 32, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 33, 'Location Gangster 3')

        self.g4 = Gangster('Gangster 4', 12, 'Location Gangster 4')
        self.g5 = Gangster('Gangster 5', 12, 'Location Gangster 5')
        self.g6 = Gangster('Gangster 6', 12, 'Location Gangster 6')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.big_boss, self.g2)
        self.mog.add_under(self.big_boss, self.g3)

        self.mog.add_under(self.g1, self.g4)
        self.mog.add_under(self.g2, self.g5)
        self.mog.add_under(self.g3, self.g6)

        # When
        self.mog.kill_member('Gangster')

    def test_killed_member_is_no_longer_in_organization(self):
        self.assertIsNone(self.mog.find_by_name('Gangster'))

    def test_killed_member_subordinate_is_still_in_organization(self):
        self.assertIsInstance(self.mog.find_by_name('Gangster 4'), Gangster)

    def test_killed_member_subordinate_has_a_new_boss(self):
        self.assertEquals(self.g4.get_boss(), self.g3)
        self.assertEquals(self.g6.get_boss(), self.g3)

    def test_killed_member_subordinates_has_unknown_location(self):
        self.assertEquals(self.g4.location, GangsterLocation.UNKNOWN)

    def test_correct_organization_count(self):
        self.assertEquals(self.mog.members_count(), 6)
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21, 'Location Big Boss')
        self.g1 = Gangster('Gangster', 31, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 32, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 33, 'Location Gangster 3')

        self.g4 = Gangster('Gangster 4', 12, 'Location Gangster 4')
        self.g5 = Gangster('Gangster 5', 12, 'Location Gangster 5')
        self.g6 = Gangster('Gangster 6', 12, 'Location Gangster 6')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.big_boss, self.g2)
        self.mog.add_under(self.big_boss, self.g3)

        self.mog.add_under(self.g1, self.g4)
        self.mog.add_under(self.g2, self.g5)
        self.mog.add_under(self.g3, self.g6)

        # When
        self.mog.send_member_to_jail('Gangster')
    def setUp(self):
        # Given
        self.big_boss = Gangster('Big Boss', 21)
        self.g1 = Gangster('Gangster', 20, 'Location Gangster')
        self.g2 = Gangster('Gangster 2', 30, 'Location Gangster 2')
        self.g3 = Gangster('Gangster 3', 32, 'Location Gangster 3')

        self.mog = MafiaOrganization(self.big_boss)
        self.mog.add_under(self.big_boss, self.g1)
        self.mog.add_under(self.g1, self.g2)
        self.mog.add_under(self.g1, self.g3)

        # When
        self.mog.send_member_to_jail('Gangster')
Beispiel #19
0
 def test_constructor_sets_correct_location(self):
     g = Gangster('name', 45, 'my location')
     self.assertEquals(g.location, 'my location')
Beispiel #20
0
    def setUp(self):
        self.g = Gangster('Gangster', 15)
        self.gb = Gangster('Gangster  Boss', 75)

        self.g.set_boss(self.gb)
Beispiel #21
0
    def setUp(self):
        self.g = Gangster('Gangster', 15)
        self.gb = Gangster('Gangster  Boss', 75)

        self.g.set_boss(self.gb)
    def test_find_by_name_search_for_big_boss_subordinate(self):
        g1 = Gangster('Big Boss Subordinate Level 1', 19)
        self.big_boss.add_subordinate(g1)

        self.assertEquals(self.mog.find_by_name('Big Boss Subordinate Level 1'), g1)
Beispiel #23
0
 def test_has_boss_on_newly_created_gangster_return_false(self):
     g = Gangster('Gang', 12)
     self.assertFalse(g.has_boss())
Beispiel #24
0
 def test_delete_subordinate_when_delete_unknown_gangster_returns_false(
         self):
     ngs = Gangster('Not Subordinate', 43)
     self.assertFalse(self.g.delete_subordinate(ngs))
    def test_add_under_accepts_only_organization_members_as_boss(self):
        g2 = Gangster('Subordinate Level 2', 19)

        self.assertRaises(Exception, self.mog.add_under, self.g1, g2)
Beispiel #26
0
    def setUp(self):
        self.g = Gangster('Gangster', 44)

        self.gs = Gangster('Subordinate', 43)
        self.g.add_subordinate(self.gs)
Beispiel #27
0
    def setUp(self):
        self.g = Gangster('Gangster', 44)

        self.gs = Gangster('Subordinate', 43)
        self.g.add_subordinate(self.gs)
    def test_set_big_boss_sets_correct_big_boss(self):
        big_boss2 = Gangster('Big Boss 2', 22)
        self.mog.set_big_boss(big_boss2)

        self.assertEquals(self.mog.get_big_boss(), big_boss2)
Beispiel #29
0
 def test_has_boss_on_newly_created_gangster_return_false(self):
     g = Gangster('Gang', 12)
     self.assertFalse(g.has_boss())
    def setUp(self):
        self.big_boss = Gangster('Big Boss', 21)
        self.g1 = Gangster('Big Boss Subordinate Level 1', 20)
        self.g2 = Gangster('Big Boss Subordinate Level 2', 21)

        self.mog = MafiaOrganization(self.big_boss)
 def setUp(self):
     self.big_boss = Gangster('Big Boss', 21)
     self.mog = MafiaOrganization(self.big_boss)
 def setUp(self):
     self.big_boss = Gangster('Big Boss', 21)
     self.mog = MafiaOrganization(self.big_boss)
Beispiel #33
0
 def setUp(self):
     self.g = Gangster('some gangster', 12)