Greetings,
I have the following class to test a class named Scoring (implements a graph using Boost Graph Library). If the line marked with //!!! below is uncommented the scores yielded by _s.getNetwork().getVertexScore(*it) are garbage values (like 2.57117366e+29 ). If it is commented test fails but the values are initial (sensible) values. When I run the same function apart from the tests, the function behaves correctly and gives correct calculated scores.
There should be a context problem but I could not figure it out. I would be grateful for any suggestions and ideas.
class TestScoring
{
Scoring _s;
public:
TestScoring() {
_s = Scoring("test_vertices_small.txt", "test_edges_small.txt");
}
~TestScoring() {
}
void test_calculatedScores()
{
float vertex_scores[] = { 0.75, 4.0/3, 1.5, 1.0/3, 0.005 };
std::size_t n_vertex = sizeof(vertex_scores)/sizeof(float);
//!!! this call changes the behavior of the test
//!!! _s.run(1,2);
VertexIterator it, itEnd;
for(boost::tie(it, itEnd) = _s.getNetwork().getVertexIterator(); it != itEnd; it++)
{
BOOST_CHECK_CLOSE(_s.getNetwork().getVertexScore(*it), vertex_scores[_s.getNetwork().getVertexIndex(*it)], 0.00001f);
}
}
};
// TestScoring is called from the following suite
class TestSuiteScoring: public test_suite
{
public:
TestSuiteScoring(): test_suite("test_suite_scoring")
{
shared_ptr<TestScoring> instance(new TestScoring());
test_case *calculatedScores = BOOST_CLASS_TEST_CASE( &TestScoring::test_calculatedScores, instance);
add(calculatedScores);
}
~TestScoring() {
//instance.release();
}
};
Emre