From 0cde4460a894fec0347579fd838f17f0102e94a4 Mon Sep 17 00:00:00 2001 From: Krad Date: Sun, 23 Apr 2023 09:40:22 +0800 Subject: [PATCH] Add Function3D_Test.cpp --- CMakeLists.txt | 5 ++- test/Function2D_Test.cpp | 73 +------------------------------ test/Function3D_Test.cpp | 94 ++++++++++++++++++++++++++++++++++++++++ test/TestUtility.h | 2 +- 4 files changed, 99 insertions(+), 75 deletions(-) create mode 100644 test/Function3D_Test.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f5f505..353f335 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -29,10 +29,11 @@ INCLUDE_DIRECTORIES(${GTEST_INCLUDE_DIRS}) include_directories(./src ./src/util) file(GLOB_RECURSE test_cpp ./test/*.cpp) -file(GLOB_RECURSE test_h ./test/*.h) + enable_testing() -add_executable(Aurora_Test ${cpp_files} ${test_cpp} ${test_h}) +add_executable(Aurora_Test ${cpp_files} ${test_cpp} ) +target_include_directories(Aurora_Test PUBLIC ./test/) target_compile_options(Aurora_Test PUBLIC $) target_include_directories(Aurora_Test PUBLIC $) target_link_libraries(Aurora_Test PUBLIC $) diff --git a/test/Function2D_Test.cpp b/test/Function2D_Test.cpp index 0bbbef4..3e003ee 100644 --- a/test/Function2D_Test.cpp +++ b/test/Function2D_Test.cpp @@ -1,6 +1,5 @@ #include #include - #include "TestUtility.h" #include "Matrix.h" @@ -12,7 +11,7 @@ class Function2D_Test: public ::testing::Test{ protected: - static void SetUpFunctionTester(){ + static void SetUpFunction2DTester(){ } static void TearDownTestCase(){ @@ -128,73 +127,3 @@ TEST_F(Function2D_Test, interp2) { EXPECT_DOUBLE_AE(result.getData()[2],18.6089); } -TEST_F(Function2D_Test, interp3) { - double* xD= new double[4]{1,2,3,4}; - Aurora::Matrix x(std::shared_ptr(xD,std::default_delete()),std::vector{4}); - double* yD= new double[5]{1,4,9,16,25}; - Aurora::Matrix y(std::shared_ptr(yD,std::default_delete()),std::vector{5}); - double* zD= new double[3]{22,33,56}; - Aurora::Matrix z(std::shared_ptr(zD,std::default_delete()),std::vector{3}); - double* x1D= new double[3]{1.22,2.69,3.84}; - Aurora::Matrix x1(std::shared_ptr(x1D,std::default_delete()),std::vector{3}); - double* y1D= new double[3]{4.5823,10.552,18}; - Aurora::Matrix y1(std::shared_ptr(y1D,std::default_delete()),std::vector{3}); - double* z1D= new double[3]{22.256,40.22,48}; - Aurora::Matrix z1(std::shared_ptr(z1D,std::default_delete()),std::vector{3}); - double* vD= new double[60]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, - 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, - 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; - Aurora::Matrix v(std::shared_ptr(vD,std::default_delete()),std::vector{5,4,3}); - - Aurora::Matrix result = interp3(x,y,z,v,x1,y1,z1,Aurora::InterpnMethod::Spline); - EXPECT_DOUBLE_AE(result.getData()[0],303.5663); - EXPECT_DOUBLE_AE(result.getData()[1],243.6711); - EXPECT_DOUBLE_AE(result.getData()[2],-47.32); - - result = interp3(x,y,z,v,x1,y1,z1,Aurora::InterpnMethod::Linear); - EXPECT_DOUBLE_AE(result.getData()[0],302.6298); - EXPECT_DOUBLE_AE(result.getData()[1],261.1313); - EXPECT_DOUBLE_AE(result.getData()[2],18.6089); -} - -TEST_F(Function2D_Test, interpn) { - double* xD= new double[4]{1,2,3,4}; - Aurora::Matrix x(std::shared_ptr(xD,std::default_delete()),std::vector{4}); - double* yD= new double[5]{1,4,9,16,25}; - Aurora::Matrix y(std::shared_ptr(yD,std::default_delete()),std::vector{5}); - double* zD= new double[3]{22,33,56}; - Aurora::Matrix z(std::shared_ptr(zD,std::default_delete()),std::vector{3}); - double* x1D= new double[3]{1.22,2.69,3.84}; - Aurora::Matrix x1(std::shared_ptr(x1D,std::default_delete()),std::vector{3}); - double* y1D= new double[3]{2.5823,3.552,3.888}; - Aurora::Matrix y1(std::shared_ptr(y1D,std::default_delete()),std::vector{3}); - double* z1D= new double[3]{22.256,40.22,48}; - Aurora::Matrix z1(std::shared_ptr(z1D,std::default_delete()),std::vector{3}); - double* v2D= new double[20]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; - Aurora::Matrix v2(std::shared_ptr(v2D,std::default_delete()),std::vector{5,4}); - double* v3D= new double[60]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, - 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, - 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; - Aurora::Matrix v3(std::shared_ptr(v3D,std::default_delete()),std::vector{5,4,3}); - - Aurora::Matrix result = interpn(y,x,v2,x1,y1,Aurora::InterpnMethod::Spline); - EXPECT_DOUBLE_AE(result.getData()[0],399.2742); - EXPECT_DOUBLE_AE(result.getData()[1],387.7651); - EXPECT_DOUBLE_AE(result.getData()[2],135.6138); - - result = interpn(y,x,v2,x1,y1,Aurora::InterpnMethod::Linear); - EXPECT_DOUBLE_AE(result.getData()[0],352.1727); - EXPECT_DOUBLE_AE(result.getData()[1],269.8596); - EXPECT_DOUBLE_AE(result.getData()[2],94.7908); - - result = interpn(y,x,z,v3,x1,y1,z1,Aurora::InterpnMethod::Spline); - EXPECT_DOUBLE_AE(result.getData()[0],399.2742); - EXPECT_DOUBLE_AE(result.getData()[1],387.7651); - EXPECT_DOUBLE_AE(result.getData()[2],135.6138); - - result = interpn(y,x,z,v3,x1,y1,z1,Aurora::InterpnMethod::Linear); - EXPECT_DOUBLE_AE(result.getData()[0],352.1727); - EXPECT_DOUBLE_AE(result.getData()[1],269.8596); - EXPECT_DOUBLE_AE(result.getData()[2],94.7908); -} - diff --git a/test/Function3D_Test.cpp b/test/Function3D_Test.cpp new file mode 100644 index 0000000..d90850a --- /dev/null +++ b/test/Function3D_Test.cpp @@ -0,0 +1,94 @@ +#include +#include + +#include "TestUtility.h" + +#include "Matrix.h" +#include "Function.h" +#include "Function1D.h" +#include "Function2D.h" +#include "Function3D.h" + + +class Function3D_Test: public ::testing::Test{ +protected: + static void SetUpFunction3DTester(){ + + } + static void TearDownTestCase(){ + } + void SetUp(){ + } + void TearDown(){ + } +}; + +TEST_F(Function3D_Test, interp3) { + double* xD= new double[4]{1,2,3,4}; + Aurora::Matrix x(std::shared_ptr(xD,std::default_delete()),std::vector{4}); + double* yD= new double[5]{1,4,9,16,25}; + Aurora::Matrix y(std::shared_ptr(yD,std::default_delete()),std::vector{5}); + double* zD= new double[3]{22,33,56}; + Aurora::Matrix z(std::shared_ptr(zD,std::default_delete()),std::vector{3}); + double* x1D= new double[3]{1.22,2.69,3.84}; + Aurora::Matrix x1(std::shared_ptr(x1D,std::default_delete()),std::vector{3}); + double* y1D= new double[3]{4.5823,10.552,18}; + Aurora::Matrix y1(std::shared_ptr(y1D,std::default_delete()),std::vector{3}); + double* z1D= new double[3]{22.256,40.22,48}; + Aurora::Matrix z1(std::shared_ptr(z1D,std::default_delete()),std::vector{3}); + double* vD= new double[60]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, + 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, + 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; + Aurora::Matrix v(std::shared_ptr(vD,std::default_delete()),std::vector{5,4,3}); + + Aurora::Matrix result = interp3(x,y,z,v,x1,y1,z1,Aurora::InterpnMethod::Spline); + EXPECT_DOUBLE_AE(result.getData()[0],303.5663); + EXPECT_DOUBLE_AE(result.getData()[1],243.6711); + EXPECT_DOUBLE_AE(result.getData()[2],-47.32); + + result = interp3(x,y,z,v,x1,y1,z1,Aurora::InterpnMethod::Linear); + EXPECT_DOUBLE_AE(result.getData()[0],302.6298); + EXPECT_DOUBLE_AE(result.getData()[1],261.1313); + EXPECT_DOUBLE_AE(result.getData()[2],18.6089); +} + +TEST_F(Function3D_Test, interpn) { + double* xD= new double[4]{1,2,3,4}; + Aurora::Matrix x(std::shared_ptr(xD,std::default_delete()),std::vector{4}); + double* yD= new double[5]{1,4,9,16,25}; + Aurora::Matrix y(std::shared_ptr(yD,std::default_delete()),std::vector{5}); + double* zD= new double[3]{22,33,56}; + Aurora::Matrix z(std::shared_ptr(zD,std::default_delete()),std::vector{3}); + double* x1D= new double[3]{1.22,2.69,3.84}; + Aurora::Matrix x1(std::shared_ptr(x1D,std::default_delete()),std::vector{3}); + double* y1D= new double[3]{2.5823,3.552,3.888}; + Aurora::Matrix y1(std::shared_ptr(y1D,std::default_delete()),std::vector{3}); + double* z1D= new double[3]{22.256,40.22,48}; + Aurora::Matrix z1(std::shared_ptr(z1D,std::default_delete()),std::vector{3}); + double* v2D= new double[20]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; + Aurora::Matrix v2(std::shared_ptr(v2D,std::default_delete()),std::vector{5,4}); + double* v3D= new double[60]{158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, + 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25, + 158,256,332,428,22,56,487,54,26,333,541,554,445,48,22,54,36,98,11,25}; + Aurora::Matrix v3(std::shared_ptr(v3D,std::default_delete()),std::vector{5,4,3}); + + Aurora::Matrix result = interpn(y,x,v2,x1,y1,Aurora::InterpnMethod::Spline); + EXPECT_DOUBLE_AE(result.getData()[0],399.2742); + EXPECT_DOUBLE_AE(result.getData()[1],387.7651); + EXPECT_DOUBLE_AE(result.getData()[2],135.6138); + + result = interpn(y,x,v2,x1,y1,Aurora::InterpnMethod::Linear); + EXPECT_DOUBLE_AE(result.getData()[0],352.1727); + EXPECT_DOUBLE_AE(result.getData()[1],269.8596); + EXPECT_DOUBLE_AE(result.getData()[2],94.7908); + + result = interpn(y,x,z,v3,x1,y1,z1,Aurora::InterpnMethod::Spline); + EXPECT_DOUBLE_AE(result.getData()[0],399.2742); + EXPECT_DOUBLE_AE(result.getData()[1],387.7651); + EXPECT_DOUBLE_AE(result.getData()[2],135.6138); + + result = interpn(y,x,z,v3,x1,y1,z1,Aurora::InterpnMethod::Linear); + EXPECT_DOUBLE_AE(result.getData()[0],352.1727); + EXPECT_DOUBLE_AE(result.getData()[1],269.8596); + EXPECT_DOUBLE_AE(result.getData()[2],94.7908); +} \ No newline at end of file diff --git a/test/TestUtility.h b/test/TestUtility.h index da47ac1..89a5f20 100644 --- a/test/TestUtility.h +++ b/test/TestUtility.h @@ -8,7 +8,7 @@ printf("%s:\r\n", #Matrix);\ Matrix.printf();\ printf("%s end================================\r\n", #Matrix); -double fourDecimalRound(double src){ +inline double fourDecimalRound(double src){ return round(src*10000.0)/10000.0; }