Ejemplo n.º 1
0
    def test_add_panda(self):
        socialPanda = PandaSocialNetwork({})

        with self.assertRaises(PandaAlreadyThere):
            ivo = Panda("Ivo", "*****@*****.**", "male")
            socialPanda.add_panda(ivo)
            socialPanda.add_panda(ivo)
    def test_add_panda(self):
        socialPanda = PandaSocialNetwork({})

        with self.assertRaises(PandaAlreadyThere):
            ivo = Panda("Ivo", "*****@*****.**", "male")
            socialPanda.add_panda(ivo)
            socialPanda.add_panda(ivo)
Ejemplo n.º 3
0
def main():
    mitko = Panda('Mitko', '*****@*****.**', 'male')
    alex = Panda('Alex', '*****@*****.**', 'female')
    viki = Panda('Viki', '*****@*****.**', 'female')
    viktor = Panda('Viktor', '*****@*****.**', 'male')
    sasho = Panda('Sasho', '*****@*****.**', 'male')
    sandy = Panda('Sandy', '*****@*****.**', 'female')

    pandi = [mitko, alex, viki, viktor, sasho, sandy]

    network = PandaSocialNetwork()

    for i in pandi:
        network.add_panda(i)

    network.make_friends(mitko, alex)
    network.make_friends(viktor, alex)
    network.make_friends(viki, alex)
    network.make_friends(sasho, alex)
    network.make_friends(viki, sandy)

    network.save()

    print('\n')
    print('This is json for save {}'.format(network.print_json()))
    print('\n')

    network.load()
    network.gen_soc_network()
    print('This is soc_network {}'.format(network._soc_network))
    print('This is people {}'.format(network.people))
    print('\n')
    print('This is people2 {}'.format(network.people2))
