update the unittests with the latest interface changes

This commit is contained in:
Yaser Afshar
2021-02-12 05:55:36 -06:00
parent 7d7c433fd7
commit 6769ded03c

View File

@ -79,31 +79,51 @@ protected:
} }
}; };
TEST_F(KimCommandsTest, kim)
{
if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP();
TEST_FAILURE(".*ERROR: Illegal kim command.*",
lmp->input->one("kim"););
TEST_FAILURE(".*ERROR: Unknown kim subcommand.*",
lmp->input->one("kim unknown"););
TEST_FAILURE(".*ERROR: Unknown command: kim_init.*",
lmp->input->one("kim_init"););
TEST_FAILURE(".*ERROR: Unknown command: kim_interactions.*",
lmp->input->one("kim_interactions"););
TEST_FAILURE(".*ERROR: Unknown command: kim_param.*",
lmp->input->one("kim_param"););
TEST_FAILURE(".*ERROR: Unknown command: kim_property.*",
lmp->input->one("kim_property"););
TEST_FAILURE(".*ERROR: Unknown command: kim_query.*",
lmp->input->one("kim_query"););
}
TEST_F(KimCommandsTest, kim_init) TEST_F(KimCommandsTest, kim_init)
{ {
if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP(); if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP();
TEST_FAILURE(".*ERROR: Illegal kim_init command.*", TEST_FAILURE(".*ERROR: Illegal 'kim init' command.*",
lmp->input->one("kim_init");); lmp->input->one("kim init"););
TEST_FAILURE(".*ERROR: Illegal kim_init command.*", TEST_FAILURE(".*ERROR: Illegal 'kim init' command.*",
lmp->input->one("kim_init LennardJones_Ar real si");); lmp->input->one("kim init LennardJones_Ar real si"););
TEST_FAILURE(".*ERROR: LAMMPS unit_style lj not supported by KIM models.*", TEST_FAILURE(".*ERROR: LAMMPS unit_style lj not supported by KIM models.*",
lmp->input->one("kim_init LennardJones_Ar lj");); lmp->input->one("kim init LennardJones_Ar lj"););
TEST_FAILURE(".*ERROR: LAMMPS unit_style micro not supported by KIM models.*", TEST_FAILURE(".*ERROR: LAMMPS unit_style micro not supported by KIM models.*",
lmp->input->one("kim_init LennardJones_Ar micro");); lmp->input->one("kim init LennardJones_Ar micro"););
TEST_FAILURE(".*ERROR: LAMMPS unit_style nano not supported by KIM models.*", TEST_FAILURE(".*ERROR: LAMMPS unit_style nano not supported by KIM models.*",
lmp->input->one("kim_init LennardJones_Ar nano");); lmp->input->one("kim init LennardJones_Ar nano"););
TEST_FAILURE(".*ERROR: Unknown unit_style.*", TEST_FAILURE(".*ERROR: Unknown unit_style.*",
lmp->input->one("kim_init LennardJones_Ar new_style");); lmp->input->one("kim init LennardJones_Ar new_style"););
TEST_FAILURE(".*ERROR: KIM Model name not found.*", TEST_FAILURE(".*ERROR: KIM Model name not found.*",
lmp->input->one("kim_init Unknown_Model real");); lmp->input->one("kim init Unknown_Model real"););
TEST_FAILURE(".*ERROR: Incompatible units for KIM Simulator Model, required units = metal.*", TEST_FAILURE(".*ERROR: Incompatible units for KIM Simulator Model, required units = metal.*",
lmp->input->one("kim_init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu real");); lmp->input->one("kim init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu real"););
// TEST_FAILURE(".*ERROR: KIM Model does not support the requested unit system.*", // TEST_FAILURE(".*ERROR: KIM Model does not support the requested unit system.*",
// lmp->input->one("kim_init ex_model_Ar_P_Morse real");); // lmp->input->one("kim init ex_model_Ar_P_Morse real"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
int ifix = lmp->modify->find_fix("KIM_MODEL_STORE"); int ifix = lmp->modify->find_fix("KIM_MODEL_STORE");
@ -114,27 +134,27 @@ TEST_F(KimCommandsTest, kim_interactions)
{ {
if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP(); if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP();
TEST_FAILURE(".*ERROR: Illegal kim_interactions command.*", TEST_FAILURE(".*ERROR: Illegal 'kim interactions' command.*",
lmp->input->one("kim_interactions");); lmp->input->one("kim interactions"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Must use 'kim_interactions' command " TEST_FAILURE(".*ERROR: Must use 'kim interactions' command "
"after simulation box is defined.*", "after simulation box is defined.*",
lmp->input->one("kim_interactions Ar");); lmp->input->one("kim interactions Ar"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
lmp->input->one("lattice fcc 4.4300"); lmp->input->one("lattice fcc 4.4300");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Illegal kim_interactions command.*", TEST_FAILURE(".*ERROR: Illegal 'kim interactions' command.*",
lmp->input->one("kim_interactions Ar Ar");); lmp->input->one("kim interactions Ar Ar"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
@ -144,8 +164,8 @@ TEST_F(KimCommandsTest, kim_interactions)
lmp->input->one("create_atoms 4 box"); lmp->input->one("create_atoms 4 box");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Illegal kim_interactions command.*", TEST_FAILURE(".*ERROR: Illegal 'kim interactions' command.*",
lmp->input->one("kim_interactions Ar Ar");); lmp->input->one("kim interactions Ar Ar"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
@ -155,12 +175,12 @@ TEST_F(KimCommandsTest, kim_interactions)
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Must use 'kim_init' before 'kim_interactions'.*", TEST_FAILURE(".*ERROR: Must use 'kim init' before 'kim interactions'.*",
lmp->input->one("kim_interactions Ar");); lmp->input->one("kim interactions Ar"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
lmp->input->one("lattice fcc 4.4300"); lmp->input->one("lattice fcc 4.4300");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
@ -168,7 +188,7 @@ TEST_F(KimCommandsTest, kim_interactions)
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: fixed_types cannot be used with a KIM Portable Model.*", TEST_FAILURE(".*ERROR: fixed_types cannot be used with a KIM Portable Model.*",
lmp->input->one("kim_interactions fixed_types");); lmp->input->one("kim interactions fixed_types"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
@ -181,7 +201,7 @@ TEST_F(KimCommandsTest, kim_interactions)
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal"); lmp->input->one("kim init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal");
lmp->input->one("lattice fcc 4.920"); lmp->input->one("lattice fcc 4.920");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
@ -189,31 +209,31 @@ TEST_F(KimCommandsTest, kim_interactions)
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Species 'Ar' is not supported by this KIM Simulator Model.*", TEST_FAILURE(".*ERROR: Species 'Ar' is not supported by this KIM Simulator Model.*",
lmp->input->one("kim_interactions Ar");); lmp->input->one("kim interactions Ar"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal"); lmp->input->one("kim init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal");
lmp->input->one("lattice fcc 4.08"); lmp->input->one("lattice fcc 4.08");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
lmp->input->one("kim_interactions Au"); lmp->input->one("kim interactions Au");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
// ASSERT_EQ(lmp->output->var_kim_periodic, 1); // ASSERT_EQ(lmp->output->var_kim_periodic, 1);
// TEST_FAILURE(".*ERROR: Incompatible units for KIM Simulator Model.*", // TEST_FAILURE(".*ERROR: Incompatible units for KIM Simulator Model.*",
// lmp->input->one("kim_interactions Au");); // lmp->input->one("kim interactions Au"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
lmp->input->one("lattice fcc 4.4300"); lmp->input->one("lattice fcc 4.4300");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
lmp->input->one("kim_interactions Ar"); lmp->input->one("kim interactions Ar");
lmp->input->one("mass 1 39.95"); lmp->input->one("mass 1 39.95");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
@ -222,15 +242,15 @@ TEST_F(KimCommandsTest, kim_interactions)
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones_Ar real"); lmp->input->one("kim init LennardJones_Ar real");
lmp->input->one("lattice fcc 4.4300"); lmp->input->one("lattice fcc 4.4300");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
lmp->input->one("kim_interactions Ar"); lmp->input->one("kim interactions Ar");
lmp->input->one("mass 1 39.95"); lmp->input->one("mass 1 39.95");
lmp->input->one("run 1"); lmp->input->one("run 1");
lmp->input->one("kim_interactions Ar"); lmp->input->one("kim interactions Ar");
lmp->input->one("run 1"); lmp->input->one("run 1");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
} }
@ -239,94 +259,95 @@ TEST_F(KimCommandsTest, kim_param)
{ {
if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP(); if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP();
TEST_FAILURE(".*ERROR: Illegal kim_param command.*", lmp->input->one("kim_param");); TEST_FAILURE(".*ERROR: Illegal 'kim param' command.*",
TEST_FAILURE(".*ERROR: Incorrect arguments in kim_param command.\n" lmp->input->one("kim param"););
"'kim_param get/set' is mandatory.*", TEST_FAILURE(".*ERROR: Incorrect arguments in 'kim param' command.\n"
lmp->input->one("kim_param unknown shift 1 shift");); "'kim param get/set' is mandatory.*",
TEST_FAILURE(".*ERROR: Must use 'kim_init' before 'kim_param'.*", lmp->input->one("kim param unknown shift 1 shift"););
lmp->input->one("kim_param get shift 1 shift");); TEST_FAILURE(".*ERROR: Must use 'kim init' before 'kim param'.*",
lmp->input->one("kim param get shift 1 shift"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal"); lmp->input->one("kim init Sim_LAMMPS_LJcut_AkersonElliott_Alchemy_PbAu metal");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: kim_param can only be used with a KIM Portable Model.*", TEST_FAILURE(".*ERROR: 'kim param' can only be used with a KIM Portable Model.*",
lmp->input->one("kim_param get shift 1 shift");); lmp->input->one("kim param get shift 1 shift"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones612_UniversalShifted__MO_959249795837_003 real"); lmp->input->one("kim init LennardJones612_UniversalShifted__MO_959249795837_003 real");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Illegal index '0' for " TEST_FAILURE(".*ERROR: Illegal index '0' for "
"'shift' parameter with the extent of '1'.*", "'shift' parameter with the extent of '1'.*",
lmp->input->one("kim_param get shift 0 shift");); lmp->input->one("kim param get shift 0 shift"););
TEST_FAILURE(".*ERROR: Illegal index '2' for " TEST_FAILURE(".*ERROR: Illegal index '2' for "
"'shift' parameter with the extent of '1'.*", "'shift' parameter with the extent of '1'.*",
lmp->input->one("kim_param get shift 2 shift");); lmp->input->one("kim param get shift 2 shift"););
TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer " TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer "
"parameter\\(s\\) instead of '1.' in index_range.*", "parameter\\(s\\) instead of '1.' in index_range.*",
lmp->input->one("kim_param get shift 1. shift");); lmp->input->one("kim param get shift 1. shift"););
TEST_FAILURE(".*ERROR: Illegal index_range '1-2' for 'shift' " TEST_FAILURE(".*ERROR: Illegal index_range '1-2' for 'shift' "
"parameter with the extent of '1'.*", "parameter with the extent of '1'.*",
lmp->input->one("kim_param get shift 1:2 shift");); lmp->input->one("kim param get shift 1:2 shift"););
TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer " TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer "
"parameter\\(s\\) instead of '1-2' in index_range.*", "parameter\\(s\\) instead of '1-2' in index_range.*",
lmp->input->one("kim_param get shift 1-2 shift");); lmp->input->one("kim param get shift 1-2 shift"););
TEST_FAILURE(".*ERROR: Wrong number of arguments in 'kim_param " TEST_FAILURE(".*ERROR: Wrong number of arguments in 'kim param "
"get' command.\nThe LAMMPS '3' variable names or " "get' command.\nThe LAMMPS '3' variable names or "
"'s1 split' is mandatory.*", "'s1 split' is mandatory.*",
lmp->input->one("kim_param get sigmas 1:3 s1 s2");); lmp->input->one("kim param get sigmas 1:3 s1 s2"););
TEST_FAILURE(".*ERROR: Wrong argument in kim_param get command.\nThis " TEST_FAILURE(".*ERROR: Wrong argument in 'kim param get' command.\nThis "
"Model does not have the requested 'unknown' parameter.*", "Model does not have the requested 'unknown' parameter.*",
lmp->input->one("kim_param get unknown 1 unknown");); lmp->input->one("kim param get unknown 1 unknown"););
TEST_FAILURE(".*ERROR: Wrong 'kim_param set' command.\n" TEST_FAILURE(".*ERROR: Wrong 'kim param set' command.\n"
"To set the new parameter values, pair style must " "To set the new parameter values, pair style must "
"be assigned.\nMust use 'kim_interactions' or" "be assigned.\nMust use 'kim interactions' or"
"'pair_style kim' before 'kim_param set'.*", "'pair_style kim' before 'kim param set'.*",
lmp->input->one("kim_param set shift 1 2");); lmp->input->one("kim param set shift 1 2"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("kim_param get shift 1 shift"); lmp->input->one("kim param get shift 1 shift");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_FALSE(lmp->input->variable->find("shift") == -1); ASSERT_FALSE(lmp->input->variable->find("shift") == -1);
ASSERT_TRUE(std::string(lmp->input->variable->retrieve("shift")) == std::string("1")); ASSERT_TRUE(std::string(lmp->input->variable->retrieve("shift")) == "1");
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones612_UniversalShifted__MO_959249795837_003 real"); lmp->input->one("kim init LennardJones612_UniversalShifted__MO_959249795837_003 real");
lmp->input->one("lattice fcc 4.4300"); lmp->input->one("lattice fcc 4.4300");
lmp->input->one("region box block 0 10 0 10 0 10"); lmp->input->one("region box block 0 10 0 10 0 10");
lmp->input->one("create_box 1 box"); lmp->input->one("create_box 1 box");
lmp->input->one("create_atoms 1 box"); lmp->input->one("create_atoms 1 box");
lmp->input->one("kim_interactions Ar"); lmp->input->one("kim interactions Ar");
lmp->input->one("mass 1 39.95"); lmp->input->one("mass 1 39.95");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Illegal index '2' for " TEST_FAILURE(".*ERROR: Illegal index '2' for "
"'shift' parameter with the extent of '1'.*", "'shift' parameter with the extent of '1'.*",
lmp->input->one("kim_param set shift 2 2");); lmp->input->one("kim param set shift 2 2"););
TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer " TEST_FAILURE(".*ERROR: Illegal index_range.\nExpected integer "
"parameter\\(s\\) instead of '1.' in index_range.*", "parameter\\(s\\) instead of '1.' in index_range.*",
lmp->input->one("kim_param set shift 1. shift");); lmp->input->one("kim param set shift 1. shift"););
TEST_FAILURE(".*ERROR: Illegal index_range '1-2' for " TEST_FAILURE(".*ERROR: Illegal index_range '1-2' for "
"'shift' parameter with the extent of '1'.*", "'shift' parameter with the extent of '1'.*",
lmp->input->one("kim_param set shift 1:2 2");); lmp->input->one("kim param set shift 1:2 2"););
TEST_FAILURE(".*ERROR: Wrong number of variable values for pair coefficients.*", TEST_FAILURE(".*ERROR: Wrong number of variable values for pair coefficients.*",
lmp->input->one("kim_param set sigmas 1:3 0.5523570 0.4989030");); lmp->input->one("kim param set sigmas 1:3 0.5523570 0.4989030"););
TEST_FAILURE(".*ERROR: Wrong argument for pair coefficients.\nThis " TEST_FAILURE(".*ERROR: Wrong argument for pair coefficients.\nThis "
"Model does not have the requested '0.4989030' parameter.*", "Model does not have the requested '0.4989030' parameter.*",
lmp->input->one("kim_param set sigmas 1:1 0.5523570 0.4989030");); lmp->input->one("kim param set sigmas 1:1 0.5523570 0.4989030"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("variable new_shift equal 2"); lmp->input->one("variable new_shift equal 2");
lmp->input->one("kim_param set shift 1 ${new_shift}"); lmp->input->one("kim param set shift 1 ${new_shift}");
lmp->input->one("kim_param get shift 1 shift"); lmp->input->one("kim param get shift 1 shift");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_TRUE(std::string(lmp->input->variable->retrieve("shift")) == std::string("2")); ASSERT_TRUE(std::string(lmp->input->variable->retrieve("shift")) == "2");
} }
TEST_F(KimCommandsTest, kim_property) TEST_F(KimCommandsTest, kim_property)
@ -338,168 +359,159 @@ TEST_F(KimCommandsTest, kim_property)
TEST_FAILURE(".*ERROR: Invalid Python version.\n" TEST_FAILURE(".*ERROR: Invalid Python version.\n"
"The kim-property Python package requires Python " "The kim-property Python package requires Python "
"3 >= 3.6 support.*", "3 >= 3.6 support.*",
lmp->input->one("kim_property");); lmp->input->one("kim property"););
} else { } else {
TEST_FAILURE(".*ERROR: Invalid kim_property command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property' command.*",
lmp->input->one("kim_property");); lmp->input->one("kim property"););
TEST_FAILURE(".*ERROR: Invalid kim_property command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property' command.*",
lmp->input->one("kim_property create");); lmp->input->one("kim property create"););
TEST_FAILURE(".*ERROR: Incorrect arguments in kim_property command.\n" TEST_FAILURE(".*ERROR: Incorrect arguments in 'kim property' command."
"'kim_property create/destroy/modify/remove/dump' " "\n'kim property create/destroy/modify/remove/dump' "
"is mandatory.*", "is mandatory.*",
lmp->input->one("kim_property unknown 1 atomic-mass");); lmp->input->one("kim property unknown 1 atomic-mass"););
} }
#if defined(KIM_EXTRA_UNITTESTS) #if defined(KIM_EXTRA_UNITTESTS)
TEST_FAILURE(".*ERROR: Invalid 'kim_property create' command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property create' command.*",
lmp->input->one("kim_property create 1");); lmp->input->one("kim property create 1"););
TEST_FAILURE(".*ERROR: Invalid 'kim_property destroy' command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property destroy' command.*",
lmp->input->one("kim_property destroy 1 cohesive-potential-energy-cubic-crystal");); lmp->input->one("kim property destroy 1 cohesive-potential-energy-cubic-crystal"););
TEST_FAILURE(".*ERROR: Invalid 'kim_property modify' command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property modify' command.*",
lmp->input->one("kim_property modify 1 key short-name");); lmp->input->one("kim property modify 1 key short-name"););
TEST_FAILURE(".*ERROR: There is no property instance to modify the content.*", TEST_FAILURE(".*ERROR: There is no property instance to modify the content.*",
lmp->input->one("kim_property modify 1 key short-name source-value 1 fcc");); lmp->input->one("kim property modify 1 key short-name source-value 1 fcc"););
TEST_FAILURE(".*ERROR: Invalid 'kim_property remove' command.*", TEST_FAILURE(".*ERROR: Invalid 'kim property remove' command.*",
lmp->input->one("kim_property remove 1 key");); lmp->input->one("kim property remove 1 key"););
TEST_FAILURE(".*ERROR: There is no property instance to remove the content.*", TEST_FAILURE(".*ERROR: There is no property instance to remove the content.*",
lmp->input->one("kim_property remove 1 key short-name");); lmp->input->one("kim property remove 1 key short-name"););
TEST_FAILURE(".*ERROR: There is no property instance to dump the content.*", TEST_FAILURE(".*ERROR: There is no property instance to dump the content.*",
lmp->input->one("kim_property dump results.edn");); lmp->input->one("kim property dump results.edn"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones612_UniversalShifted__MO_959249795837_003 real"); lmp->input->one("kim init LennardJones612_UniversalShifted__MO_959249795837_003 real");
lmp->input->one("kim_property create 1 cohesive-potential-energy-cubic-crystal"); lmp->input->one("kim property create 1 cohesive-potential-energy-cubic-crystal");
lmp->input->one("kim_property modify 1 key short-name source-value 1 fcc"); lmp->input->one("kim property modify 1 key short-name source-value 1 fcc");
lmp->input->one("kim_property destroy 1"); lmp->input->one("kim property destroy 1");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
#endif #endif
} }
TEST_F(KimCommandsTest, kim_query) TEST_F(KimCommandsTest, kim_query)
{ {
if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP(); if (!LAMMPS::is_installed_pkg("KIM")) GTEST_SKIP();
TEST_FAILURE(".*ERROR: Illegal kim_query command.*", TEST_FAILURE(".*ERROR: Illegal 'kim query' command.*",
lmp->input->one("kim_query");); lmp->input->one("kim query"););
TEST_FAILURE(".*ERROR: Must use 'kim_init' before 'kim_query'.*", TEST_FAILURE(".*ERROR: Must use 'kim init' before 'kim query'.*",
lmp->input->one("kim_query a0 get_lattice_constant_cubic");); lmp->input->one("kim query a0 get_lattice_constant_cubic"););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init LennardJones612_UniversalShifted__MO_959249795837_003 real"); lmp->input->one("kim init LennardJones612_UniversalShifted__MO_959249795837_003 real");
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
TEST_FAILURE(".*ERROR: Illegal kim_query command.\nThe keyword 'split' " TEST_FAILURE(".*ERROR: Illegal 'kim query' command.\nThe keyword 'split' "
"must be followed by the name of the query function.*", "must be followed by the name of the query function.*",
lmp->input->one("kim_query a0 split");); lmp->input->one("kim query a0 split"););
TEST_FAILURE(".*ERROR: Illegal 'kim query' command.\nThe 'list' keyword "
TEST_FAILURE(".*ERROR: Illegal kim_query command.\nThe 'list' keyword " "can not be used after 'split'.*",
"can not be used after 'split'.*", lmp->input->one("kim query a0 split list"););
lmp->input->one("kim_query a0 split list");); TEST_FAILURE(".*ERROR: Illegal 'kim query' command.\nThe 'list' keyword "
TEST_FAILURE(".*ERROR: Illegal kim_query command.\nThe 'list' keyword "
"must be followed by \\('split' and\\) the name of the query " "must be followed by \\('split' and\\) the name of the query "
"function.*", lmp->input->one("kim_query a0 list");); "function.*", lmp->input->one("kim query a0 list"););
TEST_FAILURE(".*ERROR: Illegal 'model' key in 'kim query' command.*",
TEST_FAILURE(".*ERROR: Illegal 'model' key in kim_query command.*", lmp->input->one("kim query a0 get_lattice_constant_cubic "
lmp->input->one("kim_query a0 get_lattice_constant_cubic "
"model=[MO_959249795837_003]");); "model=[MO_959249795837_003]"););
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `crystal` " TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `crystal` "
"to kim_query is wrong. The query format is the " "to 'kim query' is wrong. The query format is the "
"keyword=\\[value\\], where value is always an array of one " "keyword=\\[value\\], where value is always an array of one "
"or more comma-separated items.*", "or more comma-separated items.*",
lmp->input->one("kim_query a0 get_lattice_constant_cubic " lmp->input->one("kim query a0 get_lattice_constant_cubic "
"crystal");); "crystal"););
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `" TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `"
"crystal=fcc` to kim_query is wrong. The query format is the " "crystal=fcc` to 'kim query' is wrong. The query format is "
"keyword=\\[value\\], where value is always an array of one " "the keyword=\\[value\\], where value is always an array of "
"or more comma-separated items.*", "one or more comma-separated items.*",
lmp->input->one("kim_query a0 get_lattice_constant_cubic " lmp->input->one("kim query a0 get_lattice_constant_cubic "
"crystal=fcc");); "crystal=fcc"););
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `" TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `"
"crystal=\\[fcc` to kim_query is wrong. The query format is " "crystal=\\[fcc` to 'kim query' is wrong. The query format is "
"the keyword=\\[value\\], where value is always an array of " "the keyword=\\[value\\], where value is always an array of "
"one or more comma-separated items.*", "one or more comma-separated items.*",
lmp->input->one("kim_query a0 get_lattice_constant_cubic " lmp->input->one("kim query a0 get_lattice_constant_cubic "
"crystal=[fcc");); "crystal=[fcc"););
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `" TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `"
"crystal=fcc\\]` to kim_query is wrong. The query format is " "crystal=fcc\\]` to 'kim query' is wrong. The query format is "
"the keyword=\\[value\\], where value is always an array of " "the keyword=\\[value\\], where value is always an array of "
"one or more comma-separated items.*", "one or more comma-separated items.*",
lmp->input->one("kim_query a0 get_lattice_constant_cubic " lmp->input->one("kim query a0 get_lattice_constant_cubic "
"crystal=fcc]");); "crystal=fcc]"););
std::string squery("kim_query a0 get_lattice_constant_cubic "); std::string squery("kim query a0 get_lattice_constant_cubic ");
squery += "crystal=[\"fcc\"] species=\"Al\",\"Ni\" units=[\"angstrom\"]"; squery += "crystal=[\"fcc\"] species=\"Al\",\"Ni\" units=[\"angstrom\"]";
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `species=" TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `species="
"\"Al\",\"Ni\"` to kim_query is wrong. The query format is " "\"Al\",\"Ni\"` to 'kim query' is wrong. The query format is "
"the keyword=\\[value\\], where value is always an array of " "the keyword=\\[value\\], where value is always an array of "
"one or more comma-separated items.*", "one or more comma-separated items.*",
lmp->input->one(squery);); lmp->input->one(squery););
squery = "kim_query a0 get_lattice_constant_cubic "; squery = "kim query a0 get_lattice_constant_cubic ";
squery += "crystal=[\"fcc\"] species=\"Al\",\"Ni\", units=[\"angstrom\"]"; squery += "crystal=[\"fcc\"] species=\"Al\",\"Ni\", units=[\"angstrom\"]";
TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `species=" TEST_FAILURE(".*ERROR: Illegal query format.\nInput argument of `species="
"\"Al\",\"Ni\",` to kim_query is wrong. The query format is " "\"Al\",\"Ni\",` to 'kim query' is wrong. The query format is "
"the keyword=\\[value\\], where value is always an array of " "the keyword=\\[value\\], where value is always an array of "
"one or more comma-separated items.*", "one or more comma-separated items.*",
lmp->input->one(squery);); lmp->input->one(squery););
squery = "kim_query a0 get_lattice_constant_cubic crystal=[fcc] " squery = "kim query a0 get_lattice_constant_cubic crystal=[fcc] "
"species=[Al]"; "species=[Al]";
TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery);); TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery););
squery = "kim_query a0 get_lattice_constant_cubic crystal=[fcc] " squery = "kim query a0 get_lattice_constant_cubic crystal=[fcc] "
"units=[\"angstrom\"]"; "units=[\"angstrom\"]";
TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery);); TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery););
#if defined(KIM_EXTRA_UNITTESTS) #if defined(KIM_EXTRA_UNITTESTS)
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000 metal"); lmp->input->one("kim init EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000 metal");
squery = "kim_query latconst split get_lattice_constant_hexagonal "; squery = "kim query latconst split get_lattice_constant_hexagonal ";
squery += "crystal=[\"hcp\"] species=[\"Zr\"] units=[\"angstrom\"]"; squery += "crystal=[\"hcp\"] species=[\"Zr\"] units=[\"angstrom\"]";
lmp->input->one(squery); lmp->input->one(squery);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst_1")) == ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst_1")) ==
std::string("3.234055244384789"))); std::string("3.234055244384789")));
ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst_2")) == ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst_2")) ==
std::string("5.167650199630013"))); std::string("5.167650199630013")));
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000 metal"); lmp->input->one("kim init EAM_Dynamo_Mendelev_2007_Zr__MO_848899341753_000 metal");
squery = "kim_query latconst list get_lattice_constant_hexagonal "; squery = "kim query latconst list get_lattice_constant_hexagonal ";
squery += "crystal=[hcp] species=[Zr] units=[angstrom]"; squery += "crystal=[hcp] species=[Zr] units=[angstrom]";
lmp->input->one(squery); lmp->input->one(squery);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst")) == ASSERT_TRUE((std::string(lmp->input->variable->retrieve("latconst")) ==
std::string("3.234055244384789 5.167650199630013"))); std::string("3.234055244384789 5.167650199630013")));
squery = "kim_query latconst list get_lattice_constant_hexagonal "; squery = "kim query latconst list get_lattice_constant_hexagonal ";
squery += "crystal=[bcc] species=[Zr] units=[angstrom]"; squery += "crystal=[bcc] species=[Zr] units=[angstrom]";
TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery);); TEST_FAILURE(".*ERROR: OpenKIM query failed:.*", lmp->input->one(squery););
if (!verbose) ::testing::internal::CaptureStdout(); if (!verbose) ::testing::internal::CaptureStdout();
lmp->input->one("clear"); lmp->input->one("clear");
lmp->input->one("kim_init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal"); lmp->input->one("kim init EAM_Dynamo_ErcolessiAdams_1994_Al__MO_123629422045_005 metal");
squery = "kim_query alpha get_linear_thermal_expansion_coefficient_cubic "; squery = "kim query alpha get_linear_thermal_expansion_coefficient_cubic ";
squery += "crystal=[fcc] species=[Al] units=[1/K] temperature=[293.15] "; squery += "crystal=[fcc] species=[Al] units=[1/K] temperature=[293.15] ";
squery += "temperature_units=[K]"; squery += "temperature_units=[K]";
lmp->input->one(squery); lmp->input->one(squery);
if (!verbose) ::testing::internal::GetCapturedStdout(); if (!verbose) ::testing::internal::GetCapturedStdout();
ASSERT_TRUE((std::string(lmp->input->variable->retrieve("alpha")) == ASSERT_TRUE((std::string(lmp->input->variable->retrieve("alpha")) ==
std::string("1.654960564704273e-05"))); std::string("1.654960564704273e-05")));
#endif #endif
} }