From bd6b19470b43e4c04e19ab5687356f184d36042e Mon Sep 17 00:00:00 2001 From: Martin Beseda <martin.beseda@vsb.cz> Date: Sun, 3 Feb 2019 01:53:25 +0100 Subject: [PATCH] ENH: Mock definition of ErrorFunction class was moved to the separate header ErrorFunctionMock.h --- src/ErrorFunction/ErrorFunctionsMock.h | 38 +++++++++++++++++++++++ src/tests/ErrorFunctions_test.cpp | 27 +++-------------- src/tests/ParticleSwarm_test.cpp | 38 ++--------------------- src/tests/Particle_test.cpp | 42 +++----------------------- 4 files changed, 49 insertions(+), 96 deletions(-) create mode 100644 src/ErrorFunction/ErrorFunctionsMock.h diff --git a/src/ErrorFunction/ErrorFunctionsMock.h b/src/ErrorFunction/ErrorFunctionsMock.h new file mode 100644 index 00000000..fad988c7 --- /dev/null +++ b/src/ErrorFunction/ErrorFunctionsMock.h @@ -0,0 +1,38 @@ +// +// Created by martin on 3.2.19. +// + +#ifndef LIB4NEURO_ERRORFUNCTIONSMOCK_H +#define LIB4NEURO_ERRORFUNCTIONSMOCK_H + +#ifdef _WINDOWS +#include <boost/test/included/unit_test.hpp> +#endif + +#include "../ErrorFunction/ErrorFunctions.h" +#include "../DataSet/DataSet.h" + +#include <turtle/mock.hpp> + +using namespace lib4neuro; + + +MOCK_BASE_CLASS(mock_ErrorFunction, lib4neuro::ErrorFunction) +{ + MOCK_METHOD(eval, 3) + MOCK_METHOD(get_dimension, 0) + MOCK_METHOD(calculate_error_gradient, 4) + MOCK_METHOD(get_parameters, 0) + MOCK_METHOD(get_dataset, 0) + MOCK_METHOD(get_network_instance, 0) + MOCK_METHOD(divide_data_train_test, 1) + MOCK_METHOD(return_full_data_set_for_training, 0) + MOCK_METHOD(eval_on_test_data, 2, double(std::vector<double>*, bool), id1) + MOCK_METHOD(eval_on_test_data, 3, double(std::string, std::vector<double>*, bool), id2) + MOCK_METHOD(eval_on_test_data, 3, double(std::ofstream*, std::vector<double>*, bool), id3) + MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::vector<double>*, bool), id4) + MOCK_METHOD(eval_on_data_set, 4, double(DataSet*, std::string, std::vector<double>*, bool), id5) + MOCK_METHOD(eval_on_data_set, 5, double(DataSet*, std::ofstream*, std::vector<double>*, bool, bool), id6) +}; + +#endif //LIB4NEURO_ERRORFUNCTIONSMOCK_H diff --git a/src/tests/ErrorFunctions_test.cpp b/src/tests/ErrorFunctions_test.cpp index ef3210b7..02d5b4bb 100644 --- a/src/tests/ErrorFunctions_test.cpp +++ b/src/tests/ErrorFunctions_test.cpp @@ -8,8 +8,7 @@ #include "boost_unit_tests_preamble.h" -#include "../ErrorFunction/ErrorFunctions.h" -#include <turtle/mock.hpp> +#include "../ErrorFunction/ErrorFunctionsMock.h" using namespace lib4neuro; @@ -48,24 +47,6 @@ MOCK_BASE_CLASS(mock_network, lib4neuro::NeuralNetwork) MOCK_METHOD(write_stats, 1, void(std::ofstream*), id9) }; -MOCK_BASE_CLASS(mock_error_fun, ErrorFunction) -{ - MOCK_METHOD(eval, 3) - MOCK_METHOD(get_dimension, 0) - MOCK_METHOD(calculate_error_gradient, 4) - MOCK_METHOD(get_parameters, 0) - MOCK_METHOD(get_dataset, 0) - MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1) - MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 2, double(std::vector<double>*, bool), id1) - MOCK_METHOD(eval_on_test_data, 3, double(std::string, std::vector<double>*, bool), id2) - MOCK_METHOD(eval_on_test_data, 3, double(std::ofstream*, std::vector<double>*, bool), id3) - MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::vector<double>*, bool), id4) - MOCK_METHOD(eval_on_data_set, 4, double(DataSet*, std::string, std::vector<double>*, bool), id5) - MOCK_METHOD(eval_on_data_set, 5, double(DataSet*, std::ofstream*, std::vector<double>*, bool, bool), id6) -}; - MOCK_BASE_CLASS(mock_dataSet, lib4neuro::DataSet) { mock_dataSet(std::vector<std::pair<std::vector<double>, std::vector<double>>> *i) @@ -157,14 +138,14 @@ BOOST_AUTO_TEST_SUITE(ErrorFunctions_test); BOOST_AUTO_TEST_CASE(ErrorFunction_MSE_SUM_Add_Error_Function_Test) { - mock_error_fun f; + mock_ErrorFunction f; MOCK_EXPECT(f.get_dimension).returns(1); ErrorSum mse_sum; BOOST_CHECK_NO_THROW(mse_sum.add_error_function(&f, 1)); } BOOST_AUTO_TEST_CASE(ErrorFunction_MSE_SUM_Eval_Test) { - mock_error_fun f; + mock_ErrorFunction f; MOCK_EXPECT(f.get_dimension).returns(1); MOCK_EXPECT(f.eval).returns(1.75); ErrorSum mse_sum; @@ -179,7 +160,7 @@ BOOST_AUTO_TEST_SUITE(ErrorFunctions_test); BOOST_AUTO_TEST_CASE(ErrorFunction_MSE_SUM_Get_Dimension_test) { ErrorSum mse_sum; BOOST_CHECK_EQUAL(0, mse_sum.get_dimension()); - mock_error_fun f; + mock_ErrorFunction f; MOCK_EXPECT(f.get_dimension).returns(2); MOCK_EXPECT(f.eval).returns(1.75); diff --git a/src/tests/ParticleSwarm_test.cpp b/src/tests/ParticleSwarm_test.cpp index 134d2d6d..8d0aaf1b 100644 --- a/src/tests/ParticleSwarm_test.cpp +++ b/src/tests/ParticleSwarm_test.cpp @@ -7,46 +7,12 @@ #define BOOST_TEST_MODULE ParticleSwarm_test -#ifdef _WINDOWS -#include <boost/test/included/unit_test.hpp> -//#include <turtle/mock.hpp> -#endif - -#ifndef BOOST_TEST_DYN_LINK -#define BOOST_TEST_DYN_LINK -#endif - -#ifndef BOOST_TEST_NO_MAIN -#define BOOST_TEST_NO_MAIN -#endif - -#include <turtle/mock.hpp> -#include <boost/test/unit_test.hpp> -#include <boost/test/output_test_stream.hpp> #include "boost_unit_tests_preamble.h" -#include "../ErrorFunction/ErrorFunctions.h" +#include "../ErrorFunction/ErrorFunctionsMock.h" #include "../LearningMethods/ParticleSwarm.h" using namespace lib4neuro; -MOCK_BASE_CLASS(mock_Error, ErrorFunction) -{ - MOCK_METHOD(eval, 3) - MOCK_METHOD(get_dimension, 0) - MOCK_METHOD(calculate_error_gradient, 4) - MOCK_METHOD(get_parameters, 0) - MOCK_METHOD(get_dataset, 0) - MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1) - MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 2, double(std::vector<double>*, bool), id1) - MOCK_METHOD(eval_on_test_data, 3, double(std::string, std::vector<double>*, bool), id2) - MOCK_METHOD(eval_on_test_data, 3, double(std::ofstream*, std::vector<double>*, bool), id3) - MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::vector<double>*, bool), id4) - MOCK_METHOD(eval_on_data_set, 4, double(DataSet*, std::string, std::vector<double>*, bool), id5) - MOCK_METHOD(eval_on_data_set, 5, double(DataSet*, std::ofstream*, std::vector<double>*, bool, bool), id6) -}; - /** * Boost testing suite for testing ParticleSwarm.h */ @@ -79,7 +45,7 @@ BOOST_AUTO_TEST_SUITE(ParticleSwarm_test) domain_bound.push_back(5); - mock_Error error; + mock_ErrorFunction error; MOCK_EXPECT(error.get_dimension).returns(5); MOCK_EXPECT(error.eval).returns(0.8); diff --git a/src/tests/Particle_test.cpp b/src/tests/Particle_test.cpp index f7c85a54..211397c5 100644 --- a/src/tests/Particle_test.cpp +++ b/src/tests/Particle_test.cpp @@ -7,44 +7,12 @@ #define BOOST_TEST_MODULE Particle_test -#ifdef _WINDOWS -#include <boost/test/included/unit_test.hpp> -//#include <turtle/mock.hpp> -#endif - -#ifndef BOOST_TEST_DYN_LINK -#define BOOST_TEST_DYN_LINK -#endif - -#ifndef BOOST_TEST_NO_MAIN -#define BOOST_TEST_NO_MAIN -#endif - -#include <turtle/mock.hpp> -#include <boost/test/unit_test.hpp> -#include <boost/test/output_test_stream.hpp> - +#include "boost_unit_tests_preamble.h" +#include "../ErrorFunction/ErrorFunctionsMock.h" #include "../LearningMethods/ParticleSwarm.h" using namespace lib4neuro; -MOCK_BASE_CLASS(mock_Error, ErrorFunction) -{ - MOCK_METHOD(eval, 3) - MOCK_METHOD(get_dimension, 0) - MOCK_METHOD(calculate_error_gradient, 4) - MOCK_METHOD(get_parameters, 0) - MOCK_METHOD(get_dataset, 0) - MOCK_METHOD(get_network_instance, 0) - MOCK_METHOD(divide_data_train_test, 1) - MOCK_METHOD(return_full_data_set_for_training, 0) - MOCK_METHOD(eval_on_test_data, 2, double(std::vector<double>*, bool), id1) - MOCK_METHOD(eval_on_test_data, 3, double(std::string, std::vector<double>*, bool), id2) - MOCK_METHOD(eval_on_test_data, 3, double(std::ofstream*, std::vector<double>*, bool), id3) - MOCK_METHOD(eval_on_data_set, 3, double(DataSet*, std::vector<double>*, bool), id4) - MOCK_METHOD(eval_on_data_set, 4, double(DataSet*, std::string, std::vector<double>*, bool), id5) - MOCK_METHOD(eval_on_data_set, 5, double(DataSet*, std::ofstream*, std::vector<double>*, bool, bool), id6) -}; /** * Boost testing suite for testing ParticleSwarm.h * TODO @@ -53,7 +21,7 @@ BOOST_AUTO_TEST_SUITE(Particle_test) BOOST_AUTO_TEST_CASE(Particle_construction_test) { std::vector<double> domain_bound{ 1, 2, 3, 4, 5 }; - mock_Error error; + mock_ErrorFunction error; MOCK_EXPECT(error.get_dimension).once().returns(5); MOCK_EXPECT(error.eval).once().returns(0.8); BOOST_CHECK_NO_THROW(Particle(&error, &domain_bound)); @@ -61,7 +29,7 @@ BOOST_AUTO_TEST_CASE(Particle_construction_test) { BOOST_AUTO_TEST_CASE(Particle_get_coordinate_test) { std::vector<double> domain_bound{ 1, 2, 3, 4, 5 }; - mock_Error error; + mock_ErrorFunction error; MOCK_EXPECT(error.get_dimension).returns(5); MOCK_EXPECT(error.eval).returns(0.8); @@ -74,7 +42,7 @@ BOOST_AUTO_TEST_CASE(Particle_get_coordinate_test) { BOOST_AUTO_TEST_CASE(Particle_get_optimal_value_test) { std::vector<double> domain_bound{ 1, 2, 3, 4, 5 }; - mock_Error error; + mock_ErrorFunction error; MOCK_EXPECT(error.get_dimension).returns(5); MOCK_EXPECT(error.eval).returns(0.8); -- GitLab