Unverified Commit 6d339c8b authored by Richard Berger's avatar Richard Berger
Browse files

Add unit tests for PotentialFileReader

parent caa43c7e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ class PairComb : public Pair {
  virtual double yasu_char(double *, int &);
  double enegtot;

 protected:
  struct Param {
    double lam11,lam12,lam21,lam22;
    double c,d,h;
@@ -60,6 +59,7 @@ class PairComb : public Pair {
    static const int NPARAMS_PER_LINE = 49;
  };

 protected:
  double cutmax;                // max cutoff for all elements
  int nelements;                // # of unique elements
  char **elements;              // names of unique elements
+3 −1
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ class PairComb3 : public Pair {
  double enegtot;

 // general potential parameters
 protected:
  struct Param {
    int ielement,jelement,kelement,powermint;
    int ielementgp,jelementgp,kelementgp;       //element group
@@ -56,8 +55,11 @@ class PairComb3 : public Pair {
    double veps, vsig, pcna, pcnb, pcnc, pcnd, polz, curl, pcross;
    double paaa, pbbb;
    double curlcut1, curlcut2, curl0;
    static const int NPARAMS_PER_LINE = 74;
  };

 protected:

  // general setups
  int nelements;                        // # of unique elements
  int ***elem2param;                    // mapping from element triplets to parameters
+2 −0
Original line number Diff line number Diff line
@@ -3,3 +3,5 @@ include(GTest)
add_subdirectory(force-styles)

add_subdirectory(utils)

add_subdirectory(formats)
+4 −0
Original line number Diff line number Diff line
add_executable(test_potential_file_reader test_potential_file_reader.cpp)
target_link_libraries(test_potential_file_reader PRIVATE lammps GTest::GMock GTest::GTest)
add_test(NAME PotentialFileReader COMMAND test_potential_file_reader WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
set_tests_properties(PotentialFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
+57 −0
Original line number Diff line number Diff line
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "potential_file_reader.h"
#include "lammps.h"
#include "utils.h"
#include "MANYBODY/pair_sw.h"
#include "MANYBODY/pair_comb.h"
#include "MANYBODY/pair_comb3.h"

#include <mpi.h>

using namespace LAMMPS_NS;

const int LAMMPS_NS::PairSW::Param::NPARAMS_PER_LINE;
const int LAMMPS_NS::PairComb::Param::NPARAMS_PER_LINE;
const int LAMMPS_NS::PairComb3::Param::NPARAMS_PER_LINE;

class PotenialFileReaderTest : public ::testing::Test {
protected:
    LAMMPS * lmp;

    void SetUp() override {
        const char *args[] = {"PotentialFileReaderTest", "-log", "none", "-echo", "screen", "-nocite" };
        char **argv = (char **)args;
        int argc = sizeof(args)/sizeof(char *);
        lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
    }

    void TearDown() override {
        delete lmp;
    }
};

TEST_F(PotenialFileReaderTest, Si) {
    PotentialFileReader reader(lmp, "Si.sw", "Stillinger-Weber");
    auto line = reader.next_line(PairSW::Param::NPARAMS_PER_LINE);
    ASSERT_EQ(utils::count_words(line), PairSW::Param::NPARAMS_PER_LINE);
}

TEST_F(PotenialFileReaderTest, Comb) {
    PotentialFileReader reader(lmp, "ffield.comb", "COMB");
    auto line = reader.next_line(PairComb::Param::NPARAMS_PER_LINE);
    ASSERT_EQ(utils::count_words(line), PairComb::Param::NPARAMS_PER_LINE);
}

TEST_F(PotenialFileReaderTest, Comb3) {
    PotentialFileReader reader(lmp, "ffield.comb3", "COMB3");
    auto line = reader.next_line(PairComb3::Param::NPARAMS_PER_LINE);
    ASSERT_EQ(utils::count_words(line), PairComb3::Param::NPARAMS_PER_LINE);
}

int main(int argc, char **argv)
{
    MPI_Init(&argc, &argv);
    ::testing::InitGoogleMock(&argc, argv);
    return RUN_ALL_TESTS();
}