def test_unconnected_limited_infection(self): """ Tests the limited infection algorithm with a group of 3 unconnected users. """ u1 = User("u1", 1) u2 = User("u2", 1) u3 = User("u3", 1) network = UserNetwork() network.add_user(u1) network.add_user(u2) network.add_user(u3) network.limited_infection(u1, 3, 2) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 2) self.assertEqual(u3.version, 2) network.limited_infection(u2, 3, 3) self.assertEqual(u1.version, 3) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 3) network.limited_infection(u3, 3, 4) self.assertEqual(u1.version, 4) self.assertEqual(u2.version, 4) self.assertEqual(u3.version, 4) network.limited_infection(u2, 2, 5) self.assertEqual(u2.version, 5) # One or other but not both self.assertNotEqual(u1.version, u3.version) self.assertTrue(u1.version == 5 or u3.version == 5)
def test_basic_limited_infection(self): """ Tests the limited infection algorithm on a network of 3 users such that user 1 coaches user 2 and user 2 coaches user 3. """ u1 = User("u1", 1) u2 = User("u2", 1) u3 = User("u3", 1) u1.add_student(u2) u2.add_student(u3) network = UserNetwork() network.add_user(u1) network.add_user(u2) network.add_user(u3) network.limited_infection(u1, 2, 2) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 2) self.assertEqual(u3.version, 1) network.limited_infection(u2, 2, 3) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 3) # Make sure it finds user w/ most infected students network.limited_infection(u3, 2, 4) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 4) self.assertEqual(u3.version, 4)