def setUp(self):
        self.ivo = Panda('Ivo', '*****@*****.**', 'male')
        self.rado = Panda("Rado", "*****@*****.**", "male")
        self.same_rado = Panda("Rado", "*****@*****.**", "male")
        self.tony = Panda("Tony", "*****@*****.**", "female")

        self.social_network = PandaSocialNetwork()
Esempio n. 2
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)
Esempio n. 4
0
 def test_make_friends(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     with self.assertRaises(PandasAlreadyFriends):
         socialPanda.make_friends(ivo, rado)
         socialPanda.make_friends(ivo, rado)
 def test_are_friends(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     self.assertFalse(socialPanda.are_friends(ivo, rado))
     socialPanda.make_friends(ivo, rado)
     self.assertTrue(socialPanda.are_friends(ivo, rado))
 def test_make_friends(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     with self.assertRaises(PandasAlreadyFriends):
         socialPanda.make_friends(ivo, rado)
         socialPanda.make_friends(ivo, rado)
 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_friend_of(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     emo = Panda("Emo", "*****@*****.**", "male")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, hack)
     self.assertFalse(socialPanda.friend_of(emo))
     friends_of_ivo = []
     for pandas in socialPanda.friend_of(ivo):
         friends_of_ivo.append(pandas)
     self.assertEqual(socialPanda.friend_of(ivo), friends_of_ivo)
    def test_save_load(self):
        file_name = 'saved.json'
        self.social_network.save(file_name)
        loaded_social_network = PandaSocialNetwork.load(file_name)

        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)
Esempio n. 10
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 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)
class SocialNetworkTests(unittest.TestCase):
    def setUp(self):
        self.ivo = Panda('Ivo', '*****@*****.**', 'male')
        self.rado = Panda("Rado", "*****@*****.**", "male")
        self.same_rado = Panda("Rado", "*****@*****.**", "male")
        self.tony = Panda("Tony", "*****@*****.**", "female")

        self.social_network = PandaSocialNetwork()

    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_has_panda(self):
        social_network = PandaSocialNetwork()
        social_network.add_panda(self.rado)
        self.assertTrue(social_network.has_panda(self.rado))

    def test_make_friends(self):
        social_network = PandaSocialNetwork()

        social_network.make_friends(self.ivo, self.tony)
        with self.assertRaises(PandasAlreadyFriends):
            social_network.make_friends(self.ivo, self.rado)

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

    def test_save_load(self):
        file_name = 'saved.json'
        self.social_network.save(file_name)
        loaded_social_network = PandaSocialNetwork.load(file_name)

        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)
 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))
Esempio n. 14
0
 def test_are_friends(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     self.assertFalse(socialPanda.are_friends(ivo, rado))
     socialPanda.make_friends(ivo, rado)
     self.assertTrue(socialPanda.are_friends(ivo, rado))
 def test_are_friends(self):
     social_network = PandaSocialNetwork()
     social_network.make_friends(self.ivo, self.rado)
     social_network.make_friends(self.ivo, self.tony)
     self.assertTrue(social_network.are_friends(self.ivo, self.rado))
     self.assertTrue(social_network.are_friends(self.ivo, self.tony))
     self.assertFalse(social_network.are_friends(self.rado, self.tony))
 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_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
     )
 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])
