Esempio n. 1
0
    def test_get_user_graph(self):
        population = Population()

        population.load({'A': 0, 'B': 0, 'C': 0}, {'A': ['B'], 'B': ['C'], 'C': ['A']})

        self.assertListEqual(sorted(population.get_user_graph(), key=lambda pair: list(pair)[0]),
            [('A', 'B'), ('B', 'C'), ('C', 'A')])
Esempio n. 2
0
    def test_full_infection(self):
        population = Population()

        population.load({'A': 0, 'B': 0, 'C': 0}, {'A': ['B'], 'B': ['C'], 'C': ['A']})

        self.assertEqual(population.full_infection('A'), 3)

        self.assertSetEqual(set(population.versions), {1})
Esempio n. 3
0
    def test_load(self):
        population = Population()

        population.load({'A': 0, 'B': 0, 'C': 0}, {'A': ['B'], 'B': ['C'], 'C': ['A']})

        self.assertListEqual(sorted(population.users), ['A', 'B', 'C'])
        self.assertSetEqual(set(population.versions), {0})
        self.assertDictEqual(population.graph, {'A': ['B'], 'B': ['C'], 'C': ['A']})
Esempio n. 4
0
def limited_infection(name, count):
    population = Population()

    # Load user versions and graph from files.
    population.load(load_user_versions(name), load_user_graph(name))

    # Infect N users.
    infected = population.limited_infection(count)

    print("Infected {} users of the {} requested".format(infected, count))

    # Save full infection user versions and graph.
    save_user_versions("{}_limited".format(name), population)
    save_user_graph("{}_limited".format(name), population)
Esempio n. 5
0
def full_infection(name, user):
    population = Population()

    # Load user versions and graph from files.
    population.load(load_user_versions(name), load_user_graph(name))

    # Infect user and those connected.
    infected = population.full_infection(user)

    print("Infected {} users".format(infected))

    # Save full infection user versions and graph.
    save_user_versions("{}_full".format(name), population)
    save_user_graph("{}_full".format(name), population)
Esempio n. 6
0
    def test_limited_infection(self):
        population = Population(10, 0.5, 1)

        population.load({'A': 0, 'B': 0, 'C': 0, 'D': 0, 'E': 0}, {'A': ['B'], 'B': ['C'], 'C': ['A']})

        self.assertEqual(population.limited_infection(3), 3)

        self.assertListEqual(sorted(population.get_user_versions(), key=lambda pair: list(pair)[0]),
            [('A', 1), ('B', 1), ('C', 1), ('D', 0), ('E', 0)])
Esempio n. 7
0
def generate_population(name, size):
    population = Population(size)

    # Save random population of given size.
    save_user_versions(name, population)
    save_user_graph(name, population)
Esempio n. 8
0
    def test_random(self):
        population = Population(5, 0.5, 1)

        self.assertListEqual(sorted(population.users), ['A', 'B', 'C', 'D', 'E'])
        self.assertSetEqual(set(population.versions), {0})
        self.assertDictEqual(population.graph, {'A': ['D'], 'E': ['D', 'B'], 'D': ['E'], 'B': ['D'], 'C': ['A']})