diff --git a/Tests/Functional/Core/BatchSimulation.cpp b/Tests/Functional/Core/BatchSimulation.cpp index 9eb7718411c95ef6bb45cce3e9afe7db3f74ad70..48eb3ef95b2dbfc6de8a8cf655ba329d314980a1 100644 --- a/Tests/Functional/Core/BatchSimulation.cpp +++ b/Tests/Functional/Core/BatchSimulation.cpp @@ -6,7 +6,7 @@ #include <iostream> #include <memory> -int TestBatchSimulation() +bool TestBatchSimulation() { SimulationFactory sim_registry; const std::unique_ptr<GISASSimulation> simulation(sim_registry.createItem("MiniGISAS")); @@ -44,5 +44,5 @@ int TestBatchSimulation() int main(int, char**) { - return TestBatchSimulation(); + return TestBatchSimulation() ? 0 : 1; } diff --git a/Tests/Functional/Core/CoreTest.cpp b/Tests/Functional/Core/CoreTest.cpp index b5d8bc51c4db3eb1e1d87988c2446be9eb733f57..68e9c77820904ddc0e2bf7beeb47b81d981ef2d6 100644 --- a/Tests/Functional/Core/CoreTest.cpp +++ b/Tests/Functional/Core/CoreTest.cpp @@ -36,7 +36,6 @@ CoreTest::~CoreTest() bool CoreTest::runTest() { // Load reference if available - OutputData<double>* m_reference; try { m_reference = IntensityDataIOFactory::readOutputData( FileSystem::GetJoinPath(CORE_STD_REF_DIR, getName() + ".int.gz")); diff --git a/Tests/Functional/Core/CoreTest.h b/Tests/Functional/Core/CoreTest.h index 4b8ff05f4f8c1ac33fc40fa10c6fb03f5cd4e62d..eb184d6b1c431a3851ca67a300f8eaae4b709898 100644 --- a/Tests/Functional/Core/CoreTest.h +++ b/Tests/Functional/Core/CoreTest.h @@ -38,6 +38,7 @@ public: private: GISASSimulation* m_simulation; + OutputData<double>* m_reference; }; #endif // CORETEST_H diff --git a/Tests/Functional/Fit/IMinimizerTest.cpp b/Tests/Functional/Fit/IMinimizerTest.cpp index 84146e1ffa65e8a6270eb9fa417d2b563d07492c..ac11db426cd75978b1093dc63163117ef5fa63b6 100644 --- a/Tests/Functional/Fit/IMinimizerTest.cpp +++ b/Tests/Functional/Fit/IMinimizerTest.cpp @@ -46,7 +46,7 @@ IMinimizerTest::IMinimizerTest(const std::string& minimizer_name, } -void IMinimizerTest::runTest() +bool IMinimizerTest::runTest() { std::unique_ptr<ISample> sample(createSample()); for (size_t i = 0; i < m_parameters.size(); ++i) @@ -69,16 +69,17 @@ void IMinimizerTest::runTest() m_parameters[i].m_found_value = valuesAtMinimum[i]; // analyze results + bool success = true; for (size_t i = 0; i < m_parameters.size(); ++i) { double diff = std::abs(m_parameters[i].m_found_value - m_parameters[i].m_real_value) / m_parameters[i].m_real_value; if (diff > m_parameter_tolerance) - m_result = FAILED; - std::cout << boost::format("%|12t| %-10s : %-6.4f (diff %6.4g) \n") % - m_parameters[i].m_name % m_parameters[i].m_found_value % diff; + success = false; + std::cout << boost::format("%|12t| %-10s : %-6.4f (diff %6.4g) %s\n") % + m_parameters[i].m_name % m_parameters[i].m_found_value % diff % + (success ? "OK" : "FAILED"); } - - std::cout << getName() << " | " << getDescription() << " | " << getTestResultString() << "\n"; + return success; } std::unique_ptr<FitSuite> IMinimizerTest::createFitSuite() @@ -89,11 +90,10 @@ std::unique_ptr<FitSuite> IMinimizerTest::createFitSuite() m_minimizer_name, m_minimizer_algorithm); minimizer->getOptions()->setMaxIterations(200); result->setMinimizer(minimizer); - for (size_t i = 0; i < m_parameters.size(); ++i) { + for (size_t i = 0; i < m_parameters.size(); ++i) result->addFitParameter( m_parameters[i].m_name, m_parameters[i].m_start_value, AttLimits::lowerLimited(0.01), m_parameters[i].m_start_value / 100.); - } return result; } diff --git a/Tests/Functional/Fit/IMinimizerTest.h b/Tests/Functional/Fit/IMinimizerTest.h index 49377d2bdb40b1f99c89fd9ec9e3f605f8f2bb4e..853d498af7f1a7c9bdfa6412cb6d72fb189eaae4 100644 --- a/Tests/Functional/Fit/IMinimizerTest.h +++ b/Tests/Functional/Fit/IMinimizerTest.h @@ -35,7 +35,7 @@ public: const std::string &minimizer_algorithm = std::string()); virtual ~IMinimizerTest(){} - void runTest(); + bool runTest() final; class TestParameter { @@ -53,7 +53,7 @@ protected: virtual std::unique_ptr<FitSuite> createFitSuite(); virtual std::unique_ptr<ISample> createSample(); virtual std::unique_ptr<GISASSimulation> createSimulation(); - virtual std::unique_ptr<OutputData<double> > createOutputData(const GISASSimulation *simulation); + virtual std::unique_ptr<OutputData<double>> createOutputData(const GISASSimulation* simulation); std::vector<TestParameter> m_parameters; std::string m_minimizer_name; diff --git a/Tests/Functional/PyCore/persistence/PyPersistenceTest.cpp b/Tests/Functional/PyCore/persistence/PyPersistenceTest.cpp index b29b51e290b452e805213545cb09247f79aedadf..49690b5ed452a637496c14005666e9dea8376051 100644 --- a/Tests/Functional/PyCore/persistence/PyPersistenceTest.cpp +++ b/Tests/Functional/PyCore/persistence/PyPersistenceTest.cpp @@ -34,7 +34,7 @@ PyPersistenceTest::PyPersistenceTest( {} //! Runs a Python script, and returns true if the output of the script agrees with reference data. -void PyPersistenceTest::runTest() +bool PyPersistenceTest::runTest() { std::string dat_stem = FileSystem::GetJoinPath(PYPERSIST_OUT_DIR, getName()); std::string ref_stem = FileSystem::GetJoinPath(PYPERSIST_REF_DIR, getName()); @@ -122,7 +122,7 @@ bool PyPersistenceTest::compareIntensityPair( { const OutputData<double>* dat = IntensityDataIOFactory::readOutputData( dat_fpath ); const OutputData<double>* ref = IntensityDataIOFactory::readOutputData( ref_fpath ); - return compareIntensityMaps(*dat, *ref)==SUCCESS; + return compareIntensityMaps(*dat, *ref); } //! Returns true if YAML files from test output and reference agree. diff --git a/Tests/Functional/TestMachinery/IStandardTest.cpp b/Tests/Functional/TestMachinery/IStandardTest.cpp index 22d1e9cfd4845596e620e711d01acdb2348799d8..392b676444f8b967eb5b065b2053be9c3453b086 100644 --- a/Tests/Functional/TestMachinery/IStandardTest.cpp +++ b/Tests/Functional/TestMachinery/IStandardTest.cpp @@ -73,12 +73,13 @@ bool IStandardTest::execute_subtests() for (size_t i = 0; i < n_subtests; ++i) { setName( m_info->m_test_name + "_" + subtest_names[i] ); m_subtest_item = subtest_registry->getItem(subtest_names[i]); - IFunctionalTest* subtest( getTest() ); std::cout << "IStandardTest::execute() -> " << getName() << " " << i+1 << "/" << n_subtests << " (" << subtest_names[i] << ")\n"; + if(!subtest->runTest()) { ++number_of_failed_tests; - delete subtest; + delete subtest; + } } delete subtest_registry;