def simple_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() brl0 = BRLBlock("user/user/block/master") v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl0, 1) g1.add_node(v0) g2.add_node(v1) expected = BlockVersionGraph() expected.add_nodes([v0, v1]) self.assertEqual(expected, g1.collision(g2)) self.assertEqual(expected, g2.collision(g1))
def simple_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() brl0 = BRLBlock('user/user/block/master') v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl0, 1) g1.add_node(v0) g2.add_node(v1) expected = BlockVersionGraph() expected.add_nodes([v0, v1]) self.assertEqual(expected, g1.collision(g2)) self.assertEqual(expected, g2.collision(g1))
def disjoints_graphs_no_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() self.assertEqual(BlockVersionGraph(), g1.collision(g2)) self.assertEqual(BlockVersionGraph(), g2.collision(g1)) brl0 = BRLBlock('user/user/block/master') brl1 = BRLBlock('user/user/block2/master') v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1.add_node(v0) g2.add_node(v1) self.assertEqual(BlockVersionGraph(), g1.collision(g2)) self.assertEqual(BlockVersionGraph(), g2.collision(g1))
def disjoints_graphs_no_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() self.assertEqual(BlockVersionGraph(), g1.collision(g2)) self.assertEqual(BlockVersionGraph(), g2.collision(g1)) brl0 = BRLBlock("user/user/block/master") brl1 = BRLBlock("user/user/block2/master") v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1.add_node(v0) g2.add_node(v1) self.assertEqual(BlockVersionGraph(), g1.collision(g2)) self.assertEqual(BlockVersionGraph(), g2.collision(g1))
def empty_test(self): '''When one is empty, it should always be compatible''' g1 = BlockVersionGraph() g2 = BlockVersionGraph() self.assertFalse(g1.collision(g2)) brl0 = BRLBlock('user/user/block/master') brl1 = BRLBlock('user/user/block2/master') v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1.add_node(v0) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1)) g1.add_node(v1) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1))
def empty_test(self): """When one is empty, it should always be compatible""" g1 = BlockVersionGraph() g2 = BlockVersionGraph() self.assertFalse(g1.collision(g2)) brl0 = BRLBlock("user/user/block/master") brl1 = BRLBlock("user/user/block2/master") v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1.add_node(v0) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1)) g1.add_node(v1) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1))
def compatible_test(self): '''both not empty, but compatible''' brl0 = BRLBlock('user/user/block/master') brl1 = BRLBlock('user/user/block2/master') v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_node(v0) g2.add_node(v1) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1)) g1.add_node(v1) g2.add_node(v0) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1))
def compatible_test(self): """both not empty, but compatible""" brl0 = BRLBlock("user/user/block/master") brl1 = BRLBlock("user/user/block2/master") v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_node(v0) g2.add_node(v1) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1)) g1.add_node(v1) g2.add_node(v0) self.assertFalse(g1.collision(g2)) self.assertFalse(g2.collision(g1))
def incompatible_test(self): '''both not empty, and incompatible''' brl0 = BRLBlock('user/user/block/master') brl1 = BRLBlock('user/user/block2/master') v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) v2 = BlockVersion(brl1, 0) v3 = BlockVersion(brl0, 1) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_node(v0) g2.add_node(v3) self.assertTrue(g1.collision(g2)) self.assertTrue(g2.collision(g1)) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_nodes([v0, v1]) g2.add_nodes([v2, v3]) self.assertTrue(g1.collision(g2)) self.assertTrue(g2.collision(g1))
def incompatible_test(self): """both not empty, and incompatible""" brl0 = BRLBlock("user/user/block/master") brl1 = BRLBlock("user/user/block2/master") v0 = BlockVersion(brl0, 0) v1 = BlockVersion(brl1, 1) v2 = BlockVersion(brl1, 0) v3 = BlockVersion(brl0, 1) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_node(v0) g2.add_node(v3) self.assertTrue(g1.collision(g2)) self.assertTrue(g2.collision(g1)) g1 = BlockVersionGraph() g2 = BlockVersionGraph() g1.add_nodes([v0, v1]) g2.add_nodes([v2, v3]) self.assertTrue(g1.collision(g2)) self.assertTrue(g2.collision(g1))
def diamond_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() brlA = BRLBlock('user/user/blockA/master') brlB = BRLBlock('user/user/blockB/master') brlC = BRLBlock('user/user/blockC/master') brlD = BRLBlock('user/user/blockD/master') brlE = BRLBlock('user/user/blockE/master') brlF = BRLBlock('user/user/blockF/master') vA0 = BlockVersion(brlA, 0) vA1 = BlockVersion(brlA, 1) vB = BlockVersion(brlB, 0) vC = BlockVersion(brlC, 1) vD = BlockVersion(brlD, 0) vE = BlockVersion(brlE, 3) vF = BlockVersion(brlF, 13) g1.add_nodes([vA0, vB, vD, vF, vE]) g1.add_edge(vB, vA0) g1.add_edge(vD, vB) g1.add_edge(vA0, vE) g2.add_nodes([vA1, vC, vD, vE]) g2.add_edge(vC, vA1) g2.add_edge(vD, vC) g2.add_edge(vA1, vE) expected = BlockVersionGraph() expected.add_nodes([vA0, vA1, vB, vC, vD]) expected.add_edge(vC, vA1) expected.add_edge(vD, vC) expected.add_edge(vD, vB) expected.add_edge(vB, vA0) self.assertEqual(expected, g1.collision(g2)) self.assertEqual(expected, g2.collision(g1))
def diamond_collisions_test(self): g1 = BlockVersionGraph() g2 = BlockVersionGraph() brlA = BRLBlock("user/user/blockA/master") brlB = BRLBlock("user/user/blockB/master") brlC = BRLBlock("user/user/blockC/master") brlD = BRLBlock("user/user/blockD/master") brlE = BRLBlock("user/user/blockE/master") brlF = BRLBlock("user/user/blockF/master") vA0 = BlockVersion(brlA, 0) vA1 = BlockVersion(brlA, 1) vB = BlockVersion(brlB, 0) vC = BlockVersion(brlC, 1) vD = BlockVersion(brlD, 0) vE = BlockVersion(brlE, 3) vF = BlockVersion(brlF, 13) g1.add_nodes([vA0, vB, vD, vF, vE]) g1.add_edge(vB, vA0) g1.add_edge(vD, vB) g1.add_edge(vA0, vE) g2.add_nodes([vA1, vC, vD, vE]) g2.add_edge(vC, vA1) g2.add_edge(vD, vC) g2.add_edge(vA1, vE) expected = BlockVersionGraph() expected.add_nodes([vA0, vA1, vB, vC, vD]) expected.add_edge(vC, vA1) expected.add_edge(vD, vC) expected.add_edge(vD, vB) expected.add_edge(vB, vA0) self.assertEqual(expected, g1.collision(g2)) self.assertEqual(expected, g2.collision(g1))