Ejemplo n.º 4
0
 def test_has_panda(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     filip = Panda("Fil", "*****@*****.**", "male")
     socialPanda.add_panda(ivo)
     socialPanda.add_panda(rado)
     self.assertTrue(socialPanda.has_panda(rado))
     self.assertFalse(socialPanda.has_panda(filip))
 def test_has_panda(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     filip = Panda("Fil", "*****@*****.**", "male")
     socialPanda.add_panda(ivo)
     socialPanda.add_panda(rado)
     self.assertTrue(socialPanda.has_panda(rado))
     self.assertFalse(socialPanda.has_panda(filip))
Ejemplo n.º 6
0
class PandaSocialNetworkTests(unittest.TestCase):
    def setUp(self):
        self.panda_social_network = PandaSocialNetwork()

    def test_panda_name_method_avoids_collision(self):
        panda = Panda('name', '*****@*****.**', 'male')
        self.assertEqual(panda.name(), 'name')

    def test_get_pandas_return_1_panda_if_1_panda_is_added(self):
        panda = Panda('Pesho', '*****@*****.**', 'male')
        self.panda_social_network.add_panda(panda)
        self.assertEqual(self.panda_social_network.get_pandas(), [panda])

    def test_make_friends_work_properly(self):
        panda1 = Panda('Pesho', '*****@*****.**', 'male')
        panda2 = Panda('Peshoze', '*****@*****.**', 'male')
        self.assertEqual(0, len(self.panda_social_network.get_pandas()))
        self.panda_social_network.make_friends(panda1, panda2)
        self.assertEqual(2, len(self.panda_social_network.get_pandas()))
        self.assertTrue(self.panda_social_network.are_friends(panda1, panda2))
        self.assertTrue(self.panda_social_network.are_friends(panda2, panda1))

    def test_connection_level_for_graph_with_4_pandas(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        panda2 = Panda('name', '*****@*****.**', 'male')
        panda3 = Panda('name', '*****@*****.**', 'male')
        panda4 = Panda('name', '*****@*****.**', 'male')
        self.panda_social_network.make_friends(panda1, panda2)
        self.panda_social_network.make_friends(panda2, panda3)
        self.panda_social_network.make_friends(panda3, panda4)

        level = self.panda_social_network. \
            connection_level(panda1, panda4)
        self.assertEqual(3, level)
        # self.assertEqual([panda1, panda2, panda3, panda4], list(path))

    def test_connection_level_for_two_pandas_who_are_not_connected(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        panda2 = Panda('name', '*****@*****.**', 'male')

        self.panda_social_network.add_panda(panda1)
        self.panda_social_network.add_panda(panda2)

        self.assertEqual(
            self.panda_social_network.connection_level(panda1, panda2), -1)

    def test_friends_of_panda_with_two_friends(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        panda2 = Panda('name', '*****@*****.**', 'male')
        panda3 = Panda('name', '*****@*****.**', 'male')

        self.panda_social_network.make_friends(panda1, panda2)
        self.panda_social_network.make_friends(panda1, panda3)

        self.assertEqual(self.panda_social_network.friends_of(panda1),
                         set([panda2, panda3]))

    def test_are_connected_two_pandas_that_are(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        panda2 = Panda('name', '*****@*****.**', 'male')

        self.panda_social_network.make_friends(panda1, panda2)
        self.assertTrue(self.panda_social_network.are_connected(
            panda1, panda2))

    def test_gender_when_level_is_0(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        panda2 = Panda('name', '*****@*****.**', 'male')
        panda3 = Panda('name', '*****@*****.**', 'male')

        self.panda_social_network.make_friends(panda1, panda2)
        self.panda_social_network.make_friends(panda1, panda3)
        self.assertEqual(
            self.panda_social_network.how_many_gender_in_network(
                1, panda1, 'male'), 2)

    def test_friends_of_panda_with_0_friends(self):
        panda1 = Panda('name', '*****@*****.**', 'male')
        self.panda_social_network.add_panda(panda1)
        self.assertEqual(self.panda_social_network.friends_of(panda1), set())
Ejemplo n.º 7
0
class TestSocialNetwork(unittest.TestCase):
    def setUp(self):
        self.ivo = Panda("Ivo", "*****@*****.**", "male")
        self.network = PandaSocialNetwork()

    def test_has_and_add_panda_in_network(self):
        self.network.add_panda(self.ivo)

        self.assertTrue(self.network.has_panda(self.ivo))

    # def test_add_panda_when_alredy_there(self):
    #     self.network.add_panda(self.ivo)
    #     with self.assertRaises('PandaAlreadyThere'):
    #         self.network.add_panda(self.ivo)

    def test_has_panda_when_panda_not_in_network(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        self.assertFalse(self.network.has_panda(rado))

    def test_make_and_are_friends(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        self.network.make_friends(self.ivo, rado)

        self.assertTrue(self.network.are_friends(self.ivo, rado))
        self.assertFalse(self.network.are_friends(self.ivo, mimi))

    def test_friends_of(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(self.ivo, tony)
        self.network.make_friends(self.ivo, mimi)

        self.assertEqual(self.network.friends_of(self.ivo), [rado, tony, mimi])

    def test_friends_of_when_panda_not_in_network(self):
        rado = Panda("Rado", "*****@*****.**", "male")

        self.assertFalse(self.network.friends_of(rado))

    def test_connection_level(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(rado, tony)

        self.assertEqual(self.network.connection_level(self.ivo, self.ivo), 0)
        self.assertEqual(self.network.connection_level(self.ivo, rado), 1)
        self.assertEqual(self.network.connection_level(self.ivo, tony), 2)

    def test_connection_level_when_not_connected_at_all(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(rado, tony)

        self.assertEqual(self.network.connection_level(self.ivo, mimi), -1)

    def test_connection_level_when_panda_not_in_network(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")

        self.assertFalse(self.network.connection_level(self.ivo, rado))
        self.assertFalse(self.network.connection_level(rado, self.ivo))
        self.assertFalse(self.network.connection_level(rado, tony))

    def test_are_connected(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        viki = Panda("Viki", "*****@*****.**", "female")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(rado, tony)
        self.network.add_panda(mimi)

        self.assertTrue(self.network.are_connected(self.ivo, self.ivo))
        self.assertTrue(self.network.are_connected(self.ivo, rado))
        self.assertTrue(self.network.are_connected(self.ivo, tony))
        self.assertFalse(self.network.are_connected(self.ivo, mimi))
        self.assertFalse(self.network.are_connected(self.ivo, viki))

    def test_how_many_gender_in_network(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        viki = Panda("Viki", "*****@*****.**", "female")
        mitko = Panda("Mitko", "*****@*****.**", "male")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(rado, tony)
        self.network.make_friends(rado, mimi)
        self.network.make_friends(rado, mitko)
        self.network.make_friends(mimi, viki)

        self.assertEqual(self.network.how_many_gender_in_network(2, self.ivo, "male"), 2)
        self.assertEqual(self.network.how_many_gender_in_network(2, self.ivo, "female"), 2)
        self.assertEqual(self.network.how_many_gender_in_network(3, self.ivo, "female"), 3)

    def test_how_many_gender_in_network_no_such_level(self):
        rado = Panda("Rado", "*****@*****.**", "male")
        tony = Panda("Tony", "*****@*****.**", "female")
        mimi = Panda("Mimi", "*****@*****.**", "female")
        viki = Panda("Viki", "*****@*****.**", "female")
        mitko = Panda("Mitko", "*****@*****.**", "male")
        self.network.make_friends(self.ivo, rado)
        self.network.make_friends(rado, tony)
        self.network.make_friends(rado, mimi)
        self.network.make_friends(rado, mitko)
        self.network.make_friends(mimi, viki)

        self.assertEqual(self.network.how_many_gender_in_network(5, self.ivo, "female"), 3)
class TestPandaSocialNetwork(unittest.TestCase):
    def setUp(self):
        self.network = PandaSocialNetwork()
        self.peshko = Panda("Peshko", "*****@*****.**", "male")
        self.marto = Panda("Marto", "*****@*****.**", "male")

    def test_create_social_network(self):
        self.assertTrue(isinstance(self.network, PandaSocialNetwork))

    def test_add_panda(self):
        self.network.add_panda(self.peshko)

        with self.assertRaises(PandaAlreadyThere):
            self.network.add_panda(self.peshko)

    def test_has_panda(self):
        self.network.add_panda(self.peshko)
        self.assertTrue(self.network.has_panda(self.peshko))

    def test_make_friends(self):
        self.network.make_friends(self.peshko, self.marto)

        self.assertTrue(self.peshko in self.network.network_dict.keys())

        self.assertTrue(self.peshko in self.network.network_dict[self.marto])
        self.assertTrue(self.marto in self.network.network_dict[self.peshko])

    def test_pandas_already_friends(self):
        self.network.make_friends(self.peshko, self.marto)

        with self.assertRaises(PandaAlreadyFriends):
            self.network.make_friends(self.marto, self.peshko)

    def test_are_pandas_friends(self):
        self.network.make_friends(self.peshko, self.marto)

        self.assertTrue(self.network.are_friends(self.peshko, self.marto))

    def test_friends_of(self):
        ivo = Panda("Ivo", "*****@*****.**", "male")
        mina = Panda("Mina", "*****@*****.**", "female")
        self.assertFalse(self.network.friends_of(ivo))

        self.network.make_friends(self.peshko, self.marto)
        self.network.make_friends(self.peshko, mina)
        self.assertEqual(self.network.friends_of(self.peshko),
                         [self.marto, mina])

    def test_connection_level(self):
        ivo = Panda("Ivo", "*****@*****.**", "male")
        mina = Panda("Mina", "*****@*****.**", "female")
        tony = Panda("Tony", "*****@*****.**", "female")

        self.network.make_friends(ivo, tony)
        self.network.make_friends(self.marto, ivo)
        self.network.make_friends(self.marto, self.peshko)
        self.network.make_friends(self.peshko, mina)
        self.network.make_friends(mina, tony)

        self.assertEqual(self.network.connection_level(ivo, mina), 2)

    def test_connection_level_circle(self):
        ivo = Panda("Ivo", "*****@*****.**", "male")

        self.network.make_friends(self.marto, ivo)
        self.network.make_friends(self.marto, self.peshko)
        self.network.make_friends(ivo, self.peshko)

        self.assertEqual(self.network.connection_level(ivo, self.peshko), 1)

    def test_are_pandas_connected(self):
        self.network.make_friends(self.peshko, self.marto)
        self.assertTrue(
            self.network.connection_level(self.peshko, self.marto) != 0)

        ivo = Panda("Ivo", "*****@*****.**", "male")
        self.assertFalse(self.network.connection_level(self.peshko, ivo) != 0)

    def test_how_many_gender_in_network(self):
        tony = Panda("Tony", "*****@*****.**", "female")
        self.network.make_friends(self.marto, self.peshko)
        self.network.make_friends(self.peshko, tony)

        self.assertEqual(
            self.network.how_many_gender_in_network(1, self.peshko, "female"),
            1)
 def test_has_panda(self):
     social_network = PandaSocialNetwork()
     social_network.add_panda(self.rado)
     self.assertTrue(social_network.has_panda(self.rado))
 def test_add_panda(self):
     social_network = PandaSocialNetwork()
     social_network.add_panda(self.rado)
     social_network.add_panda(self.tony)
     self.assertEqual(social_network.pandas, [self.rado, self.tony])
 def test_add_panda_already_there(self):
     """ Add a panda that's already in the social network """
     social_network = PandaSocialNetwork()
     social_network.add_panda(self.ivo)
     with self.assertRaises(PandaAlreadyThereError):
         social_network.add_panda(self.ivo)
 def test_add_panda(self):
     social_network = PandaSocialNetwork()
     social_network.add_panda(self.ivo)
     social_network.add_panda(self.roza)
     self.assertEqual(social_network.pandas, [self.ivo, self.roza])
class SocialNetworkTests(unittest.TestCase):
    def setUp(self):
        self.ivo = Panda('Ivo', '*****@*****.**', 'male')
        self.ivo_copy = Panda('Ivo', '*****@*****.**', 'male')
        self.roza = Panda('Rositsa', '*****@*****.**', 'female')
        self.smith = Panda('John', '*****@*****.**', 'male')
        self.smalling = Panda('Paul', '*****@*****.**', 'male')
        self.patrice = Panda('Evra', '*****@*****.**', 'male')
        self.girl = Panda('Girl', '*****@*****.**', 'female')
        self.friendless_guy = Panda('Friendless', '*****@*****.**', 'male')

        self.social_network = PandaSocialNetwork()
        self.social_network.add_panda(self.friendless_guy)
        self.social_network.make_friends(self.ivo, self.roza)
        self.social_network.make_friends(self.ivo, self.smith)
        self.social_network.make_friends(self.ivo, self.smalling)
        self.social_network.make_friends(self.patrice, self.smalling)
        self.social_network.make_friends(self.patrice, self.girl)


    def test_add_panda(self):
        social_network = PandaSocialNetwork()
        social_network.add_panda(self.ivo)
        social_network.add_panda(self.roza)
        self.assertEqual(social_network.pandas, [self.ivo, self.roza])

    def test_has_panda(self):
        social_network = PandaSocialNetwork()
        social_network.add_panda(self.ivo)
        self.assertTrue(social_network.has_panda(self.ivo))

    def test_add_panda_already_there(self):
        """ Add a panda that's already in the social network """
        social_network = PandaSocialNetwork()
        social_network.add_panda(self.ivo)
        with self.assertRaises(PandaAlreadyThereError):
            social_network.add_panda(self.ivo)

    def test_make_friends(self):
        """ Make two pandas friends, then try to make them friends again"""
        social_network = PandaSocialNetwork()
        # don't add them to the social network
        social_network.make_friends(self.ivo, self.roza)
        with self.assertRaises(PandasAlreadyFriendsError):
            social_network.make_friends(self.ivo, self.roza)

    def test_are_friends(self):
        social_network = PandaSocialNetwork()
        social_network.make_friends(self.ivo, self.smith)
        social_network.make_friends(self.ivo, self.roza)
        self.assertTrue(social_network.are_friends(self.ivo, self.roza))
        self.assertTrue(social_network.are_friends(self.ivo, self.smith))
        self.assertFalse(social_network.are_friends(self.roza, self.smith))

    def test_friends_of(self):
        self.assertFalse(self.social_network.friends_of(self.friendless_guy))
        self.assertEqual(
            self.social_network.friends_of(self.girl),
            [self.patrice]  # girl is friends with patrice only
        )

    def test_connection_level(self):
        self.assertEqual(self.social_network.connection_level(self.ivo, self.roza), 1)
        self.assertEqual(self.social_network.connection_level(self.ivo, self.girl), 3)
        self.assertEqual(self.social_network.connection_level(self.ivo, self.friendless_guy), -1)

    def test_are_connected(self):
        self.assertTrue(self.social_network.are_connected(self.ivo, self.girl))
        self.assertFalse(self.social_network.are_connected(self.ivo, self.friendless_guy))

    def test_how_many_genders(self):
        self.assertEqual(self.social_network.how_many_gender_in_network(1, self.friendless_guy, 'male'), 0)
        self.assertEqual(self.social_network.how_many_gender_in_network(1, self.girl, 'female'), 0)
        self.assertEqual(self.social_network.how_many_gender_in_network(4, self.girl, 'female'), 1)

    def test_save_load(self):
        file_name = 'saved.json'
        self.social_network.save(file_name)
        loaded_social_network = PandaSocialNetwork.load(file_name)
        # test the loaded social network
        self.assertEqual(loaded_social_network.how_many_gender_in_network(1, self.friendless_guy, 'male'), 0)
        self.assertEqual(loaded_social_network.how_many_gender_in_network(1, self.girl, 'female'), 0)
        self.assertEqual(loaded_social_network.how_many_gender_in_network(4, self.girl, 'female'), 1)
        self.assertTrue(loaded_social_network.are_connected(self.ivo, self.girl))
        self.assertFalse(loaded_social_network.are_connected(self.ivo, self.friendless_guy))
        self.assertEqual(loaded_social_network.connection_level(self.ivo, self.roza), 1)
        self.assertEqual(loaded_social_network.connection_level(self.ivo, self.girl), 3)
        self.assertEqual(loaded_social_network.connection_level(self.ivo, self.friendless_guy), -1)
        self.assertFalse(loaded_social_network.friends_of(self.friendless_guy))
        self.assertEqual(
            loaded_social_network.friends_of(self.girl),
            [self.patrice]  # girl is friends with patrice only
        )
Ejemplo n.º 14
0
class TestSocialPandaNetwork(unittest.TestCase):
    def setUp(self):
        self.network = PandaSocialNetwork()
        self.network.all_pandas = {}
        self.ivo = Panda("Ivo", "*****@*****.**", "male")
        self.pandio = Panda("Pandio", "*****@*****.**", "male")
        self.hime = Panda("Hime", "*****@*****.**", "female")

    def test_init(self):
        self.assertTrue(isinstance(self.network, PandaSocialNetwork))

    def test_add_panda(self):
        self.network.add_panda(self.ivo)
        self.assertTrue(self.ivo in self.network.all_pandas)

        with self.assertRaises(PandaAlreadyThere):
            self.network.add_panda(self.ivo)

    def test_has_panda(self):
        self.assertFalse(self.ivo in self.network.all_pandas)
        self.network.add_panda(self.ivo)
        self.assertTrue(self.ivo in self.network.all_pandas)

    def test_make_friends(self):
        self.network.add_panda(self.ivo)
        self.network.add_panda(self.pandio)
        self.network.make_friends(self.ivo, self.pandio)
        with self.assertRaises(PandasAlreadyFriends):
            self.network.make_friends(self.ivo, self.pandio)

    def test_are_friends(self):
        self.network.add_panda(self.ivo)
        self.network.add_panda(self.pandio)
        self.network.make_friends(self.ivo, self.pandio)
        self.assertTrue(self.network.are_friends(self.ivo, self.pandio))

    def test_friends_of(self):
        pass

    def test_connection_level_3_pandas(self):
        ivo = Panda("Ivo", "*****@*****.**", "male")
        pandio = Panda("Pandio", "*****@*****.**", "male")
        hime = Panda("Hime", "*****@*****.**", "female")
        self.network.add_panda(ivo)
        self.network.add_panda(pandio)
        self.network.add_panda(hime)
        self.network.make_friends(ivo, pandio)
        self.network.make_friends(pandio, hime)
        self.assertEqual(2, self.network.connection_level(ivo, hime))

    def test_are_connected(self):
        self.network.add_panda(self.ivo)
        self.network.add_panda(self.pandio)
        self.network.add_panda(self.hime)
        self.network.make_friends(self.ivo, self.pandio)
        self.assertTrue(self.network.are_connected(self.ivo, self.pandio))
        self.assertFalse(self.network.are_connected(self.ivo, self.hime))

    def test_gender_in_network(self):
        self.network.add_panda(self.ivo)
        self.network.add_panda(self.pandio)
        self.network.add_panda(self.hime)
        self.network.make_friends(self.ivo, self.pandio)
        self.network.make_friends(self.hime, self.pandio)
        result = self.network.how_many_gender_in_network(2, self.ivo, "female")
        self.assertEqual(1, result)