diff options
Diffstat (limited to 'src/boost/libs/graph/test/generator_test.cpp')
-rw-r--r-- | src/boost/libs/graph/test/generator_test.cpp | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/src/boost/libs/graph/test/generator_test.cpp b/src/boost/libs/graph/test/generator_test.cpp new file mode 100644 index 00000000..15f47408 --- /dev/null +++ b/src/boost/libs/graph/test/generator_test.cpp @@ -0,0 +1,124 @@ +// Copyright 2009 The Trustees of Indiana University. + +// Use, modification and distribution is subject to the Boost Software +// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// Authors: Nicholas Edmonds +// Andrew Lumsdaine + +#include <boost/random.hpp> +#include <boost/test/minimal.hpp> + +#include <boost/graph/rmat_graph_generator.hpp> +#include <boost/graph/small_world_generator.hpp> +#include <boost/graph/ssca_graph_generator.hpp> +#include <boost/graph/erdos_renyi_generator.hpp> +#include <boost/graph/mesh_graph_generator.hpp> + +#include <boost/graph/adjacency_list.hpp> + +using namespace boost; + +int test_main(int argc, char** argv) { + + typedef rand48 RandomGenerator; + + typedef adjacency_list<vecS, vecS, directedS> Graph; + + RandomGenerator gen; + + size_t N = 100; + size_t M = 1000; + double p = 0.05; + + // Test Erdos-Renyi generator + { + erdos_renyi_iterator<RandomGenerator, Graph> start(gen, N, p); + erdos_renyi_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + { + sorted_erdos_renyi_iterator<RandomGenerator, Graph> start(gen, N, p); + sorted_erdos_renyi_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + // Test Small World generator + { + small_world_iterator<RandomGenerator, Graph> start(gen, N, M, p); + small_world_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + // Test SSCA generator + { + ssca_iterator<RandomGenerator, Graph> start(gen, N, 5, 0.5, 5, p); + ssca_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + // Test Mesh generator + { + mesh_iterator<Graph> start(N, N); + mesh_iterator<Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + // Test R-MAT generator + double a = 0.57, b = 0.19, c = 0.19, d = 0.05; + + { + rmat_iterator<RandomGenerator, Graph> start(gen, N, M, a, b, c, d); + rmat_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + { + unique_rmat_iterator<RandomGenerator, Graph> start(gen, N, M, a, b, c, d); + unique_rmat_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + { + sorted_unique_rmat_iterator<RandomGenerator, Graph> start(gen, N, M, a, b, c, d); + sorted_unique_rmat_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + { + sorted_unique_rmat_iterator<RandomGenerator, Graph> start(gen, N, M, a, b, c, d, true); + sorted_unique_rmat_iterator<RandomGenerator, Graph> end; + + while (start != end) ++start; + + BOOST_CHECK(start == end); + } + + return 0; +} |