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')])
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})
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']})
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)])
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)
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)