HEX
Server: Apache
System: Linux vps-cdc32557.vps.ovh.ca 5.15.0-156-generic #166-Ubuntu SMP Sat Aug 9 00:02:46 UTC 2025 x86_64
User: hanode (1017)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //lib/python3/dist-packages/networkx/algorithms/tests/test_chordal.py
#!/usr/bin/env python
import pytest
import networkx as nx


class TestMCS:

    @classmethod
    def setup_class(cls):
        # simple graph
        connected_chordal_G = nx.Graph()
        connected_chordal_G.add_edges_from([(1, 2), (1, 3), (2, 3), (2, 4),
                                            (3, 4), (3, 5), (3, 6), (4, 5),
                                            (4, 6), (5, 6)])
        cls.connected_chordal_G = connected_chordal_G

        chordal_G = nx.Graph()
        chordal_G.add_edges_from([(1, 2), (1, 3), (2, 3), (2, 4), (3, 4),
                                  (3, 5), (3, 6), (4, 5), (4, 6), (5, 6),
                                  (7, 8)])
        chordal_G.add_node(9)
        cls.chordal_G = chordal_G

        non_chordal_G = nx.Graph()
        non_chordal_G.add_edges_from([(1, 2), (1, 3), (2, 4), (2, 5),
                                      (3, 4), (3, 5)])
        cls.non_chordal_G = non_chordal_G

    def test_is_chordal(self):
        assert not nx.is_chordal(self.non_chordal_G)
        assert nx.is_chordal(self.chordal_G)
        assert nx.is_chordal(self.connected_chordal_G)
        assert nx.is_chordal(nx.complete_graph(3))
        assert nx.is_chordal(nx.cycle_graph(3))
        assert not nx.is_chordal(nx.cycle_graph(5))

    def test_induced_nodes(self):
        G = nx.generators.classic.path_graph(10)
        Induced_nodes = nx.find_induced_nodes(G, 1, 9, 2)
        assert Induced_nodes == set([1, 2, 3, 4, 5, 6, 7, 8, 9])
        pytest.raises(nx.NetworkXTreewidthBoundExceeded,
                      nx.find_induced_nodes, G, 1, 9, 1)
        Induced_nodes = nx.find_induced_nodes(self.chordal_G, 1, 6)
        assert Induced_nodes == set([1, 2, 4, 6])
        pytest.raises(nx.NetworkXError,
                      nx.find_induced_nodes, self.non_chordal_G, 1, 5)

    def test_chordal_find_cliques(self):
        cliques = set([frozenset([9]), frozenset([7, 8]), frozenset([1, 2, 3]),
                       frozenset([2, 3, 4]), frozenset([3, 4, 5, 6])])
        assert nx.chordal_graph_cliques(self.chordal_G) == cliques

    def test_chordal_find_cliques_path(self):
        G = nx.path_graph(10)
        cliqueset = nx.chordal_graph_cliques(G)
        for (u, v) in G.edges():
            assert (frozenset([u, v]) in cliqueset
                        or frozenset([v, u]) in cliqueset)

    def test_chordal_find_cliquesCC(self):
        cliques = set([frozenset([1, 2, 3]), frozenset([2, 3, 4]),
                       frozenset([3, 4, 5, 6])])
        cgc = nx.chordal_graph_cliques
        assert cgc(self.connected_chordal_G) == cliques

    def test_complete_to_chordal_graph(self):
        fgrg = nx.fast_gnp_random_graph
        test_graphs = [nx.barbell_graph(6, 2), nx.cycle_graph(15),
                       nx.wheel_graph(20), nx.grid_graph([10, 4]),
                       nx.ladder_graph(15), nx.star_graph(5),
                       nx.bull_graph(), fgrg(20, 0.3, seed=1)]
        for G in test_graphs:
            H, a = nx.complete_to_chordal_graph(G)
            assert nx.is_chordal(H)
            assert len(a) == H.number_of_nodes()
            if nx.is_chordal(G):
                assert G.number_of_edges() == H.number_of_edges()
                assert set(a.values()) == {0}
            else:
                assert len(set(a.values())) == H.number_of_nodes()