コード例 #1
0
    def test_generate_random_graph_erdos_renyi(self):
        # Given
        num_nodes = 3
        target_graph = nx.Graph()
        target_graph.add_edges_from([(0, 1), (1, 2), (0, 2)])

        # When
        graph = generate_random_graph_erdos_renyi(num_nodes, 1)

        # Then
        assert compare_graphs(graph, target_graph)

        # Given
        num_nodes = 3
        target_graph = nx.Graph()

        # When
        graph = generate_random_graph_erdos_renyi(num_nodes, 1)

        # Then
        assert compare_graphs(graph, target_graph)

        # Given
        num_nodes = 20
        weight_sampler = uniform_sampler()

        # When
        graph = generate_random_graph_erdos_renyi(num_nodes, 0.8,
                                                  weight_sampler)
コード例 #2
0
    def test_generate_random_regular_graph(self):
        # Given
        num_nodes = 4
        degree = 2

        # When
        graph = generate_random_regular_graph(num_nodes, degree)

        # Then
        for n in graph.nodes():
            node_in_edge = [n in e for e in graph.edges()]
            assert sum(node_in_edge) == degree

        # Given
        num_nodes = 20
        degree = 3
        weight_sampler = uniform_sampler()

        # When
        graph = generate_random_regular_graph(num_nodes, degree,
                                              weight_sampler)

        # Then
        for edge in graph.edges:
            assert "weight" in graph.edges[edge].keys()

        assert len(graph.nodes) == num_nodes
コード例 #3
0
    def test_generate_barbell_graph(self):
        n_vertices = 4
        graph = generate_barbell_graph(n_vertices, uniform_sampler())

        for edge in graph.edges:
            assert "weight" in graph.edges[edge].keys()

        assert len(graph.nodes) == n_vertices * 2
コード例 #4
0
    def test_seed(self):
        # Given
        num_nodes = 4
        degree = 2
        seed = 123
        weight_sampler = uniform_sampler()

        target_graph = generate_random_regular_graph(
            num_nodes, degree, weight_sampler=weight_sampler, seed=seed)

        # When
        graph = generate_random_regular_graph(num_nodes,
                                              degree,
                                              weight_sampler=uniform_sampler(),
                                              seed=seed)

        # Then
        assert compare_graphs(graph, target_graph)
コード例 #5
0
    def test_generate_ladder_graph(self):
        # Given
        length_of_ladder = 4
        weight_sampler = uniform_sampler()

        # When
        graph = generate_ladder_graph(length_of_ladder, weight_sampler)

        # Then
        for edge in graph.edges:
            assert "weight" in graph.edges[edge].keys()

        assert len(graph.nodes) == length_of_ladder * 2
コード例 #6
0
    def test_generate_caveman_graph(self):
        # Given
        number_of_cliques = 3
        size_of_cliques = 4
        weight_sampler = uniform_sampler()

        # When
        graph = generate_caveman_graph(number_of_cliques, size_of_cliques,
                                       weight_sampler)

        # Then
        for edge in graph.edges:
            assert "weight" in graph.edges[edge].keys()

        assert len(graph.nodes) == number_of_cliques * 4
コード例 #7
0
            "num_nodes": 10,
            "random_weights": True
        }

        # When
        graph = generate_graph_from_specs(specs)

        # Then
        for edge in graph.edges:
            assert "weight" in graph.edges[edge].keys()


@pytest.mark.parametrize(
    "sampler",
    [
        uniform_sampler(),
        uniform_sampler(2, 3),
        constant_sampler(-1),
        normal_sampler(2, 1),
        choice_sampler([2, 1, 6]),
    ],
)
class TestSamplers:
    def test_generates_numbers(self, sampler):
        assert isinstance(next(sampler), numbers.Number)

    def test_can_be_reused(self, sampler):
        next(sampler)
        next(sampler)

    def test_generates_same_number_when_seeded(self, sampler):