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