37#include <gtest/gtest.h>
76 binary_file =
"/tmp/aleph_io_graph_test_" + std::to_string(
rand()) +
".bin";
77 text_file =
"/tmp/aleph_io_graph_test_" + std::to_string(
rand()) +
".txt";
89 std::vector<int> values;
90 for (
typename Graph::Node_Iterator it(graph); it.has_curr(); it.next())
91 values.push_back(it.get_curr()->get_info());
92 std::sort(values.begin(), values.end());
99 std::vector<double> values;
100 for (
typename Graph::Arc_Iterator it(graph); it.has_curr(); it.next())
101 values.push_back(it.get_curr()->get_info());
102 std::sort(values.begin(), values.end());
134 io.set_verbose(
true);
137 io.set_verbose(
false);
151 std::ofstream
out(binary_file, std::ios::binary);
161 std::ifstream
in(binary_file, std::ios::binary);
177 std::ofstream
out(binary_file, std::ios::binary);
186 std::ifstream
in(binary_file, std::ios::binary);
190 EXPECT_EQ(get_node_values(g), get_node_values(
g2));
199 std::ofstream
out(binary_file, std::ios::binary);
208 std::ifstream
in(binary_file, std::ios::binary);
225 std::ofstream
out(text_file);
227 io.save_in_text_mode(
out);
235 std::ifstream
in(text_file);
237 io2.load_in_text_mode(
in);
251 std::ofstream
out(text_file);
252 io.save_in_text_mode(
out);
260 std::ifstream
in(text_file);
261 io2.load_in_text_mode(
in);
264 EXPECT_EQ(get_node_values(g), get_node_values(
g2));
271 std::ostringstream
out;
272 io.save_in_text_mode(
out);
292 std::ofstream
out(binary_file, std::ios::binary);
301 std::ifstream
in(binary_file, std::ios::binary);
316 std::ofstream
out(text_file);
317 io.save_in_text_mode(
out);
325 std::ifstream
in(text_file);
326 io2.load_in_text_mode(
in);
346 std::ofstream
out(binary_file, std::ios::binary);
355 std::ifstream
in(binary_file, std::ios::binary);
362 typename Graph::Node_Iterator it(
g2);
363 EXPECT_EQ(it.get_curr()->get_info(), 42);
379 n0 =
dg.insert_node(10);
380 n1 =
dg.insert_node(20);
381 n2 =
dg.insert_node(30);
387 binary_file =
"/tmp/aleph_io_digraph_test_" + std::to_string(
rand()) +
".bin";
388 text_file =
"/tmp/aleph_io_digraph_test_" + std::to_string(
rand()) +
".txt";
409 std::ofstream
out(binary_file, std::ios::binary);
418 std::ifstream
in(binary_file, std::ios::binary);
432 std::ofstream
out(text_file);
433 io.save_in_text_mode(
out);
441 std::ifstream
in(text_file);
442 io2.load_in_text_mode(
in);
461 std::ostringstream
ss;
477 std::ostringstream
ss;
491 std::istringstream
ss(
"999");
507 std::istringstream
ss(
"2.718");
521 io.set_load_node(
ln);
529 io.set_store_node(sn);
545 io.set_store_arc(sa);
558 std::ifstream
bad_file(
"/nonexistent_file_12345.bin", std::ios::binary);
569 std::ifstream
bad_file(
"/nonexistent_file_12345.txt");
583 std::ofstream
out(binary_file, std::ios::binary);
591 std::ifstream
in(binary_file, std::ios::binary);
624 std::ofstream
out(text_file);
625 io.save_in_text_mode(
out);
632 std::ifstream
in(text_file);
633 io.load_in_text_mode(
in);
646 ::testing::InitGoogleTest(&
argc,
argv);
Generic directed graph (digraph) wrapper template.
typename BaseGraph::Arc Arc
typename BaseGraph::Node Node
Graph serialization and deserialization class.
virtual Node * insert_node(Node *node) noexcept
Insertion of a node already allocated.
Graph_Node< int > Node
The graph type.
Graph_Arc< double > Arc
The node class type.
Arc * insert_arc(Node *src_node, Node *tgt_node, void *a)
std::vector< int > get_node_values(Graph &graph)
std::vector< double > get_arc_values(Graph &graph)
Graph serialization and deserialization utilities.
TEST_F(IOGraphTest, ConstructFromReference)
Main namespace for Aleph-w library functions.
DynList< T > maps(const C &c, Op op)
Classic map operation.
Default arc loading functor for binary and text modes.
Default node loading functor for binary and text modes.
Default arc storage functor for binary and text modes.
Default node storage functor for binary and text modes.
Arc of graph implemented with double-linked adjacency lists.
Generic graph and digraph implementations.