Esempio n. 20
0
 def test_save_social_network(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     bambi = Panda("Bambi", "*****@*****.**", "female")
     spindi = Panda("Spindi", "*****@*****.**", "male")
     mecupug = Panda("Meco Pug", "*****@*****.**", "male")
     metodi = Panda("Metodi", "*****@*****.**", "male")
     ganio = Panda("Ganio", "*****@*****.**", "male")
     emo = Panda("Emo", "*****@*****.**", "male")
     natalia = Panda("Natalia", "*****@*****.**", "female")
     martina = Panda("Martina", "*****@*****.**", "female")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, bambi)
     socialPanda.make_friends(spindi, mecupug)
     socialPanda.make_friends(rado, metodi)
     socialPanda.make_friends(metodi, ganio)
     socialPanda.make_friends(fil, ganio)
     socialPanda.make_friends(emo, natalia)
     socialPanda.make_friends(emo, martina)
     socialPanda.make_friends(emo, ganio)
     socialPanda.save_social_network(socialPanda.prepare_to_json())
    def test_load_social_network(self):

        socialPanda = PandaSocialNetwork({})
        network = socialPanda.load_social_network("social_network.json")
        for content in network:
            print(content)
 def test_has_panda(self):
     social_network = PandaSocialNetwork()
     social_network.add_panda(self.rado)
     self.assertTrue(social_network.has_panda(self.rado))
 def test_how_many_gender_in_network(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     bambi = Panda("Bambi", "*****@*****.**", "female")
     spindi = Panda("Spindi", "*****@*****.**", "male")
     mecupug = Panda("Meco Pug", "*****@*****.**", "male")
     metodi = Panda("Metodi", "*****@*****.**", "male")
     ganio = Panda("Ganio", "*****@*****.**", "male")
     emo = Panda("Emo", "*****@*****.**", "male")
     natalia = Panda("Natalia", "*****@*****.**", "female")
     martina = Panda("Martina", "*****@*****.**", "female")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, bambi)
     socialPanda.make_friends(spindi, mecupug)
     socialPanda.make_friends(rado, metodi)
     socialPanda.make_friends(metodi, ganio)
     socialPanda.make_friends(fil, ganio)
     socialPanda.make_friends(emo, natalia)
     socialPanda.make_friends(emo, martina)
     socialPanda.make_friends(emo, ganio)
     result = socialPanda.how_many_gender_in_network(2, ivo, "male")
     """
     ivo[rado, fil, bambi] # 2
     rado[ivo, metodi] # 1
     fil[ganio,ivo] # 1
     bambi[ivo] # 0
     result = 4
     """
     self.assertEqual(socialPanda.how_many_gender_in_network(2, ivo, "male"), result)
     result2 = socialPanda.how_many_gender_in_network(3, ivo, "male")
     """
     ivo[rado, fil, bambi] # 2
     rado[ivo, metodi] # 1
     fil[ganio,ivo] # 1
     bambi[ivo] # 0
     metodi[rado, ganio] # 0
     ganio[fil, metodi, emo] # 1
     result = 5
     """
     self.assertEqual(socialPanda.how_many_gender_in_network(3, ivo, "male"), result2)
     result3 = socialPanda.how_many_gender_in_network(4, ivo, "female")
     """
     ivo[rado, fil, bambi] # 1
     rado[ivo, metodi] # 0
     fil[ganio,ivo] # 0
     bambi[ivo] # 0
     metodi[rado, ganio] # 0
     ganio[fil, metodi, emo] #
     emo[natalia, martina, ganio] # 2
     result = 3
     """
     self.assertEqual(socialPanda.how_many_gender_in_network(4, ivo, "female"), result3)
Esempio n. 24
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())
 def test_save_social_network(self):
              socialPanda = PandaSocialNetwork({})
              ivo = Panda("Ivo", "*****@*****.**", "male")
              rado = Panda("Rado", "*****@*****.**", "male")
              fil = Panda("Fil", "*****@*****.**", "male")
              hack = Panda("Hack", "*****@*****.**", "male")
              bambi = Panda("Bambi", "*****@*****.**", "female")
              spindi = Panda("Spindi", "*****@*****.**", "male")
              mecupug = Panda("Meco Pug", "*****@*****.**", "male")
              metodi = Panda("Metodi", "*****@*****.**", "male")
              ganio = Panda("Ganio", "*****@*****.**", "male")
              emo = Panda("Emo", "*****@*****.**", "male")
              natalia = Panda("Natalia", "*****@*****.**", "female")
              martina = Panda("Martina", "*****@*****.**", "female")
              socialPanda.make_friends(ivo, rado)
              socialPanda.make_friends(ivo, fil)
              socialPanda.make_friends(ivo, bambi)
              socialPanda.make_friends(spindi, mecupug)
              socialPanda.make_friends(rado, metodi)
              socialPanda.make_friends(metodi, ganio)
              socialPanda.make_friends(fil, ganio)
              socialPanda.make_friends(emo, natalia)
              socialPanda.make_friends(emo, martina)
              socialPanda.make_friends(emo, ganio)
              socialPanda.save_social_network(socialPanda.prepare_to_json())
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 setUp(self):
     self.network = PandaSocialNetwork()
     self.network.all_pandas = {}
     self.ivo = Panda("Ivo", "*****@*****.**", "male")
     self.pandio = Panda("Pandio", "*****@*****.**", "male")
     self.hime = Panda("Hime", "*****@*****.**", "female")
