def test_some_connected_total_infection(self): """ Tests total infection of a network where only some of the users are connected to each other. Each time the algorithm is called, only one connected portion of the network should be infected. """ u1 = User("u1", 1) u2 = User("u2", 1) u3 = User("u3", 1) u4 = User("u4", 1) u5 = User("u5", 1) u6 = User("u6", 1) u1.add_student(u2) u1.add_student(u3) u2.add_student(u4) u5.add_student(u6) network = UserNetwork() network.add_user(u1) network.add_user(u2) network.add_user(u3) network.add_user(u4) network.add_user(u5) network.add_user(u6) network.total_infection(u1, 2) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 2) self.assertEqual(u3.version, 2) self.assertEqual(u4.version, 2) self.assertEqual(u5.version, 1) self.assertEqual(u6.version, 1) network.total_infection(u2, 3) self.assertEqual(u1.version, 3) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 3) self.assertEqual(u4.version, 3) self.assertEqual(u5.version, 1) self.assertEqual(u6.version, 1) network.total_infection(u4, 4) self.assertEqual(u1.version, 4) self.assertEqual(u2.version, 4) self.assertEqual(u3.version, 4) self.assertEqual(u4.version, 4) self.assertEqual(u5.version, 1) self.assertEqual(u6.version, 1) network.total_infection(u5, 5) self.assertEqual(u1.version, 4) self.assertEqual(u2.version, 4) self.assertEqual(u3.version, 4) self.assertEqual(u4.version, 4) self.assertEqual(u5.version, 5) self.assertEqual(u6.version, 5)
def test_unconnected_total_infection(self): """ Tests the total infection algorithm with 3 unconnected users. Each time the algorithm is called, only one user should be infected. """ 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.total_infection(u1, 2) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 1) self.assertEqual(u3.version, 1) network.total_infection(u2, 3) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 1) network.total_infection(u3, 4) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 4)
def test_basic_total_infection(self): """ Basic test of the total infection algorithm. There are 3 users such that user 1 coaches user 2 and user 2 coaches user 3. All of the users should be infected. """ 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.total_infection(u1, 2) self.assertEqual(u1.version, 2) self.assertEqual(u2.version, 2) self.assertEqual(u3.version, 2) network.total_infection(u2, 3) self.assertEqual(u1.version, 3) self.assertEqual(u2.version, 3) self.assertEqual(u3.version, 3) network.total_infection(u2, 4) self.assertEqual(u1.version, 4) self.assertEqual(u2.version, 4) self.assertEqual(u3.version, 4)