From f3f69da328a7a75597894447ffbce59a3c102171 Mon Sep 17 00:00:00 2001 From: Axel Kohlmeyer Date: Fri, 30 Aug 2024 10:29:41 -0400 Subject: [PATCH] expand tests on properties including custom properties --- .../c-library/test_library_properties.cpp | 84 +++++++++++++++++-- 1 file changed, 75 insertions(+), 9 deletions(-) diff --git a/unittest/c-library/test_library_properties.cpp b/unittest/c-library/test_library_properties.cpp index 3d0eeef5ea..1d27075ada 100644 --- a/unittest/c-library/test_library_properties.cpp +++ b/unittest/c-library/test_library_properties.cpp @@ -49,6 +49,7 @@ protected: if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); } + void TearDown() override { ::testing::internal::CaptureStdout(); @@ -470,9 +471,9 @@ TEST_F(LibraryProperties, global) EXPECT_EQ(lammps_extract_global_datatype(lmp, "xlattice"), LAMMPS_DOUBLE); EXPECT_EQ(lammps_extract_global_datatype(lmp, "ylattice"), LAMMPS_DOUBLE); EXPECT_EQ(lammps_extract_global_datatype(lmp, "zlattice"), LAMMPS_DOUBLE); - auto *xlattice = (double *)lammps_extract_global(lmp, "xlattice"); - auto *ylattice = (double *)lammps_extract_global(lmp, "ylattice"); - auto *zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + auto *xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + auto *ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + auto *zlattice = (double *)lammps_extract_global(lmp, "zlattice"); EXPECT_NE(xlattice, nullptr); EXPECT_NE(ylattice, nullptr); EXPECT_NE(zlattice, nullptr); @@ -484,9 +485,9 @@ TEST_F(LibraryProperties, global) lammps_command(lmp, "units real"); lammps_command(lmp, "lattice fcc 2.0"); if (!verbose) ::testing::internal::GetCapturedStdout(); - xlattice = (double *)lammps_extract_global(lmp, "xlattice"); - ylattice = (double *)lammps_extract_global(lmp, "ylattice"); - zlattice = (double *)lammps_extract_global(lmp, "zlattice"); + xlattice = (double *)lammps_extract_global(lmp, "xlattice"); + ylattice = (double *)lammps_extract_global(lmp, "ylattice"); + zlattice = (double *)lammps_extract_global(lmp, "zlattice"); EXPECT_NE(xlattice, nullptr); EXPECT_NE(ylattice, nullptr); EXPECT_NE(zlattice, nullptr); @@ -695,10 +696,8 @@ class AtomProperties : public ::testing::Test { protected: void *lmp; - AtomProperties() = default; - ; + AtomProperties() = default; ~AtomProperties() override = default; - ; void SetUp() override { @@ -713,11 +712,26 @@ protected: if (verbose) std::cout << output; EXPECT_THAT(output, StartsWith("LAMMPS (")); ::testing::internal::CaptureStdout(); + lammps_command(lmp, "fix props all property/atom i_one i2_two 2 d_three d2_four 2"); + lammps_command(lmp, "fix rmass all property/atom mol q rmass ghost yes"); lammps_command(lmp, "region box block 0 2 0 2 0 2"); lammps_command(lmp, "create_box 1 box"); lammps_command(lmp, "mass 1 3.0"); lammps_command(lmp, "create_atoms 1 single 1.0 1.0 1.5"); lammps_command(lmp, "create_atoms 1 single 0.2 0.1 0.1"); + lammps_command(lmp, "set group all mass 2.0"); + lammps_command(lmp, "set atom 1 charge -1"); + lammps_command(lmp, "set atom 2 charge 1"); + lammps_command(lmp, "set atom 1 mol 2"); + lammps_command(lmp, "set atom 2 mol 1"); + lammps_command(lmp, "set atom 1 i_one -3"); + lammps_command(lmp, "set atom 2 i_one 3"); + lammps_command(lmp, "set atom 1 d_three -1.3"); + lammps_command(lmp, "set atom 2 d_three 3.5"); + lammps_command(lmp, "set atom 1 i_two[1] -3"); + lammps_command(lmp, "set atom 2 i_two[2] 3"); + lammps_command(lmp, "set atom * d_four[1] -1.3"); + lammps_command(lmp, "set atom * d_four[2] 3.5"); output = ::testing::internal::GetCapturedStdout(); if (verbose) std::cout << output; } @@ -743,6 +757,29 @@ TEST_F(AtomProperties, mass) auto *mass = (double *)lammps_extract_atom(lmp, "mass"); ASSERT_NE(mass, nullptr); ASSERT_DOUBLE_EQ(mass[1], 3.0); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "rmass"), LAMMPS_DOUBLE); + mass = (double *)lammps_extract_atom(lmp, "rmass"); + ASSERT_NE(mass, nullptr); + ASSERT_DOUBLE_EQ(mass[0], 2.0); + ASSERT_DOUBLE_EQ(mass[1], 2.0); +} + +TEST_F(AtomProperties, charge) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "q"), LAMMPS_DOUBLE); + auto *charge = (double *)lammps_extract_atom(lmp, "q"); + ASSERT_NE(charge, nullptr); + ASSERT_DOUBLE_EQ(charge[0], -1.0); + ASSERT_DOUBLE_EQ(charge[1], 1.0); +} + +TEST_F(AtomProperties, molecule) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "molecule"), LAMMPS_TAGINT); + auto *molecule = (tagint *)lammps_extract_atom(lmp, "molecule"); + ASSERT_NE(molecule, nullptr); + ASSERT_EQ(molecule[0], 2); + ASSERT_EQ(molecule[1], 1); } TEST_F(AtomProperties, id) @@ -776,6 +813,35 @@ TEST_F(AtomProperties, position) EXPECT_DOUBLE_EQ(x[1][2], 0.1); } +TEST_F(AtomProperties, custom) +{ + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i_one"), LAMMPS_INT); + auto *one = (int *)lammps_extract_atom(lmp, "i_one"); + ASSERT_NE(one, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "i2_two"), LAMMPS_INT_2D); + auto **two = (int **)lammps_extract_atom(lmp, "i2_two"); + ASSERT_NE(two, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d_three"), LAMMPS_DOUBLE); + auto *three = (double *)lammps_extract_atom(lmp, "d_three"); + ASSERT_NE(three, nullptr); + EXPECT_EQ(lammps_extract_atom_datatype(lmp, "d2_four"), LAMMPS_DOUBLE_2D); + auto **four = (double **)lammps_extract_atom(lmp, "d2_four"); + ASSERT_NE(four, nullptr); + + EXPECT_EQ(one[0], -3); + EXPECT_EQ(one[1], 3); + EXPECT_EQ(two[0][0], -3); + EXPECT_EQ(two[0][1], 0); + EXPECT_EQ(two[1][0], 0); + EXPECT_EQ(two[1][1], 3); + EXPECT_DOUBLE_EQ(three[0], -1.3); + EXPECT_DOUBLE_EQ(three[1], 3.5); + EXPECT_DOUBLE_EQ(four[0][0], -1.3); + EXPECT_DOUBLE_EQ(four[0][1], 3.5); + EXPECT_DOUBLE_EQ(four[1][0], -1.3); + EXPECT_DOUBLE_EQ(four[1][1], 3.5); +} + TEST(SystemSettings, kokkos) { if (!lammps_config_has_package("KOKKOS")) GTEST_SKIP();