Esempio n. 28
0
    def test_load_social_network(self):

        socialPanda = PandaSocialNetwork({})
        network = socialPanda.load_social_network("social_network.json")
        for content in network:
            print(content)
    def test_are_connected(self):
        socialPanda = PandaSocialNetwork({})
        ivo = Panda("Ivo", "*****@*****.**", "male")
        rado = Panda("Rado", "*****@*****.**", "male")
        fil = Panda("Fil", "*****@*****.**", "male")
        hack = Panda("Hack", "*****@*****.**", "male")
        bambi = Panda("Bambi", "*****@*****.**", "female")
        spindi = Panda("Spindi", "*****@*****.**", "male")
        mecupug = Panda("Meco Pug", "*****@*****.**", "male")
        metodi = Panda("Metodi", "*****@*****.**", "male")
        ganio = Panda("Ganio", "*****@*****.**", "male")
        socialPanda.make_friends(ivo, rado)
        socialPanda.make_friends(ivo, fil)
        socialPanda.make_friends(ivo, bambi)
        socialPanda.make_friends(spindi, mecupug)
        socialPanda.make_friends(rado, metodi)
        socialPanda.make_friends(metodi, ganio)
        socialPanda.make_friends(fil, ganio)

        self.assertTrue(socialPanda.are_connected(ivo, rado))
        self.assertTrue(socialPanda.are_connected(ivo, ganio))
        self.assertFalse(socialPanda.are_connected(ivo, hack))
        self.assertFalse(socialPanda.are_connected(ivo, mecupug))
 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])
Esempio n. 31
0
    def test_are_connected(self):
        socialPanda = PandaSocialNetwork({})
        ivo = Panda("Ivo", "*****@*****.**", "male")
        rado = Panda("Rado", "*****@*****.**", "male")
        fil = Panda("Fil", "*****@*****.**", "male")
        hack = Panda("Hack", "*****@*****.**", "male")
        bambi = Panda("Bambi", "*****@*****.**", "female")
        spindi = Panda("Spindi", "*****@*****.**", "male")
        mecupug = Panda("Meco Pug", "*****@*****.**", "male")
        metodi = Panda("Metodi", "*****@*****.**", "male")
        ganio = Panda("Ganio", "*****@*****.**", "male")
        socialPanda.make_friends(ivo, rado)
        socialPanda.make_friends(ivo, fil)
        socialPanda.make_friends(ivo, bambi)
        socialPanda.make_friends(spindi, mecupug)
        socialPanda.make_friends(rado, metodi)
        socialPanda.make_friends(metodi, ganio)
        socialPanda.make_friends(fil, ganio)

        self.assertTrue(socialPanda.are_connected(ivo, rado))
        self.assertTrue(socialPanda.are_connected(ivo, ganio))
        self.assertFalse(socialPanda.are_connected(ivo, hack))
        self.assertFalse(socialPanda.are_connected(ivo, mecupug))
    def test_make_friends(self):
        social_network = PandaSocialNetwork()

        social_network.make_friends(self.ivo, self.tony)
        with self.assertRaises(PandasAlreadyFriends):
            social_network.make_friends(self.ivo, self.rado)
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
        )
 def test_connection_level(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     bambi = Panda("Bambi", "*****@*****.**", "female")
     spindi = Panda("Spindi", "*****@*****.**", "male")
     mecupug = Panda("Meco Pug", "*****@*****.**", "male")
     metodi = Panda("Metodi", "*****@*****.**", "male")
     ganio = Panda("Ganio", "*****@*****.**", "male")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, bambi)
     socialPanda.make_friends(spindi, mecupug)
     socialPanda.make_friends(rado, metodi)
     socialPanda.make_friends(metodi, ganio)
     socialPanda.make_friends(fil, ganio)
     friends_level = 1
     are_not_connected = -1
     shortest_path = socialPanda.connection_level(ivo, ganio)
     """
     ganio = path_to[ganio] = fil #1
     fil = path_to[fil] = ivo #2
     ivo = path_to[ivo] = None
     connection_level = 2
     """
     shortest_path2 = socialPanda.connection_level(bambi, metodi)
     """
     metodi = path_to[metodi] = rado #1
     rado = path_to[rado] = ivo #2
     ivo = path_to[ivo] = bambi #3
     bambi = path_to[bambi] = None
     connection_level = 3
     """
     self.assertEqual(socialPanda.connection_level(ivo, rado), friends_level)
     self.assertFalse(socialPanda.connection_level(ivo, hack))
     self.assertEqual(socialPanda.connection_level(ivo, spindi), are_not_connected)
     self.assertEqual(shortest_path, 2)
     self.assertEqual(shortest_path2, 3)
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)
Esempio n. 36
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)
Esempio n. 37
0
 def test_how_many_gender_in_network(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     bambi = Panda("Bambi", "*****@*****.**", "female")
     spindi = Panda("Spindi", "*****@*****.**", "male")
     mecupug = Panda("Meco Pug", "*****@*****.**", "male")
     metodi = Panda("Metodi", "*****@*****.**", "male")
     ganio = Panda("Ganio", "*****@*****.**", "male")
     emo = Panda("Emo", "*****@*****.**", "male")
     natalia = Panda("Natalia", "*****@*****.**", "female")
     martina = Panda("Martina", "*****@*****.**", "female")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, bambi)
     socialPanda.make_friends(spindi, mecupug)
     socialPanda.make_friends(rado, metodi)
     socialPanda.make_friends(metodi, ganio)
     socialPanda.make_friends(fil, ganio)
     socialPanda.make_friends(emo, natalia)
     socialPanda.make_friends(emo, martina)
     socialPanda.make_friends(emo, ganio)
     result = socialPanda.how_many_gender_in_network(2, ivo, "male")
     """
     ivo[rado, fil, bambi] # 2
     rado[ivo, metodi] # 1
     fil[ganio,ivo] # 1
     bambi[ivo] # 0
     result = 4
     """
     self.assertEqual(
         socialPanda.how_many_gender_in_network(2, ivo, "male"), result)
     result2 = socialPanda.how_many_gender_in_network(3, ivo, "male")
     """
     ivo[rado, fil, bambi] # 2
     rado[ivo, metodi] # 1
     fil[ganio,ivo] # 1
     bambi[ivo] # 0
     metodi[rado, ganio] # 0
     ganio[fil, metodi, emo] # 1
     result = 5
     """
     self.assertEqual(
         socialPanda.how_many_gender_in_network(3, ivo, "male"), result2)
     result3 = socialPanda.how_many_gender_in_network(4, ivo, "female")
     """
     ivo[rado, fil, bambi] # 1
     rado[ivo, metodi] # 0
     fil[ganio,ivo] # 0
     bambi[ivo] # 0
     metodi[rado, ganio] # 0
     ganio[fil, metodi, emo] #
     emo[natalia, martina, ganio] # 2
     result = 3
     """
     self.assertEqual(
         socialPanda.how_many_gender_in_network(4, ivo, "female"), result3)
 def setUp(self):
     self.network = PandaSocialNetwork()
     self.peshko = Panda("Peshko", "*****@*****.**", "male")
     self.marto = Panda("Marto", "*****@*****.**", "male")
