def TestAdjacentToVertices(self): expect = adjacent_to_vertices(-1, [0, 1], make_claw()) self.assertEqual(expect, False) expect = adjacent_to_vertices(0, [1, 2, 3], make_claw()) self.assertEqual(expect, True) expect = adjacent_to_vertices(0, [2, 3], make_cycle(5)) self.assertEqual(expect, False)
def testInducedSubgraph(self): h = helper.make_claw() g = helper.make_wheel(7) induced = induced_subgraph(g, h) expected = [0, 2, 4, 6] self.assertEqual(induced.nodes(), expected, "Contains: Failed to find a claw in W7")
def testValidColoring(self): g = make_claw() # test invalid claw coloring coloring = [[0, 1, 2, 3]] valid = valid_coloring(coloring, g) self.assertEqual(valid, False, "Valid coloring: Failed for one coloring on claw") coloring = [[1, 3, 2], [0]] valid = valid_coloring(coloring, g) self.assertEqual(valid, True, "Valid coloring: Failed for valid coloring on claw") # test valid claw coloring coloring = [[0], [1, 2, 3]] valid = valid_coloring(coloring, g) self.assertEqual(valid, True, "Valid coloring: Failed for valid coloring on claw") # test invalid claw coloring coloring = [[0, 1], [2, 3]] valid = valid_coloring(coloring, g) self.assertEqual(valid, False, "Valid coloring: Failed for invalid coloring on claw") # test valid diamond coloring g = make_diamond() coloring = [[0], [1], [2, 3]] valid = valid_coloring(coloring, g) self.assertEqual(valid, True, "Valid coloring: failed for valid coloring on diamond") coloring = [[3], [2], [0, 1]] valid = valid_coloring(coloring, g) self.assertEqual(valid, False, ''' Valid coloring: failed for invalid coloring on diamond ''')
def testFindEliminatinSet(self): expect = find_eliminating_set(make_claw()) self.assertEqual(expect, []) expect = find_eliminating_set(make_diamond()) self.assertEqual(expect, [0]) print() expect = find_eliminating_set(make_clique(4)) self.assertEqual(expect, [])
def testTriangleFree(self): G = make_cycle(4) self.assertEqual(triangle_free(G), True) G = make_claw() self.assertEqual(triangle_free(G), True) G = make_co_claw() self.assertEqual(triangle_free(G), False) G = make_diamond() self.assertEqual(triangle_free(G), False)
def testChromaticNumber(self): g = make_claw() chromatic = chromatic_number(g) expect = 2 self.assertEqual(expect, chromatic, "Chromatic Number: Claw Case") g = make_diamond() chromatic = chromatic_number(g) expect = 3 self.assertEqual(expect, chromatic, "Chromatic Number: Diamond Case")
def testFilePath(self): created = os.path.exists(self.k2) self.assertEqual(created, False) g = make_claw() f = File(self.directory, G=g, logger=self.logger) name = "has_K2_edges-5nodes-5.txt" fp = f.file_path(name) self.assertEqual(os.path.join(self.directory, self.k2, name), fp) created = os.path.exists(self.k2) self.assertEqual(created, True)
def testLoad(self): claw = make_claw() c7 = make_cycle(7) co_claw = make_co_claw() tests = {"test1.txt": claw, "test2.txt": c7, "test3.txt": co_claw} directory = os.path.join(self.directory, "test") for file, expect in tests.items(): file_obj = File(directory, file=file) self.assertEqual(expect.nodes(), file_obj.G.nodes(), "Load Failed Nodes: %s" % file) self.assertEqual(expect.edges(), file_obj.G.edges(), "Load Failed :Edges %s" % file)
def testCompare(self): claw = make_claw() co_claw = make_co_claw() f = File(self.directory, G=claw, logger=self.logger) g = File(self.directory, G=claw, logger=self.logger) self.assertEqual(g.compare(f), True) self.assertEqual(f.compare(g), True) g = File(self.directory, G=co_claw, logger=self.logger) self.assertEqual(g.compare(f), False) self.assertEqual(f.compare(g), False) h = File(self.directory, G=make_cycle(4), logger=self.logger) self.assertEqual(h.compare(f), False) self.assertEqual(f.compare(h), False)
def testForbidden(self): claw = make_claw() c4 = make_cycle(4) cok4 = make_cok4() g = make_cycle(5) not_allowed = [claw, c4, cok4] gen = Generator2(g, 1, forbidden=not_allowed) for graph in gen.iterate(): for h in not_allowed: if induced_subgraph(graph, h) is not None: print(graph.edges()) print(h.edges()) self.assertEqual(True, False ,"Failed to forbid a graph")
def testGetName(self): g = make_claw() f = File(self.directory, G=g, logger=self.logger) self.assertEqual(f.get_name(), "has_K2_edges-3_nodes-4.txt") g = make_cycle(5) f = File(self.directory, G=g, logger=self.logger) self.assertEqual(f.get_name(), "has_K2_edges-5_nodes-5.txt") self.assertEqual(f.get_name(1), "has_K2_edges-5_nodes-5--1.txt") self.assertEqual(f.get_name(10), "has_K2_edges-5_nodes-5--10.txt") f = File(self.directory, G=g, logger=self.logger, base="C5") self.assertEqual(f.get_name(), "C5has_K2_edges-5_nodes-5.txt") self.assertEqual(f.get_name(1), "C5has_K2_edges-5_nodes-5--1.txt") self.assertEqual(f.get_name(10), "C5has_K2_edges-5_nodes-5--10.txt")
def testSaveBasic(self): g = make_claw() f = File(self.directory, G=g, logger=self.logger) expect = f.file_path(f.get_name()) self.assertEqual(os.path.exists(expect), False) f.save() self.assertEqual(os.path.exists(expect), True) # make sure the graph was valid with open(expect) as file: text = file.read() lines = text.split("\n") claw = text_to_networkx(lines) self.assertEqual(g.nodes(), claw.nodes()) self.assertEqual(g.edges(), claw.edges())
def testColoring(self): g = make_claw() result = coloring(g) expect = [[1, 3, 2], [0]] self.assertEqual(expect, result, "Coloring: Claw Case") g = make_diamond() result = coloring(g) expect = [[2, 3], [0], [1]] self.assertEqual(expect, result, "Coloring: Diamond Case") g = nx.Graph() g.add_node(0) g.add_node(1) result = coloring(g) expect = [[0, 1]] self.assertEqual(expect, result, "Coloring: Stable Set")
def testC7CoClawClawFree(self): g = make_cycle(7) subgraphs = [make_claw(), make_co_claw()] k_vertexes = k_vertex(g, subgraphs) for index, k in enumerate(k_vertexes): if index > 0: self.assertEqual(k['has_k_vertex'], False, ''' K Vertex says (claw,co-claw)-free Graph has a %s-vertex''' % index) else: self.assertEqual(k['has_k_vertex'], True, ''' K Vertex says (claw,co-claw)-free Graph has no a %s-vertex''' % index)
def testSaveIsomorphic(self): claw = make_claw() f = File(self.directory, G=claw, logger=self.logger) fp_1 = f.save() expect = os.path.join(self.directory, "hasK2", f.get_name()) self.assertEqual(fp_1, expect) fp = f.save() self.assertEqual(fp, None) # create a path of length p4 = make_cycle(4) p4.remove_edge(0, 3) g = File(self.directory, G=p4, logger=self.logger) fp_2 = g.save() expect = os.path.join(self.directory, "hasK2", g.get_name(1)) self.assertNotEqual(fp_1, fp_2) self.assertEqual(fp_2, expect)
def setUp(self): self.dcolor = Dcolor(make_claw())
def setUp(self): self.gen = Generator(make_claw(), 2, [])
def testChequeUnique(self): f = File(self.directory, G=make_claw(), logger=self.logger) fp = "does not exists" self.assertEqual(f.check_unique(fp), True) os.makedirs(self.k2) self.assertEqual(f.check_unique(self.k2), False)