Unverified Commit 0e708469 authored by Axel Kohlmeyer's avatar Axel Kohlmeyer
Browse files

add unittest for ErrorStats class

parent e0062866
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -15,6 +15,11 @@ else()
  target_link_libraries(style_tests PUBLIC mpi_stubs)
endif()

# unit test for error stats class
add_executable(test_error_stats test_error_stats.cpp)
target_link_libraries(test_error_stats PRIVATE GTest::GTestMain GTest::GTest)
add_test(NAME ErrorStats COMMAND test_error_stats)

# pair style tester
add_executable(pair_style pair_style.cpp)
target_link_libraries(pair_style PRIVATE lammps style_tests)
+41 −0
Original line number Diff line number Diff line

#include "gtest/gtest.h"
#include <sstream>
#include <string>

// include the implementation since ErrorStats is a standalone class
// this way we don't have to link against the style_tests and lammps libs

#include "error_stats.cpp"

TEST(ErrorStats, test)
{
    ErrorStats stats;

    stats.add(0.5);
    stats.add(0.1);
    stats.add(2.0);
    stats.add(0.3);
    stats.add(0);

    ASSERT_DOUBLE_EQ(stats.avg(), 0.58);
    ASSERT_DOUBLE_EQ(stats.dev(), 0.73047929470998685);
    ASSERT_DOUBLE_EQ(stats.max(), 2.0);
    ASSERT_EQ(stats.idx(), 3);

    std::stringstream out;
    out << stats;
    ASSERT_EQ(out.str(), " Average: 5.800e-01 StdDev: 7.305e-01 MaxErr: 2.000e+00 @ item: 3");

    stats.reset();
    ASSERT_DOUBLE_EQ(stats.avg(), 0.0);
    ASSERT_DOUBLE_EQ(stats.dev(), 0.0);
    ASSERT_DOUBLE_EQ(stats.max(), 0.0);
    ASSERT_EQ(stats.idx(), -1);

    stats.add(1.0);
    ASSERT_DOUBLE_EQ(stats.avg(), 1.0);
    ASSERT_DOUBLE_EQ(stats.dev(), 0.0);
    ASSERT_DOUBLE_EQ(stats.max(), 1.0);
    ASSERT_EQ(stats.idx(), 1);
}