-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathgraph_verifier_test.cpp
More file actions
43 lines (39 loc) · 1.62 KB
/
graph_verifier_test.cpp
File metadata and controls
43 lines (39 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <gtest/gtest.h>
#include "../../include/test/file_graph_verifier.h"
const std::string fname = __FILE__;
size_t pos = fname.find_last_of("\\/");
const std::string curr_dir = (std::string::npos == pos) ? "" : fname.substr(0,pos);
TEST(DeterministicToolsTestSuite, TestKruskal) {
ASSERT_EQ(78,FileGraphVerifier::kruskal(curr_dir+"/../res/multiples_graph_1024.txt").size());
}
TEST(DeterministicToolsTestSuite, TestEdgeVerifier) {
FileGraphVerifier verifier(1024, curr_dir+"/../res/multiples_graph_1024.txt");
// add edges of the form {i,2i}
for (node_id_t i = 2; i < 512; ++i) {
verifier.verify_edge({i, i*2});
}
// throw on nonexistent edge
ASSERT_THROW(verifier.verify_edge({69,420}), BadEdgeException);
ASSERT_THROW(verifier.verify_edge({420,69}), BadEdgeException);
// throw on already-included edge
ASSERT_THROW(verifier.verify_edge({120,240}), BadEdgeException);
ASSERT_THROW(verifier.verify_edge({240,120}), BadEdgeException);
// throw on edge within the same set
ASSERT_THROW(verifier.verify_edge({250,1000}), BadEdgeException);
ASSERT_THROW(verifier.verify_edge({1000,250}), BadEdgeException);
}
TEST(DeterministicToolsTestSuite, TestCCVerifier) {
FileGraphVerifier verifier (1024, curr_dir+"/../res/multiples_graph_1024.txt");
// {0}, {1}, and primes \in [521,1021] are CCs
verifier.verify_cc(0);
verifier.verify_cc(1);
verifier.verify_cc(911);
// add edges of the form {i,2i}
for (node_id_t i = 2; i < 512; ++i) {
verifier.verify_edge({i, i*2});
}
// nothing else is currently a CC
for (int i = 2; i < 512; ++i) {
ASSERT_THROW(verifier.verify_cc(i), NotCCException);
}
}