Esempio n. 39
0
 def test_friend_of(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     emo = Panda("Emo", "*****@*****.**", "male")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, hack)
     self.assertFalse(socialPanda.friend_of(emo))
     friends_of_ivo = []
     for pandas in socialPanda.friend_of(ivo):
         friends_of_ivo.append(pandas)
     self.assertEqual(socialPanda.friend_of(ivo), friends_of_ivo)
Esempio n. 40
0
 def setUp(self):
     self.ivo = Panda("Ivo", "*****@*****.**", "male")
     self.network = PandaSocialNetwork()
Esempio n. 41
0
 def test_connection_level(self):
     socialPanda = PandaSocialNetwork({})
     ivo = Panda("Ivo", "*****@*****.**", "male")
     rado = Panda("Rado", "*****@*****.**", "male")
     fil = Panda("Fil", "*****@*****.**", "male")
     hack = Panda("Hack", "*****@*****.**", "male")
     bambi = Panda("Bambi", "*****@*****.**", "female")
     spindi = Panda("Spindi", "*****@*****.**", "male")
     mecupug = Panda("Meco Pug", "*****@*****.**", "male")
     metodi = Panda("Metodi", "*****@*****.**", "male")
     ganio = Panda("Ganio", "*****@*****.**", "male")
     socialPanda.make_friends(ivo, rado)
     socialPanda.make_friends(ivo, fil)
     socialPanda.make_friends(ivo, bambi)
     socialPanda.make_friends(spindi, mecupug)
     socialPanda.make_friends(rado, metodi)
     socialPanda.make_friends(metodi, ganio)
     socialPanda.make_friends(fil, ganio)
     friends_level = 1
     are_not_connected = -1
     shortest_path = socialPanda.connection_level(ivo, ganio)
     """
     ganio = path_to[ganio] = fil #1
     fil = path_to[fil] = ivo #2
     ivo = path_to[ivo] = None
     connection_level = 2
     """
     shortest_path2 = socialPanda.connection_level(bambi, metodi)
     """
     metodi = path_to[metodi] = rado #1
     rado = path_to[rado] = ivo #2
     ivo = path_to[ivo] = bambi #3
     bambi = path_to[bambi] = None
     connection_level = 3
     """
     self.assertEqual(socialPanda.connection_level(ivo, rado),
                      friends_level)
     self.assertFalse(socialPanda.connection_level(ivo, hack))
     self.assertEqual(socialPanda.connection_level(ivo, spindi),
                      are_not_connected)
     self.assertEqual(shortest_path, 2)
     self.assertEqual(shortest_path2, 3)
Esempio n. 42
0
 def setUp(self):
     self.panda_social_network = PandaSocialNetwork()
Esempio n. 43
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))