Merge remote-tracking branch 'origin/develop' into python_use_setuptools
This commit is contained in:
@ -26,24 +26,21 @@ add_library(GTest::GMockMain ALIAS gmock_main)
|
||||
# the LAMMPS version header in the output for an empty input
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/in.empty "")
|
||||
add_test(NAME RunLammps
|
||||
COMMAND $<TARGET_FILE:lmp> -log none -echo none -in in.empty
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
COMMAND $<TARGET_FILE:lmp> -log none -echo none -in in.empty)
|
||||
set_tests_properties(RunLammps PROPERTIES
|
||||
ENVIRONMENT "TSAN_OPTIONS=ignore_noninstrumented_modules=1;HWLOC_HIDE_ERRORS=1"
|
||||
PASS_REGULAR_EXPRESSION "LAMMPS \\([0-9]+ [A-Za-z]+ 2[0-9][0-9][0-9]( - Update [0-9]+)?\\)")
|
||||
|
||||
# check if the compiled executable will print the help message
|
||||
add_test(NAME HelpMessage
|
||||
COMMAND $<TARGET_FILE:lmp> -h
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
COMMAND $<TARGET_FILE:lmp> -h)
|
||||
set_tests_properties(HelpMessage PROPERTIES
|
||||
ENVIRONMENT "TSAN_OPTIONS=ignore_noninstrumented_modules=1;HWLOC_HIDE_ERRORS=1"
|
||||
PASS_REGULAR_EXPRESSION ".*Large-scale Atomic/Molecular Massively Parallel Simulator -.*Usage example:.*")
|
||||
|
||||
# check if the compiled executable will error out on an invalid command line flag
|
||||
add_test(NAME InvalidFlag
|
||||
COMMAND $<TARGET_FILE:lmp> -xxx
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
COMMAND $<TARGET_FILE:lmp> -xxx)
|
||||
set_tests_properties(InvalidFlag PROPERTIES
|
||||
ENVIRONMENT "TSAN_OPTIONS=ignore_noninstrumented_modules=1;HWLOC_HIDE_ERRORS=1"
|
||||
PASS_REGULAR_EXPRESSION "ERROR: Invalid command-line argument.*")
|
||||
|
||||
@ -1,26 +1,26 @@
|
||||
|
||||
add_executable(test_library_open test_library_open.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_open PRIVATE lammps GTest::GMock)
|
||||
add_test(LibraryOpen test_library_open)
|
||||
add_test(NAME LibraryOpen COMMAND test_library_open)
|
||||
|
||||
add_executable(test_library_commands test_library_commands.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_commands PRIVATE lammps GTest::GMock)
|
||||
add_test(LibraryCommands test_library_commands)
|
||||
add_test(NAME LibraryCommands COMMAND test_library_commands)
|
||||
|
||||
add_executable(test_library_external test_library_external.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_external PRIVATE lammps GTest::GMock)
|
||||
add_test(LibraryExternal test_library_external)
|
||||
add_test(NAME LibraryExternal COMMAND test_library_external)
|
||||
|
||||
add_executable(test_library_properties test_library_properties.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_properties PRIVATE lammps GTest::GMock)
|
||||
target_compile_definitions(test_library_properties PRIVATE -DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR})
|
||||
add_test(LibraryProperties test_library_properties)
|
||||
add_test(NAME LibraryProperties COMMAND test_library_properties)
|
||||
set_tests_properties(LibraryProperties PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
add_executable(test_library_scatter_gather test_library_scatter_gather.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_scatter_gather PRIVATE lammps GTest::GMock)
|
||||
target_compile_definitions(test_library_scatter_gather PRIVATE -DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR})
|
||||
add_test(LibraryScatterGather test_library_scatter_gather)
|
||||
add_test(NAME LibraryScatterGather COMMAND test_library_scatter_gather)
|
||||
set_tests_properties(LibraryScatterGather PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
set(TEST_CONFIG_DEFS "-DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR};-DLAMMPS_${LAMMPS_SIZES}")
|
||||
@ -65,7 +65,7 @@ endforeach()
|
||||
add_executable(test_library_config test_library_config.cpp test_main.cpp)
|
||||
target_link_libraries(test_library_config PRIVATE lammps GTest::GMock)
|
||||
target_compile_definitions(test_library_config PRIVATE ${TEST_CONFIG_DEFS})
|
||||
add_test(LibraryConfig test_library_config)
|
||||
add_test(NAME LibraryConfig COMMAND test_library_config)
|
||||
|
||||
add_executable(test_library_mpi test_library_mpi.cpp)
|
||||
target_link_libraries(test_library_mpi PRIVATE lammps GTest::GMock)
|
||||
|
||||
@ -20,7 +20,7 @@ const char *cont_input[] = {"create_atoms 1 single &", "0.2 0.1 0.1"};
|
||||
class LibraryCommands : public ::testing::Test {
|
||||
protected:
|
||||
void *lmp;
|
||||
LibraryCommands() = default;
|
||||
LibraryCommands() = default;
|
||||
~LibraryCommands() override = default;
|
||||
|
||||
void SetUp() override
|
||||
@ -55,13 +55,13 @@ TEST_F(LibraryCommands, from_file)
|
||||
const char cont_file[] = "in.cont";
|
||||
|
||||
fp = fopen(demo_file, "w");
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
fputs(inp, fp);
|
||||
fputc('\n', fp);
|
||||
}
|
||||
fclose(fp);
|
||||
fp = fopen(cont_file, "w");
|
||||
for (auto & inp : cont_input) {
|
||||
for (auto &inp : cont_input) {
|
||||
fputs(inp, fp);
|
||||
fputc('\n', fp);
|
||||
}
|
||||
@ -85,7 +85,7 @@ TEST_F(LibraryCommands, from_line)
|
||||
{
|
||||
EXPECT_EQ(lammps_get_natoms(lmp), 0);
|
||||
if (!verbose) ::testing::internal::CaptureStdout();
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
lammps_command(lmp, inp);
|
||||
}
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
@ -106,11 +106,11 @@ TEST_F(LibraryCommands, from_string)
|
||||
{
|
||||
std::string cmds("");
|
||||
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
cmds += inp;
|
||||
cmds += "\n";
|
||||
}
|
||||
for (auto & inp : cont_input) {
|
||||
for (auto &inp : cont_input) {
|
||||
cmds += inp;
|
||||
cmds += "\n";
|
||||
}
|
||||
@ -126,11 +126,11 @@ TEST_F(LibraryCommands, from_string)
|
||||
if (!verbose) ::testing::internal::GetCapturedStdout();
|
||||
|
||||
cmds.clear();
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
cmds += inp;
|
||||
cmds += "\r\n";
|
||||
}
|
||||
for (auto & inp : cont_input) {
|
||||
for (auto &inp : cont_input) {
|
||||
cmds += inp;
|
||||
cmds += "\r\n";
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ protected:
|
||||
void *lmp;
|
||||
std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER);
|
||||
|
||||
LibraryConfig() = default;
|
||||
LibraryConfig() = default;
|
||||
~LibraryConfig() override = default;
|
||||
|
||||
void SetUp() override
|
||||
|
||||
@ -23,7 +23,7 @@ protected:
|
||||
void *lmp;
|
||||
std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER);
|
||||
|
||||
LibraryProperties() = default;
|
||||
LibraryProperties() = default;
|
||||
~LibraryProperties() override = default;
|
||||
|
||||
void SetUp() override
|
||||
@ -436,8 +436,10 @@ class AtomProperties : public ::testing::Test {
|
||||
protected:
|
||||
void *lmp;
|
||||
|
||||
AtomProperties()= default;;
|
||||
~AtomProperties() override= default;;
|
||||
AtomProperties() = default;
|
||||
;
|
||||
~AtomProperties() override = default;
|
||||
;
|
||||
|
||||
void SetUp() override
|
||||
{
|
||||
|
||||
@ -23,7 +23,7 @@ protected:
|
||||
void *lmp;
|
||||
std::string INPUT_DIR = STRINGIFY(TEST_INPUT_FOLDER);
|
||||
|
||||
GatherProperties() = default;
|
||||
GatherProperties() = default;
|
||||
~GatherProperties() override = default;
|
||||
|
||||
void SetUp() override
|
||||
|
||||
@ -9,21 +9,21 @@ if((NOT (CMAKE_SYSTEM_NAME STREQUAL "Windows")) AND PKG_PLUGIN)
|
||||
endif()
|
||||
|
||||
target_link_libraries(test_simple_commands PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME SimpleCommands COMMAND test_simple_commands WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME SimpleCommands COMMAND test_simple_commands)
|
||||
set_tests_properties(SimpleCommands PROPERTIES
|
||||
ENVIRONMENT "LAMMPS_PLUGIN_BIN_DIR=${CMAKE_BINARY_DIR}/build-plugins")
|
||||
ENVIRONMENT "LAMMPS_PLUGIN_BIN_DIR=${CMAKE_BINARY_DIR}")
|
||||
|
||||
add_executable(test_lattice_region test_lattice_region.cpp)
|
||||
target_link_libraries(test_lattice_region PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME LatticeRegion COMMAND test_lattice_region WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME LatticeRegion COMMAND test_lattice_region)
|
||||
|
||||
add_executable(test_groups test_groups.cpp)
|
||||
target_link_libraries(test_groups PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME Groups COMMAND test_groups WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME Groups COMMAND test_groups)
|
||||
|
||||
add_executable(test_variables test_variables.cpp)
|
||||
target_link_libraries(test_variables PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME Variables COMMAND test_variables WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME Variables COMMAND test_variables)
|
||||
|
||||
add_executable(test_kim_commands test_kim_commands.cpp)
|
||||
if(KIM_EXTRA_UNITTESTS)
|
||||
@ -34,12 +34,12 @@ if(KIM_EXTRA_UNITTESTS)
|
||||
endif()
|
||||
endif()
|
||||
target_link_libraries(test_kim_commands PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME KimCommands COMMAND test_kim_commands WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME KimCommands COMMAND test_kim_commands)
|
||||
|
||||
add_executable(test_reset_ids test_reset_ids.cpp)
|
||||
target_compile_definitions(test_reset_ids PRIVATE -DTEST_INPUT_FOLDER=${CMAKE_CURRENT_SOURCE_DIR})
|
||||
target_link_libraries(test_reset_ids PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME ResetIDs COMMAND test_reset_ids WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME ResetIDs COMMAND test_reset_ids)
|
||||
|
||||
add_executable(test_mpi_load_balancing test_mpi_load_balancing.cpp)
|
||||
target_link_libraries(test_mpi_load_balancing PRIVATE lammps GTest::GMock)
|
||||
|
||||
@ -1 +0,0 @@
|
||||
../force-styles/tests/data.fourmol
|
||||
223
unittest/commands/data.fourmol
Normal file
223
unittest/commands/data.fourmol
Normal file
@ -0,0 +1,223 @@
|
||||
LAMMPS data file via write_data, version 5 May 2020, timestep = 0
|
||||
|
||||
29 atoms
|
||||
5 atom types
|
||||
24 bonds
|
||||
5 bond types
|
||||
30 angles
|
||||
4 angle types
|
||||
31 dihedrals
|
||||
5 dihedral types
|
||||
2 impropers
|
||||
2 improper types
|
||||
|
||||
-6.024572 8.975428 xlo xhi
|
||||
-7.692866 7.307134 ylo yhi
|
||||
-8.086924 6.913076 zlo zhi
|
||||
|
||||
Masses
|
||||
|
||||
1 12.0107
|
||||
2 4.00794
|
||||
3 14.0067
|
||||
4 15.9994
|
||||
5 15.9994
|
||||
|
||||
Pair Coeffs # zero
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
|
||||
Bond Coeffs # zero
|
||||
|
||||
1 1.5
|
||||
2 1.1
|
||||
3 1.3
|
||||
4 1.2
|
||||
5 1
|
||||
|
||||
Angle Coeffs # zero
|
||||
|
||||
1 110.1
|
||||
2 111
|
||||
3 120
|
||||
4 108.5
|
||||
|
||||
Dihedral Coeffs # zero
|
||||
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
5
|
||||
|
||||
Improper Coeffs # zero
|
||||
|
||||
1
|
||||
2
|
||||
|
||||
Atoms # full
|
||||
|
||||
10 2 1 7.0000000000000007e-02 2.0185283555536988e+00 -1.4283966846517357e+00 -9.6733527271133024e-01 0 0 0
|
||||
11 2 2 8.9999999999999997e-02 1.7929780509347666e+00 -1.9871047540768743e+00 -1.8840626643185674e+00 0 0 0
|
||||
12 2 1 -2.7000000000000002e-01 3.0030247876861225e+00 -4.8923319967572748e-01 -1.6188658531537248e+00 0 0 0
|
||||
13 2 2 8.9999999999999997e-02 4.0447273787895934e+00 -9.0131998547446246e-01 -1.6384447268320836e+00 0 0 0
|
||||
14 2 2 8.9999999999999997e-02 2.6033152817257075e+00 -4.0789761505963579e-01 -2.6554413538823063e+00 0 0 0
|
||||
2 1 2 3.1000000000000000e-01 3.0197083955402204e-01 2.9515239068888608e+00 -8.5689735572907566e-01 0 0 0
|
||||
3 1 1 -2.0000000000000000e-02 -6.9435377880558602e-01 1.2440473127136711e+00 -6.2233801468892025e-01 0 0 0
|
||||
4 1 2 8.9999999999999997e-02 -1.5771614164685133e+00 1.4915333140468066e+00 -1.2487126845040522e+00 0 0 0
|
||||
6 1 1 5.1000000000000001e-01 2.9412607937706009e-01 2.2719282656652909e-01 -1.2843094067857870e+00 0 0 0
|
||||
7 1 4 -5.1000000000000001e-01 3.4019871062879609e-01 -9.1277350075786561e-03 -2.4633113224304561e+00 0 0 0
|
||||
19 3 2 4.2359999999999998e-01 1.5349125211132961e+00 2.6315969880333707e+00 -4.2472859440220647e+00 0 0 0
|
||||
15 2 2 8.9999999999999997e-02 2.9756315249791303e+00 5.6334269722969288e-01 -1.2437650754599008e+00 0 0 0
|
||||
18 3 4 -8.4719999999999995e-01 2.1384791188033843e+00 3.0177261773770208e+00 -3.5160827596876225e+00 0 0 0
|
||||
20 3 2 4.2359999999999998e-01 2.7641167828863153e+00 3.6833419064000221e+00 -3.9380850623312638e+00 0 0 0
|
||||
8 2 3 -4.6999999999999997e-01 1.1641187171852805e+00 -4.8375305955385234e-01 -6.7659823767368688e-01 0 0 0
|
||||
9 2 2 3.1000000000000000e-01 1.3777459838125838e+00 -2.5366338669522998e-01 2.6877644730326306e-01 0 0 0
|
||||
16 2 1 5.1000000000000001e-01 2.6517554244980306e+00 -2.3957110424978438e+00 3.2908335999178327e-02 0 0 0
|
||||
17 2 4 -5.1000000000000001e-01 2.2309964792710639e+00 -2.1022918943319384e+00 1.1491948328949437e+00 0 0 0
|
||||
1 1 3 -4.6999999999999997e-01 -2.7993683669226832e-01 2.4726588069312840e+00 -1.7200860244148433e-01 0 0 0
|
||||
5 1 2 8.9999999999999997e-02 -8.9501761359359255e-01 9.3568128743071344e-01 4.0227731871484346e-01 0 0 0
|
||||
21 4 5 -8.4719999999999995e-01 4.9064454390208301e+00 -4.0751205255383196e+00 -3.6215576073601046e+00 0 0 0
|
||||
22 4 2 4.2359999999999998e-01 4.3687453488627543e+00 -4.2054270536772504e+00 -4.4651491269372565e+00 0 0 0
|
||||
23 4 2 4.2359999999999998e-01 5.7374928154769504e+00 -3.5763355905184966e+00 -3.8820297194230728e+00 0 0 0
|
||||
24 5 5 -8.4719999999999995e-01 2.0684115301174013e+00 3.1518221747664397e+00 3.1554242678474576e+00 0 0 0
|
||||
25 5 2 4.2359999999999998e-01 1.2998381073113014e+00 3.2755513587518097e+00 2.5092990173114837e+00 0 0 0
|
||||
26 5 2 4.2359999999999998e-01 2.5807438597688113e+00 4.0120175892854135e+00 3.2133398379059099e+00 0 0 0
|
||||
27 6 5 -8.4719999999999995e-01 -1.9613581876744359e+00 -4.3556300596085160e+00 2.1101467673534788e+00 0 0 0
|
||||
28 6 2 4.2359999999999998e-01 -2.7406520384725965e+00 -4.0207251278130975e+00 1.5828689861678511e+00 0 0 0
|
||||
29 6 2 4.2359999999999998e-01 -1.3108232656499081e+00 -3.5992986322410760e+00 2.2680459788743503e+00 0 0 0
|
||||
|
||||
Velocities
|
||||
|
||||
1 7.7867804888392077e-04 5.8970331623292821e-04 -2.2179517633030531e-04
|
||||
2 2.7129529964126462e-03 4.6286427111164284e-03 3.5805549693846352e-03
|
||||
3 -1.2736791029204805e-03 1.6108674226414498e-03 -3.3618185901550799e-04
|
||||
4 -9.2828595122009308e-04 -1.2537885319521818e-03 -4.1204974953432108e-03
|
||||
5 -1.1800848061603740e-03 7.5424401975844038e-04 6.9023177964912290e-05
|
||||
6 -3.0914004879905335e-04 1.2755385764678133e-03 7.9574303350202582e-04
|
||||
7 -1.1037894966874103e-04 -7.6764845099077425e-04 -7.7217630460203659e-04
|
||||
8 3.9060281273221989e-04 -8.1444231918053418e-04 1.5134641148324972e-04
|
||||
9 1.2475530960659720e-03 -2.6608454451432528e-03 1.1117602907112732e-03
|
||||
10 4.5008983776042893e-04 4.9530197647538077e-04 -2.3336234361093645e-04
|
||||
11 -3.6977669078869707e-04 -1.5289071951960539e-03 -2.9176389881837113e-03
|
||||
12 1.0850834530183159e-03 -6.4965897903201833e-04 -1.2971152622619948e-03
|
||||
13 4.0754559196230639e-03 3.5043502394946119e-03 -7.8324487687854666e-04
|
||||
14 -1.3837220448746613e-04 -4.0656048637594394e-03 -3.9333461173944500e-03
|
||||
15 -4.3301707382721859e-03 -3.1802661664634938e-03 3.2037919043360571e-03
|
||||
16 -9.6715751018414326e-05 -5.0016572678960377e-04 1.4945658875149626e-03
|
||||
17 6.5692180538157174e-04 3.6635779995305095e-04 8.3495414466050911e-04
|
||||
18 -6.0936815808025862e-04 -9.3774557532468582e-04 -3.3558072507805731e-04
|
||||
19 -6.9919768291957119e-04 -3.6060777270430031e-03 4.2833405289822791e-03
|
||||
20 4.7777805013736515e-03 5.1003745845520452e-03 1.8002873923729241e-03
|
||||
21 -9.5568188553430398e-04 1.6594630943762931e-04 -1.8199788009966615e-04
|
||||
22 -3.3137518957653462e-03 -2.8683968287936054e-03 3.6384389958326871e-03
|
||||
23 2.4209481134686401e-04 -4.5457709985051130e-03 2.7663581642115042e-03
|
||||
24 2.5447450568861086e-04 4.8412447786110117e-04 -4.8021914527341357e-04
|
||||
25 4.3722771097312743e-03 -4.5184411669545515e-03 2.5200952006556795e-03
|
||||
26 -1.9250110555001179e-03 -3.0342169883610837e-03 3.5062814567984532e-03
|
||||
27 -2.6510179146429716e-04 3.6306203629019116e-04 -5.6235585400647747e-04
|
||||
28 -2.3068708109787484e-04 -8.5663070212203200e-04 2.1302563179109169e-03
|
||||
29 -2.5054744388303732e-03 -1.6773997805290820e-04 2.8436699761004796e-03
|
||||
|
||||
Bonds
|
||||
|
||||
1 5 1 2
|
||||
2 3 1 3
|
||||
3 2 3 4
|
||||
4 2 3 5
|
||||
5 1 3 6
|
||||
6 3 6 8
|
||||
7 4 6 7
|
||||
8 5 8 9
|
||||
9 3 8 10
|
||||
10 2 10 11
|
||||
11 1 10 12
|
||||
12 1 10 16
|
||||
13 2 12 13
|
||||
14 2 12 14
|
||||
15 2 12 15
|
||||
16 4 16 17
|
||||
17 5 18 19
|
||||
18 5 18 20
|
||||
19 5 21 22
|
||||
20 5 21 23
|
||||
21 5 24 25
|
||||
22 5 24 26
|
||||
23 5 27 28
|
||||
24 5 27 29
|
||||
|
||||
Angles
|
||||
|
||||
1 4 2 1 3
|
||||
2 4 1 3 5
|
||||
3 4 1 3 4
|
||||
4 4 1 3 6
|
||||
5 4 4 3 5
|
||||
6 2 5 3 6
|
||||
7 2 4 3 6
|
||||
8 3 3 6 7
|
||||
9 3 3 6 8
|
||||
10 3 7 6 8
|
||||
11 2 6 8 9
|
||||
12 2 9 8 10
|
||||
13 3 6 8 10
|
||||
14 2 8 10 11
|
||||
15 3 8 10 16
|
||||
16 2 11 10 12
|
||||
17 1 12 10 16
|
||||
18 1 8 10 12
|
||||
19 2 11 10 16
|
||||
20 2 10 12 15
|
||||
21 2 10 12 14
|
||||
22 2 10 12 13
|
||||
23 4 13 12 15
|
||||
24 4 13 12 14
|
||||
25 4 14 12 15
|
||||
26 4 10 16 17
|
||||
27 1 19 18 20
|
||||
28 1 22 21 23
|
||||
29 1 25 24 26
|
||||
30 1 28 27 29
|
||||
|
||||
Dihedrals
|
||||
|
||||
1 2 2 1 3 6
|
||||
2 2 2 1 3 4
|
||||
3 3 2 1 3 5
|
||||
4 1 1 3 6 8
|
||||
5 1 1 3 6 7
|
||||
6 5 4 3 6 8
|
||||
7 5 4 3 6 7
|
||||
8 5 5 3 6 8
|
||||
9 5 5 3 6 7
|
||||
10 4 3 6 8 9
|
||||
11 3 3 6 8 10
|
||||
12 3 7 6 8 9
|
||||
13 4 7 6 8 10
|
||||
14 2 6 8 10 12
|
||||
15 2 6 8 10 16
|
||||
16 2 6 8 10 11
|
||||
17 2 9 8 10 12
|
||||
18 4 9 8 10 16
|
||||
19 5 9 8 10 11
|
||||
20 5 8 10 12 13
|
||||
21 1 8 10 12 14
|
||||
22 5 8 10 12 15
|
||||
23 4 8 10 16 17
|
||||
24 5 11 10 12 13
|
||||
25 5 11 10 12 14
|
||||
26 5 11 10 12 15
|
||||
27 2 11 10 16 17
|
||||
28 2 12 10 16 17
|
||||
29 5 16 10 12 13
|
||||
30 5 16 10 12 14
|
||||
31 5 16 10 12 15
|
||||
|
||||
Impropers
|
||||
|
||||
1 1 6 3 8 7
|
||||
2 2 8 6 10 9
|
||||
@ -1 +0,0 @@
|
||||
../force-styles/tests/in.fourmol
|
||||
30
unittest/commands/in.fourmol
Normal file
30
unittest/commands/in.fourmol
Normal file
@ -0,0 +1,30 @@
|
||||
variable newton_pair index on
|
||||
variable newton_bond index on
|
||||
variable bond_factor index 0.10
|
||||
variable angle_factor index 0.25
|
||||
variable dihedral_factor index 0.50
|
||||
variable units index real
|
||||
variable input_dir index .
|
||||
variable data_file index ${input_dir}/data.fourmol
|
||||
variable pair_style index 'zero 8.0'
|
||||
variable bond_style index zero
|
||||
variable angle_style index zero
|
||||
variable dihedral_style index zero
|
||||
variable improper_style index zero
|
||||
variable t_target index 100.0
|
||||
|
||||
atom_style full
|
||||
atom_modify map array
|
||||
neigh_modify delay 2 every 2 check no
|
||||
units ${units}
|
||||
timestep 0.1
|
||||
newton ${newton_pair} ${newton_bond}
|
||||
special_bonds lj/coul ${bond_factor} ${angle_factor} ${dihedral_factor}
|
||||
|
||||
pair_style ${pair_style}
|
||||
bond_style ${bond_style}
|
||||
angle_style ${angle_style}
|
||||
dihedral_style ${dihedral_style}
|
||||
improper_style ${improper_style}
|
||||
|
||||
read_data ${data_file}
|
||||
@ -34,7 +34,6 @@ using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ExitedWithCode;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class GroupTest : public LAMMPSTest {
|
||||
|
||||
@ -33,7 +33,6 @@ bool verbose = false;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class KimCommandsTest : public LAMMPSTest {
|
||||
|
||||
@ -35,8 +35,8 @@ bool verbose = false;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ContainsRegex;
|
||||
using ::testing::ExitedWithCode;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class LatticeRegionTest : public LAMMPSTest {
|
||||
@ -82,7 +82,7 @@ TEST_F(LatticeRegionTest, lattice_sc)
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("lattice sc 1.0 spacing 1.5 2.0 3.0");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Lattice spacing in x,y,z = 1.5.* 2.* 3.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Lattice spacing in x,y,z = 1.5.* 2.* 3.*"));
|
||||
|
||||
auto lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->xlattice, 1.5);
|
||||
@ -92,7 +92,7 @@ TEST_F(LatticeRegionTest, lattice_sc)
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("lattice sc 2.0");
|
||||
output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Lattice spacing in x,y,z = 2.* 2.* 2.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Lattice spacing in x,y,z = 2.* 2.* 2.*"));
|
||||
|
||||
lattice = lmp->domain->lattice;
|
||||
ASSERT_EQ(lattice->style, Lattice::SC);
|
||||
|
||||
@ -32,7 +32,6 @@ bool verbose = false;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::MatchesRegex;
|
||||
|
||||
#define GETIDX(i) lmp->atom->map(i)
|
||||
|
||||
@ -47,8 +46,8 @@ protected:
|
||||
LAMMPSTest::SetUp();
|
||||
if (info->has_style("atom", "full")) {
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("variable input_dir index " STRINGIFY(TEST_INPUT_FOLDER));
|
||||
command("include ${input_dir}/in.fourmol");
|
||||
command("variable input_dir index \"" STRINGIFY(TEST_INPUT_FOLDER) "\"");
|
||||
command("include \"${input_dir}/in.fourmol\"");
|
||||
END_HIDE_OUTPUT();
|
||||
}
|
||||
}
|
||||
|
||||
@ -39,8 +39,8 @@ bool verbose = false;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ContainsRegex;
|
||||
using ::testing::ExitedWithCode;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class SimpleCommandsTest : public LAMMPSTest {
|
||||
@ -394,62 +394,62 @@ TEST_F(SimpleCommandsTest, Plugin)
|
||||
lmp->input->one(fmt::format(loadfmt, "hello"));
|
||||
auto text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Loading plugin: Hello world command.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Loading plugin: Hello world command.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one(fmt::format(loadfmt, "xxx"));
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Open of file .*xxx.* failed.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Open of file .*xxx.* failed.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one(fmt::format(loadfmt, "nve2"));
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Loading plugin: NVE2 variant fix style.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Loading plugin: NVE2 variant fix style.*"));
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin list");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*1: command style plugin hello"
|
||||
".*2: fix style plugin nve2.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*1: command style plugin hello"
|
||||
".*2: fix style plugin nve2.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one(fmt::format(loadfmt, "hello"));
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Ignoring load of command style hello: "
|
||||
"must unload existing hello plugin.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Ignoring load of command style hello: "
|
||||
"must unload existing hello plugin.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin unload command hello");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Unloading command style hello.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Unloading command style hello.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin unload pair nve2");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Ignoring unload of pair style nve2: not from a plugin.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Ignoring unload of pair style nve2: not from a plugin.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin unload fix nve2");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Unloading fix style nve2.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Unloading fix style nve2.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin unload fix nve");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Ignoring unload of fix style nve: not from a plugin.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Ignoring unload of fix style nve: not from a plugin.*"));
|
||||
|
||||
::testing::internal::CaptureStdout();
|
||||
lmp->input->one("plugin list");
|
||||
text = ::testing::internal::GetCapturedStdout();
|
||||
if (verbose) std::cout << text;
|
||||
ASSERT_THAT(text, MatchesRegex(".*Currently loaded plugins.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*Currently loaded plugins.*"));
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -478,7 +478,13 @@ TEST_F(SimpleCommandsTest, Shell)
|
||||
|
||||
test_var = getenv("TEST_VARIABLE");
|
||||
ASSERT_NE(test_var, nullptr);
|
||||
#if defined(_WIN32)
|
||||
// we cannot create empty environment variables on Windows so platform::putenv() sets their
|
||||
// value to "1"
|
||||
ASSERT_THAT(test_var, StrEq("1"));
|
||||
#else
|
||||
ASSERT_THAT(test_var, StrEq(""));
|
||||
#endif
|
||||
}
|
||||
|
||||
TEST_F(SimpleCommandsTest, CiteMe)
|
||||
@ -495,8 +501,9 @@ TEST_F(SimpleCommandsTest, CiteMe)
|
||||
std::string text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// find the two unique citations, but not the third
|
||||
ASSERT_THAT(text, MatchesRegex(".*one.*two.*"));
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*one.*two.*one.*")));
|
||||
ASSERT_THAT(text, ContainsRegex("test citation one.\n.*test citation two.*"));
|
||||
ASSERT_THAT(text, Not(ContainsRegex(
|
||||
"test citation one.\n.*test citation two.*\n.*test citation one.*")));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
lmp->citeme->add("test citation one:\n 0\n");
|
||||
@ -507,8 +514,8 @@ TEST_F(SimpleCommandsTest, CiteMe)
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// find the forth (only differs in long citation) and sixth added citation
|
||||
ASSERT_THAT(text, MatchesRegex(".*one.*three.*"));
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*two.*")));
|
||||
ASSERT_THAT(text, ContainsRegex("test citation one.*\n.*test citation three.*"));
|
||||
ASSERT_THAT(text, Not(ContainsRegex("test_citation two.*\n")));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
lmp->citeme->add("test citation one:\n 1\n");
|
||||
@ -521,7 +528,7 @@ TEST_F(SimpleCommandsTest, CiteMe)
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
// no new citation. no CITE-CITE-CITE- lines
|
||||
ASSERT_THAT(text, Not(MatchesRegex(".*CITE-CITE-CITE-CITE.*")));
|
||||
ASSERT_THAT(text, Not(ContainsRegex(".*CITE-CITE-CITE-CITE.*")));
|
||||
}
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
|
||||
@ -36,8 +36,8 @@ using LAMMPS_NS::MathConst::MY_PI;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ContainsRegex;
|
||||
using ::testing::ExitedWithCode;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class VariableTest : public LAMMPSTest {
|
||||
@ -317,7 +317,7 @@ TEST_F(VariableTest, Expressions)
|
||||
ASSERT_TRUE(variable->equalstyle(ivar));
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal(ivar), 2.0);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_three"), 3.0);
|
||||
ASSERT_NEAR(variable->compute_equal("v_four"), MY_PI,1.0e-14);
|
||||
ASSERT_NEAR(variable->compute_equal("v_four"), MY_PI, 1.0e-14);
|
||||
ASSERT_GE(variable->compute_equal("v_five"), 20210310);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_seven"), -1);
|
||||
ASSERT_DOUBLE_EQ(variable->compute_equal("v_eight"), 2.5);
|
||||
@ -394,58 +394,58 @@ TEST_F(VariableTest, IfCommand)
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if 1>0 then 'print \"bingo!\"'");
|
||||
auto text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if 1>2 then 'print \"bingo!\"' else 'print \"nope?\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*nope\?.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*nope\?.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (1<=0) then 'print \"bingo!\"' else 'print \"nope?\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*nope\?.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*nope\?.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (-1.0e-1<0.0E+0)|^(1<0) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (${one}==1.0)&&(2>=1) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !((${one}!=1.0)||(2|^1)) then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if (1>=2)&&(0&&1) then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !1 then 'print \"missed\"' else 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if !(a==b) then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if x==x|^1==0 then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("if x!=x|^a!=b then 'print \"bingo!\"'");
|
||||
text = END_CAPTURE_OUTPUT();
|
||||
|
||||
ASSERT_THAT(text, MatchesRegex(".*bingo!.*"));
|
||||
ASSERT_THAT(text, ContainsRegex(".*bingo!.*"));
|
||||
|
||||
TEST_FAILURE(".*ERROR: Invalid Boolean syntax in if command.*",
|
||||
command("if () then 'print \"bingo!\"'"););
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
|
||||
add_executable(test_lammps_class test_lammps_class.cpp)
|
||||
target_link_libraries(test_lammps_class PRIVATE lammps GTest::GMockMain)
|
||||
add_test(LammpsClass test_lammps_class)
|
||||
add_test(NAME LammpsClass COMMAND test_lammps_class)
|
||||
set_tests_properties(LammpsClass PROPERTIES ENVIRONMENT "OMP_NUM_THREADS=1")
|
||||
|
||||
add_executable(test_input_class test_input_class.cpp)
|
||||
target_link_libraries(test_input_class PRIVATE lammps GTest::GTestMain)
|
||||
add_test(InputClass test_input_class)
|
||||
add_test(NAME InputClass COMMAND test_input_class)
|
||||
|
||||
add_executable(test_error_class test_error_class.cpp)
|
||||
target_link_libraries(test_error_class PRIVATE lammps GTest::GMock)
|
||||
add_test(ErrorClass test_error_class)
|
||||
add_test(NAME ErrorClass COMMAND test_error_class)
|
||||
|
||||
@ -17,7 +17,7 @@ bool verbose = false;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::ContainsRegex;
|
||||
using utils::split_words;
|
||||
|
||||
class Error_class : public LAMMPSTest {
|
||||
@ -39,7 +39,7 @@ TEST_F(Error_class, message)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
error->message(FLERR, "one message");
|
||||
});
|
||||
ASSERT_THAT(output, MatchesRegex("one message .*test_error_class.cpp:.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("one message .*test_error_class.cpp:.*"));
|
||||
};
|
||||
|
||||
TEST_F(Error_class, warning)
|
||||
@ -48,7 +48,7 @@ TEST_F(Error_class, warning)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
error->warning(FLERR, "one warning");
|
||||
});
|
||||
ASSERT_THAT(output, MatchesRegex("WARNING: one warning .*test_error_class.cpp:.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("WARNING: one warning .*test_error_class.cpp:.*"));
|
||||
ASSERT_THAT(error->get_maxwarn(), 100);
|
||||
|
||||
// warnings disabled
|
||||
@ -72,7 +72,7 @@ TEST_F(Error_class, warning)
|
||||
output = CAPTURE_OUTPUT([&] {
|
||||
thermo->lost_check();
|
||||
});
|
||||
ASSERT_THAT(output, MatchesRegex("WARNING: Too many warnings: 5 vs 2. All future.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("WARNING: Too many warnings: 5 vs 2. All future.*"));
|
||||
|
||||
output = CAPTURE_OUTPUT([&] {
|
||||
error->warning(FLERR, "one warning");
|
||||
@ -91,7 +91,7 @@ TEST_F(Error_class, warning)
|
||||
output = CAPTURE_OUTPUT([&] {
|
||||
error->warning(FLERR, "one warning");
|
||||
});
|
||||
ASSERT_THAT(output, MatchesRegex("WARNING: one warning.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("WARNING: one warning.*"));
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("thermo_modify warn default");
|
||||
|
||||
@ -60,13 +60,13 @@ TEST_F(Input_commands, from_file)
|
||||
const char cont_file[] = "in.cont";
|
||||
|
||||
fp = fopen(demo_file, "w");
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
fputs(inp, fp);
|
||||
fputc('\n', fp);
|
||||
}
|
||||
fclose(fp);
|
||||
fp = fopen(cont_file, "w");
|
||||
for (auto & inp : cont_input) {
|
||||
for (auto &inp : cont_input) {
|
||||
fputs(inp, fp);
|
||||
fputc('\n', fp);
|
||||
}
|
||||
@ -84,7 +84,7 @@ TEST_F(Input_commands, from_file)
|
||||
TEST_F(Input_commands, from_line)
|
||||
{
|
||||
EXPECT_EQ(lmp->atom->natoms, 0);
|
||||
for (auto & inp : demo_input) {
|
||||
for (auto &inp : demo_input) {
|
||||
lmp->input->one(inp);
|
||||
}
|
||||
EXPECT_EQ(lmp->atom->natoms, 1);
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
#include "gmock/gmock.h"
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::ContainsRegex;
|
||||
using ::testing::StartsWith;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
@ -90,14 +90,14 @@ TEST_F(LAMMPS_plain, InitMembers)
|
||||
EXPECT_EQ(lmp->memoryKK, nullptr);
|
||||
EXPECT_NE(lmp->python, nullptr);
|
||||
EXPECT_EQ(lmp->citeme, nullptr);
|
||||
if (LAMMPS::has_git_info) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit, "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch, "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor, "");
|
||||
if (LAMMPS::has_git_info()) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor(), "");
|
||||
} else {
|
||||
EXPECT_STREQ(LAMMPS::git_commit, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_commit(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor(), "(unknown)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -225,14 +225,14 @@ TEST_F(LAMMPS_omp, InitMembers)
|
||||
EXPECT_EQ(lmp->memoryKK, nullptr);
|
||||
EXPECT_NE(lmp->python, nullptr);
|
||||
EXPECT_NE(lmp->citeme, nullptr);
|
||||
if (LAMMPS::has_git_info) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit, "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch, "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor, "");
|
||||
if (LAMMPS::has_git_info()) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor(), "");
|
||||
} else {
|
||||
EXPECT_STREQ(LAMMPS::git_commit, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_commit(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor(), "(unknown)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -312,14 +312,14 @@ TEST_F(LAMMPS_kokkos, InitMembers)
|
||||
EXPECT_NE(lmp->memoryKK, nullptr);
|
||||
EXPECT_NE(lmp->python, nullptr);
|
||||
EXPECT_NE(lmp->citeme, nullptr);
|
||||
if (LAMMPS::has_git_info) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit, "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch, "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor, "");
|
||||
if (LAMMPS::has_git_info()) {
|
||||
EXPECT_STRNE(LAMMPS::git_commit(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_branch(), "");
|
||||
EXPECT_STRNE(LAMMPS::git_descriptor(), "");
|
||||
} else {
|
||||
EXPECT_STREQ(LAMMPS::git_commit, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor, "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_commit(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_branch(), "(unknown)");
|
||||
EXPECT_STREQ(LAMMPS::git_descriptor(), "(unknown)");
|
||||
}
|
||||
}
|
||||
|
||||
@ -339,7 +339,7 @@ TEST(LAMMPS_init, OpenMP)
|
||||
::testing::internal::CaptureStdout();
|
||||
LAMMPS *lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
std::string output = ::testing::internal::GetCapturedStdout();
|
||||
EXPECT_THAT(output, MatchesRegex(".*using 2 OpenMP thread.*per MPI task.*"));
|
||||
EXPECT_THAT(output, ContainsRegex(".*using 2 OpenMP thread.*per MPI task.*"));
|
||||
|
||||
if (LAMMPS_NS::Info::has_accelerator_feature("OPENMP", "api", "openmp"))
|
||||
EXPECT_EQ(lmp->comm->nthreads, 2);
|
||||
@ -372,8 +372,8 @@ TEST(LAMMPS_init, NoOpenMP)
|
||||
::testing::internal::CaptureStdout();
|
||||
LAMMPS *lmp = new LAMMPS(argc, argv, MPI_COMM_WORLD);
|
||||
std::string output = ::testing::internal::GetCapturedStdout();
|
||||
EXPECT_THAT(output,
|
||||
MatchesRegex(".*OMP_NUM_THREADS environment is not set.*Defaulting to 1 thread.*"));
|
||||
EXPECT_THAT(output, ContainsRegex(
|
||||
".*OMP_NUM_THREADS environment is not set.*Defaulting to 1 thread.*"));
|
||||
EXPECT_EQ(lmp->comm->nthreads, 1);
|
||||
::testing::internal::CaptureStdout();
|
||||
delete lmp;
|
||||
|
||||
@ -46,11 +46,7 @@ else()
|
||||
endif()
|
||||
target_include_directories(style_tests PRIVATE ${LAMMPS_SOURCE_DIR})
|
||||
target_link_libraries(style_tests PUBLIC gmock Yaml::Yaml lammps)
|
||||
if(BUILD_MPI)
|
||||
target_link_libraries(style_tests PUBLIC MPI::MPI_CXX)
|
||||
else()
|
||||
target_link_libraries(style_tests PUBLIC mpi_stubs)
|
||||
endif()
|
||||
|
||||
# propagate sanitizer options to test tools
|
||||
if(ENABLE_SANITIZER AND (NOT (ENABLE_SANITIZER STREQUAL "none")))
|
||||
if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.13)
|
||||
@ -72,6 +68,28 @@ if(FFT_SINGLE)
|
||||
target_compile_definitions(test_pair_style PRIVATE -DFFT_SINGLE)
|
||||
endif()
|
||||
|
||||
# prepare environment for testers
|
||||
if(WIN32)
|
||||
set(FORCE_TEST_ENVIRONMENT PYTHONPATH=${TEST_INPUT_FOLDER})
|
||||
else()
|
||||
set(FORCE_TEST_ENVIRONMENT PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH})
|
||||
endif()
|
||||
list(APPEND FORCE_TEST_ENVIRONMENT "PYTHONUNBUFFERED=1")
|
||||
list(APPEND FORCE_TEST_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR}/$<CONFIG>)
|
||||
else()
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR})
|
||||
endif()
|
||||
if(APPLE)
|
||||
list(APPEND FORCE_TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{DYLD_LIBRARY_PATH}")
|
||||
elseif(WIN32)
|
||||
list(APPEND FORCE_TEST_ENVIRONMENT "LAMMPSDLLPATH=${LAMMPS_LIB_PATH}")
|
||||
else()
|
||||
list(APPEND FORCE_TEST_ENVIRONMENT "LD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{LD_LIBRARY_PATH}")
|
||||
endif()
|
||||
|
||||
# tests for molecular systems and related pair styles
|
||||
file(GLOB MOL_PAIR_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/mol-pair-*.yaml)
|
||||
# cannot test MSM with single precision data
|
||||
@ -81,8 +99,12 @@ endif()
|
||||
foreach(TEST ${MOL_PAIR_TESTS})
|
||||
string(REGEX REPLACE "^.*mol-pair-(.*)\.yaml" "MolPairStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -91,8 +113,12 @@ file(GLOB ATOMIC_PAIR_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/atomic-p
|
||||
foreach(TEST ${ATOMIC_PAIR_TESTS})
|
||||
string(REGEX REPLACE "^.*atomic-pair-(.*)\.yaml" "AtomicPairStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -101,8 +127,12 @@ file(GLOB MANYBODY_PAIR_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/manybo
|
||||
foreach(TEST ${MANYBODY_PAIR_TESTS})
|
||||
string(REGEX REPLACE "^.*manybody-pair-(.*)\.yaml" "ManybodyPairStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -114,8 +144,12 @@ file(GLOB BOND_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/bond-*.yaml)
|
||||
foreach(TEST ${BOND_TESTS})
|
||||
string(REGEX REPLACE "^.*bond-(.*)\.yaml" "BondStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_bond_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_bond_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -127,8 +161,12 @@ file(GLOB ANGLE_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/angle-*.yaml)
|
||||
foreach(TEST ${ANGLE_TESTS})
|
||||
string(REGEX REPLACE "^.*angle-(.*)\.yaml" "AngleStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_angle_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_angle_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -141,8 +179,12 @@ endif()
|
||||
foreach(TEST ${KSPACE_TESTS})
|
||||
string(REGEX REPLACE "^.*kspace-(.*)\.yaml" "KSpaceStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_pair_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "${FORCE_TEST_ENVIRONMENT}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -158,8 +200,16 @@ file(GLOB FIX_TIMESTEP_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/fix-tim
|
||||
foreach(TEST ${FIX_TIMESTEP_TESTS})
|
||||
string(REGEX REPLACE "^.*fix-timestep-(.*)\.yaml" "FixTimestep:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_fix_timestep ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_fix_timestep ${TEST})
|
||||
if(WIN32)
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}\\\;${LAMMPS_PYTHON_DIR}")
|
||||
else()
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH}")
|
||||
endif()
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -171,7 +221,11 @@ file(GLOB DIHEDRAL_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/dihedral-*.
|
||||
foreach(TEST ${DIHEDRAL_TESTS})
|
||||
string(REGEX REPLACE "^.*dihedral-(.*)\.yaml" "DihedralStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_dihedral_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_dihedral_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
@ -184,7 +238,11 @@ file(GLOB IMPROPER_TESTS LIST_DIRECTORIES false ${TEST_INPUT_FOLDER}/improper-*.
|
||||
foreach(TEST ${IMPROPER_TESTS})
|
||||
string(REGEX REPLACE "^.*improper-(.*)\.yaml" "ImproperStyle:\\1" TNAME ${TEST})
|
||||
extract_tags(TEST_TAGS ${TEST})
|
||||
add_test(NAME ${TNAME} COMMAND test_improper_style ${TEST} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
list(FIND TEST_TAGS "no${CMAKE_SYSTEM_NAME}" _SKIPME)
|
||||
if(_SKIPME GREATER_EQUAL 0)
|
||||
continue()
|
||||
endif()
|
||||
add_test(NAME ${TNAME} COMMAND test_improper_style ${TEST})
|
||||
set_tests_properties(${TNAME} PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${TEST_INPUT_FOLDER}:$ENV{PYTHONPATH}")
|
||||
set_tests_properties(${TNAME} PROPERTIES LABELS "${TEST_TAGS}")
|
||||
endforeach()
|
||||
|
||||
@ -289,7 +289,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||
// run_stress
|
||||
stress = lmp->force->angle->virial;
|
||||
block = fmt::format("{:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e}", stress[0],
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
|
||||
@ -289,7 +289,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||
// run_stress
|
||||
stress = lmp->force->bond->virial;
|
||||
block = fmt::format("{:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e}", stress[0],
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
|
||||
@ -374,7 +374,7 @@ void TestConfigReader::tags(const yaml_event_t &event)
|
||||
{
|
||||
std::stringstream data((char *)event.data.scalar.value);
|
||||
config.tags.clear();
|
||||
for (std::string tag; std::getline(data, tag, ','); ) {
|
||||
for (std::string tag; std::getline(data, tag, ',');) {
|
||||
config.tags.push_back(trim(tag));
|
||||
}
|
||||
}
|
||||
|
||||
@ -292,7 +292,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||
// run_stress
|
||||
stress = lmp->force->dihedral->virial;
|
||||
block = fmt::format("{:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e}", stress[0],
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
|
||||
@ -209,8 +209,8 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||
if (fix->thermo_virial) {
|
||||
auto stress = fix->virial;
|
||||
block = fmt::format("{:23.16e} {:23.16e} {:23.16e} "
|
||||
"{:23.16e} {:23.16e} {:23.16e}",
|
||||
stress[0], stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
"{:23.16e} {:23.16e} {:23.16e}",
|
||||
stress[0], stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
writer.emit_block("run_stress", block);
|
||||
}
|
||||
|
||||
|
||||
@ -283,7 +283,7 @@ void generate_yaml_file(const char *outfile, const TestConfig &config)
|
||||
// run_stress
|
||||
stress = lmp->force->improper->virial;
|
||||
block = fmt::format("{:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e} {:23.16e}", stress[0],
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
stress[1], stress[2], stress[3], stress[4], stress[5]);
|
||||
writer.emit_block("run_stress", block);
|
||||
|
||||
block.clear();
|
||||
|
||||
@ -1,6 +1,5 @@
|
||||
---
|
||||
lammps_version: 7 Jan 2022
|
||||
tags: generated
|
||||
date_generated: Sat Jan 15 17:42:24 2022
|
||||
epsilon: 5e-14
|
||||
skip_tests:
|
||||
|
||||
@ -1,49 +1,49 @@
|
||||
|
||||
add_executable(test_atom_styles test_atom_styles.cpp)
|
||||
target_link_libraries(test_atom_styles PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME AtomStyles COMMAND test_atom_styles WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME AtomStyles COMMAND test_atom_styles)
|
||||
|
||||
add_executable(test_image_flags test_image_flags.cpp)
|
||||
target_link_libraries(test_image_flags PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME ImageFlags COMMAND test_image_flags WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME ImageFlags COMMAND test_image_flags)
|
||||
|
||||
add_executable(test_input_convert test_input_convert.cpp)
|
||||
target_link_libraries(test_input_convert PRIVATE lammps GTest::GMockMain)
|
||||
add_test(NAME InputConvert COMMAND test_input_convert WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME InputConvert COMMAND test_input_convert)
|
||||
|
||||
add_executable(test_molecule_file test_molecule_file.cpp)
|
||||
target_link_libraries(test_molecule_file PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME MoleculeFile COMMAND test_molecule_file WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME MoleculeFile COMMAND test_molecule_file)
|
||||
|
||||
add_executable(test_pair_unit_convert test_pair_unit_convert.cpp)
|
||||
target_link_libraries(test_pair_unit_convert PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME PairUnitConvert COMMAND test_pair_unit_convert WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME PairUnitConvert COMMAND test_pair_unit_convert)
|
||||
set_tests_properties(PairUnitConvert PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
add_executable(test_potential_file_reader test_potential_file_reader.cpp)
|
||||
target_link_libraries(test_potential_file_reader PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME PotentialFileReader COMMAND test_potential_file_reader WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME PotentialFileReader COMMAND test_potential_file_reader)
|
||||
set_tests_properties(PotentialFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
if(PKG_MANYBODY)
|
||||
add_executable(test_eim_potential_file_reader test_eim_potential_file_reader.cpp)
|
||||
target_link_libraries(test_eim_potential_file_reader PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME EIMPotentialFileReader COMMAND test_eim_potential_file_reader WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME EIMPotentialFileReader COMMAND test_eim_potential_file_reader)
|
||||
set_tests_properties(EIMPotentialFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
endif()
|
||||
|
||||
add_executable(test_text_file_reader test_text_file_reader.cpp)
|
||||
target_link_libraries(test_text_file_reader PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME TextFileReader COMMAND test_text_file_reader WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME TextFileReader COMMAND test_text_file_reader)
|
||||
set_tests_properties(TextFileReader PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
add_executable(test_file_operations test_file_operations.cpp)
|
||||
target_link_libraries(test_file_operations PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME FileOperations COMMAND test_file_operations WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME FileOperations COMMAND test_file_operations)
|
||||
|
||||
add_executable(test_dump_atom test_dump_atom.cpp)
|
||||
target_link_libraries(test_dump_atom PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME DumpAtom COMMAND test_dump_atom WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpAtom COMMAND test_dump_atom)
|
||||
set_tests_properties(DumpAtom PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
if(PKG_COMPRESS)
|
||||
@ -64,19 +64,19 @@ if(PKG_COMPRESS)
|
||||
add_executable(test_dump_xyz_compressed test_dump_xyz_compressed.cpp compressed_dump_test_main.cpp)
|
||||
target_link_libraries(test_dump_xyz_compressed PRIVATE lammps GTest::GMock)
|
||||
|
||||
add_test(NAME DumpAtomGZ COMMAND test_dump_atom_compressed gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpAtomGZ COMMAND test_dump_atom_compressed gz)
|
||||
set_tests_properties(DumpAtomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}")
|
||||
|
||||
add_test(NAME DumpCustomGZ COMMAND test_dump_custom_compressed gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCustomGZ COMMAND test_dump_custom_compressed gz)
|
||||
set_tests_properties(DumpCustomGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}")
|
||||
|
||||
add_test(NAME DumpCfgGZ COMMAND test_dump_cfg_compressed gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCfgGZ COMMAND test_dump_cfg_compressed gz)
|
||||
set_tests_properties(DumpCfgGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}")
|
||||
|
||||
add_test(NAME DumpLocalGZ COMMAND test_dump_local_compressed gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpLocalGZ COMMAND test_dump_local_compressed gz)
|
||||
set_tests_properties(DumpLocalGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}")
|
||||
|
||||
add_test(NAME DumpXYZGZ COMMAND test_dump_xyz_compressed gz WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpXYZGZ COMMAND test_dump_xyz_compressed gz)
|
||||
set_tests_properties(DumpXYZGZ PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${GZIP_BINARY}")
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
@ -84,43 +84,43 @@ if(PKG_COMPRESS)
|
||||
find_program(ZSTD_BINARY NAMES zstd)
|
||||
|
||||
if(Zstd_FOUND AND ZSTD_BINARY)
|
||||
add_test(NAME DumpAtomZstd COMMAND test_dump_atom_compressed zstd WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpAtomZstd COMMAND test_dump_atom_compressed zstd)
|
||||
set_tests_properties(DumpAtomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}")
|
||||
|
||||
add_test(NAME DumpCustomZstd COMMAND test_dump_custom_compressed zstd WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCustomZstd COMMAND test_dump_custom_compressed zstd)
|
||||
set_tests_properties(DumpCustomZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}")
|
||||
|
||||
add_test(NAME DumpCfgZstd COMMAND test_dump_cfg_compressed zstd WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCfgZstd COMMAND test_dump_cfg_compressed zstd)
|
||||
set_tests_properties(DumpCfgZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}")
|
||||
|
||||
add_test(NAME DumpLocalZstd COMMAND test_dump_local_compressed zstd WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpLocalZstd COMMAND test_dump_local_compressed zstd)
|
||||
set_tests_properties(DumpLocalZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}")
|
||||
|
||||
add_test(NAME DumpXYZZstd COMMAND test_dump_xyz_compressed zstd WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpXYZZstd COMMAND test_dump_xyz_compressed zstd)
|
||||
set_tests_properties(DumpXYZZstd PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};COMPRESS_BINARY=${ZSTD_BINARY}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_executable(test_dump_custom test_dump_custom.cpp)
|
||||
target_link_libraries(test_dump_custom PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME DumpCustom COMMAND test_dump_custom WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCustom COMMAND test_dump_custom)
|
||||
set_tests_properties(DumpCustom PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
add_executable(test_dump_cfg test_dump_cfg.cpp)
|
||||
target_link_libraries(test_dump_cfg PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME DumpCfg COMMAND test_dump_cfg WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpCfg COMMAND test_dump_cfg)
|
||||
set_tests_properties(DumpCfg PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
add_executable(test_dump_local test_dump_local.cpp)
|
||||
target_link_libraries(test_dump_local PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME DumpLocal COMMAND test_dump_local WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpLocal COMMAND test_dump_local)
|
||||
set_tests_properties(DumpLocal PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
|
||||
if(PKG_NETCDF)
|
||||
find_program(NCDUMP NAMES ncdump ncdump.exe)
|
||||
add_executable(test_dump_netcdf test_dump_netcdf.cpp)
|
||||
target_link_libraries(test_dump_netcdf PRIVATE lammps GTest::GMock)
|
||||
add_test(NAME DumpNetCDF COMMAND test_dump_netcdf WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
add_test(NAME DumpNetCDF COMMAND test_dump_netcdf)
|
||||
if(NOT (NCDUMP STREQUAL "NCDUMP-NOTFOUND"))
|
||||
set_tests_properties(DumpNetCDF PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};NCDUMP_BINARY=${NCDUMP}")
|
||||
endif()
|
||||
|
||||
@ -2123,7 +2123,7 @@ TEST_F(AtomStyleTest, body_nparticle)
|
||||
"12.0 0.0 12.0 0.0 0.0 0.0\n"
|
||||
"0.0 1.0 0.0\n"
|
||||
"0.0 -3.0 0.0\n";
|
||||
FILE *fp = fopen("input_atom_styles.data", "w");
|
||||
FILE *fp = fopen("input_atom_styles.data", "w");
|
||||
fputs(data_file, fp);
|
||||
fclose(fp);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
@ -4809,6 +4809,446 @@ TEST_F(AtomStyleTest, property_atom)
|
||||
EXPECT_NEAR(three[GETIDX(2)], 0.5, EPSILON);
|
||||
}
|
||||
|
||||
TEST_F(AtomStyleTest, oxdna)
|
||||
{
|
||||
if (!LAMMPS::is_installed_pkg("MOLECULE")) GTEST_SKIP();
|
||||
if (!LAMMPS::is_installed_pkg("ASPHERE")) GTEST_SKIP();
|
||||
if (!LAMMPS::is_installed_pkg("CG-DNA")) GTEST_SKIP();
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("atom_style hybrid bond ellipsoid oxdna");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
AtomState expected;
|
||||
expected.atom_style = "hybrid";
|
||||
expected.molecular = Atom::MOLECULAR;
|
||||
expected.tag_enable = 1;
|
||||
expected.molecule_flag = 1;
|
||||
expected.ellipsoid_flag = 1;
|
||||
expected.rmass_flag = 1;
|
||||
expected.torque_flag = 1;
|
||||
expected.angmom_flag = 1;
|
||||
expected.has_type = true;
|
||||
expected.has_mask = true;
|
||||
expected.has_image = true;
|
||||
expected.has_x = true;
|
||||
expected.has_v = true;
|
||||
expected.has_f = true;
|
||||
expected.has_bonds = true;
|
||||
expected.has_nspecial = true;
|
||||
expected.has_special = true;
|
||||
expected.map_style = 3;
|
||||
|
||||
ASSERT_ATOM_STATE_EQ(lmp->atom, expected);
|
||||
|
||||
auto hybrid = (AtomVecHybrid *)lmp->atom->avec;
|
||||
ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid"));
|
||||
ASSERT_EQ(hybrid->nstyles, 3);
|
||||
ASSERT_THAT(std::string(hybrid->keywords[0]), Eq("bond"));
|
||||
ASSERT_THAT(std::string(hybrid->keywords[1]), Eq("ellipsoid"));
|
||||
ASSERT_THAT(std::string(hybrid->keywords[2]), Eq("oxdna"));
|
||||
ASSERT_NE(hybrid->styles[0], nullptr);
|
||||
ASSERT_NE(hybrid->styles[1], nullptr);
|
||||
ASSERT_NE(hybrid->styles[2], nullptr);
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units lj");
|
||||
command("dimension 3");
|
||||
command("newton on");
|
||||
command("boundary p p p");
|
||||
command("atom_modify sort 0 1.0");
|
||||
command("neighbor 2.0 bin");
|
||||
command("neigh_modify every 1 delay 0 check yes");
|
||||
command("region mybox block -20 20 -20 20 -20 20");
|
||||
command("create_box 4 mybox bond/types 1 extra/bond/per/atom 2 extra/special/per/atom 4");
|
||||
command("create_atoms 1 single -0.33741452300167507 -0.43708835412476305 0.6450685042019271");
|
||||
command("create_atoms 2 single -0.32142606102826937 -0.7137743037592722 1.1817366147004618");
|
||||
command("create_atoms 3 single -0.130363628207774 -0.9147144801536078 1.62581312195109");
|
||||
command("create_atoms 4 single 0.16795127962282844 -0.9808507459807022 2.0894908590909003");
|
||||
command("create_atoms 1 single 0.46370423490634166 -0.7803347954883079 2.4251986815515827");
|
||||
command("create_atoms 4 single -0.4462950185476711 0.09062163051035639 2.4668941268777607");
|
||||
command("create_atoms 1 single -0.03377054097560965 0.20979847489755046 2.078208732038921");
|
||||
command("create_atoms 2 single 0.3297325391466579 0.17657587120899895 1.7206328374934152");
|
||||
command("create_atoms 3 single 0.6063699309305985 0.04682595158675571 1.2335049647817748");
|
||||
command("create_atoms 4 single 0.8003979559814726 -0.364393011459011 0.9884025318908612");
|
||||
command("set type 1 mass 3.1575");
|
||||
command("set type 2 mass 3.1575");
|
||||
command("set type 3 mass 3.1575");
|
||||
command("set type 4 mass 3.1575");
|
||||
command("mass 1 3.1575");
|
||||
command("mass 2 3.1575");
|
||||
command("mass 3 3.1575");
|
||||
command("mass 4 3.1575");
|
||||
command("set atom 1 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 2 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 3 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 4 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 5 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 6 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 7 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 8 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 9 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 10 shape 1.173984503142341 1.173984503142341 1.173984503142341");
|
||||
command("set atom 1 quat 0.120438343611269 -0.970540441176996 0.208676441957758 16.990727782866998");
|
||||
command("set atom 2 quat 0.122039415796829 -0.068232256412985 0.990177125658213 40.001729435287870");
|
||||
command("set atom 3 quat 0.052760168698289 0.030943512185297 0.998127679033382 69.627682451632380");
|
||||
command("set atom 4 quat -0.037622918613871 0.030623545471522 0.998822664169035 97.038820280300570");
|
||||
command("set atom 5 quat 0.055056042946138 0.077631917807377 0.995460756369964 137.7813218321917");
|
||||
command("set atom 6 quat 0.931128471673637 -0.355724722922553 -0.080372201291206 166.2836226291888");
|
||||
command("set atom 7 quat 0.753526078198930 -0.648440397941919 0.108275111595674 200.6802564250672");
|
||||
command("set atom 8 quat 0.553942138074214 -0.829580511279186 0.070315595507185 192.0355407659524");
|
||||
command("set atom 9 quat -0.373540155765431 0.913070802138105 -0.163613759548524 171.0789308260751");
|
||||
command("set atom 10 quat 0.027515673832457 0.998248649922676 -0.052369080773879 161.2621224558284");
|
||||
command("bond_style oxdna2/fene");
|
||||
command("bond_coeff * 2.0 0.25 0.7564");
|
||||
command("special_bonds lj 0 1 1");
|
||||
command("create_bonds single/bond 1 1 2");
|
||||
command("create_bonds single/bond 1 2 3");
|
||||
command("create_bonds single/bond 1 3 4");
|
||||
command("create_bonds single/bond 1 4 5");
|
||||
command("create_bonds single/bond 1 6 7");
|
||||
command("create_bonds single/bond 1 7 8");
|
||||
command("create_bonds single/bond 1 8 9");
|
||||
command("create_bonds single/bond 1 9 10");
|
||||
command("pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh");
|
||||
command("pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32");
|
||||
command("pair_coeff * * oxdna2/stk seqdep 0.1 1.3523 2.6717 6.0 0.4 0.9 0.32 0.75 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65");
|
||||
command("pair_coeff * * oxdna2/hbond seqdep 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff 1 4 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff 2 3 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68");
|
||||
command("pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793");
|
||||
command("pair_coeff * * oxdna2/dh 0.1 0.2 0.815");
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid"));
|
||||
ASSERT_NE(lmp->atom->avec, nullptr);
|
||||
ASSERT_EQ(lmp->atom->natoms, 10);
|
||||
ASSERT_EQ(lmp->atom->nbonds, 8);
|
||||
ASSERT_EQ(lmp->atom->nbondtypes, 1);
|
||||
ASSERT_EQ(lmp->atom->nellipsoids, 10);
|
||||
ASSERT_EQ(lmp->atom->nlocal, 10);
|
||||
ASSERT_EQ(lmp->atom->nghost, 0);
|
||||
ASSERT_NE(lmp->atom->nmax, -1);
|
||||
ASSERT_EQ(lmp->atom->tag_enable, 1);
|
||||
ASSERT_EQ(lmp->atom->molecular, Atom::MOLECULAR);
|
||||
ASSERT_EQ(lmp->atom->ntypes, 4);
|
||||
ASSERT_EQ(lmp->atom->nextra_grow, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_restart, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_border, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_grow_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_restart_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_border_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_store, 0);
|
||||
ASSERT_EQ(lmp->atom->extra_grow, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra_restart, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra_border, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra, nullptr);
|
||||
ASSERT_NE(lmp->atom->mass, nullptr);
|
||||
ASSERT_NE(lmp->atom->rmass, nullptr);
|
||||
ASSERT_EQ(lmp->atom->ellipsoid_flag, 1);
|
||||
ASSERT_NE(lmp->atom->ellipsoid, nullptr);
|
||||
ASSERT_NE(lmp->atom->mass_setflag, nullptr);
|
||||
ASSERT_NE(lmp->atom->id5p, nullptr);
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("write_data test_atom_styles.data nocoeff");
|
||||
command("clear");
|
||||
command("units lj");
|
||||
command("dimension 3");
|
||||
command("newton on");
|
||||
command("boundary p p p");
|
||||
command("atom_style hybrid bond ellipsoid oxdna");
|
||||
command("atom_modify sort 0 1.0");
|
||||
command("neighbor 2.0 bin");
|
||||
command("neigh_modify every 1 delay 0 check yes");
|
||||
command("read_data test_atom_styles.data");
|
||||
command("set type 1 mass 3.1575");
|
||||
command("set type 2 mass 3.1575");
|
||||
command("set type 3 mass 3.1575");
|
||||
command("set type 4 mass 3.1575");
|
||||
command("mass 1 3.1575");
|
||||
command("mass 2 3.1575");
|
||||
command("mass 3 3.1575");
|
||||
command("mass 4 3.1575");
|
||||
command("bond_style oxdna2/fene");
|
||||
command("bond_coeff * 2.0 0.25 0.7564");
|
||||
command("special_bonds lj 0 1 1");
|
||||
command("pair_style hybrid/overlay oxdna2/excv oxdna2/stk oxdna2/hbond oxdna2/xstk oxdna2/coaxstk oxdna2/dh");
|
||||
command("pair_coeff * * oxdna2/excv 2.0 0.7 0.675 2.0 0.515 0.5 2.0 0.33 0.32");
|
||||
command("pair_coeff * * oxdna2/stk seqdep 0.1 1.3523 2.6717 6.0 0.4 0.9 0.32 0.75 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 2.0 0.65 2.0 0.65");
|
||||
command("pair_coeff * * oxdna2/hbond seqdep 0.0 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff 1 4 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff 2 3 oxdna2/hbond seqdep 1.0678 8.0 0.4 0.75 0.34 0.7 1.5 0 0.7 1.5 0 0.7 1.5 0 0.7 0.46 3.141592653589793 0.7 4.0 1.5707963267948966 0.45 4.0 1.5707963267948966 0.45");
|
||||
command("pair_coeff * * oxdna2/xstk 47.5 0.575 0.675 0.495 0.655 2.25 0.791592653589793 0.58 1.7 1.0 0.68 1.7 1.0 0.68 1.5 0 0.65 1.7 0.875 0.68 1.7 0.875 0.68");
|
||||
command("pair_coeff * * oxdna2/coaxstk 58.5 0.4 0.6 0.22 0.58 2.0 2.891592653589793 0.65 1.3 0 0.8 0.9 0 0.95 0.9 0 0.95 40.0 3.116592653589793");
|
||||
command("pair_coeff * * oxdna2/dh 0.1 0.2 0.815");
|
||||
|
||||
ASSERT_THAT(std::string(lmp->atom->atom_style), Eq("hybrid"));
|
||||
ASSERT_NE(lmp->atom->avec, nullptr);
|
||||
hybrid = (AtomVecHybrid *)lmp->atom->avec;
|
||||
|
||||
ASSERT_EQ(hybrid->nstyles, 3);
|
||||
ASSERT_THAT(std::string(hybrid->keywords[0]), Eq("bond"));
|
||||
ASSERT_THAT(std::string(hybrid->keywords[1]), Eq("ellipsoid"));
|
||||
ASSERT_THAT(std::string(hybrid->keywords[2]), Eq("oxdna"));
|
||||
ASSERT_NE(hybrid->styles[0], nullptr);
|
||||
ASSERT_NE(hybrid->styles[1], nullptr);
|
||||
ASSERT_NE(hybrid->styles[2], nullptr);
|
||||
|
||||
ASSERT_EQ(lmp->atom->natoms, 10);
|
||||
ASSERT_EQ(lmp->atom->nbonds, 8);
|
||||
ASSERT_EQ(lmp->atom->nbondtypes, 1);
|
||||
ASSERT_EQ(lmp->atom->nellipsoids, 10);
|
||||
ASSERT_EQ(lmp->atom->nlocal, 10);
|
||||
ASSERT_EQ(lmp->atom->nghost, 0);
|
||||
ASSERT_NE(lmp->atom->nmax, -1);
|
||||
ASSERT_EQ(lmp->atom->tag_enable, 1);
|
||||
ASSERT_EQ(lmp->atom->molecular, Atom::MOLECULAR);
|
||||
ASSERT_EQ(lmp->atom->ntypes, 4);
|
||||
ASSERT_EQ(lmp->atom->nextra_grow, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_restart, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_border, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_grow_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_restart_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_border_max, 0);
|
||||
ASSERT_EQ(lmp->atom->nextra_store, 0);
|
||||
ASSERT_EQ(lmp->atom->extra_grow, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra_restart, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra_border, nullptr);
|
||||
ASSERT_EQ(lmp->atom->extra, nullptr);
|
||||
ASSERT_NE(lmp->atom->mass, nullptr);
|
||||
ASSERT_NE(lmp->atom->rmass, nullptr);
|
||||
ASSERT_EQ(lmp->atom->ellipsoid_flag, 1);
|
||||
ASSERT_NE(lmp->atom->ellipsoid, nullptr);
|
||||
ASSERT_NE(lmp->atom->mass_setflag, nullptr);
|
||||
ASSERT_NE(lmp->atom->id5p, nullptr);
|
||||
|
||||
auto x = lmp->atom->x;
|
||||
auto v = lmp->atom->v;
|
||||
auto type = lmp->atom->type;
|
||||
auto ellipsoid = lmp->atom->ellipsoid;
|
||||
auto rmass = lmp->atom->rmass;
|
||||
|
||||
auto avec = (AtomVecEllipsoid *)hybrid->styles[1];
|
||||
auto bonus = avec->bonus;
|
||||
|
||||
EXPECT_NEAR(x[GETIDX(1)][0], -0.33741452300167507, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(1)][1], -0.43708835412476305, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(1)][2], 0.6450685042019271, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(2)][0], -0.32142606102826937, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(2)][1], -0.7137743037592722, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(2)][2], 1.1817366147004618, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(3)][0], -0.130363628207774, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(3)][1], -0.9147144801536078, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(3)][2], 1.62581312195109, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(4)][0], 0.16795127962282844, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(4)][1], -0.9808507459807022, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(4)][2], 2.0894908590909003, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(5)][0], 0.46370423490634166, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(5)][1], -0.7803347954883079, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(5)][2], 2.4251986815515827, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(6)][0], -0.4462950185476711, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(6)][1], 0.09062163051035639, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(6)][2], 2.4668941268777607, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(7)][0], -0.03377054097560965, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(7)][1], 0.20979847489755046, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(7)][2], 2.078208732038921, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(8)][0], 0.3297325391466579, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(8)][1], 0.17657587120899895, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(8)][2], 1.7206328374934152, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(9)][0], 0.6063699309305985, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(9)][1], 0.04682595158675571, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(9)][2], 1.2335049647817748, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(10)][0], 0.8003979559814726, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(10)][1], -0.364393011459011, EPSILON);
|
||||
EXPECT_NEAR(x[GETIDX(10)][2], 0.9884025318908612, EPSILON);
|
||||
|
||||
EXPECT_NEAR(v[GETIDX(1)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(1)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(1)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(2)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(2)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(2)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(3)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(3)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(3)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(4)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(4)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(4)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(5)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(5)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(5)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(6)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(6)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(6)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(7)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(7)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(7)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(8)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(8)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(8)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(9)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(9)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(9)][2], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(10)][0], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(10)][1], 0.0, EPSILON);
|
||||
EXPECT_NEAR(v[GETIDX(10)][2], 0.0, EPSILON);
|
||||
|
||||
ASSERT_EQ(type[GETIDX(1)], 1);
|
||||
ASSERT_EQ(type[GETIDX(2)], 2);
|
||||
ASSERT_EQ(type[GETIDX(3)], 3);
|
||||
ASSERT_EQ(type[GETIDX(4)], 4);
|
||||
ASSERT_EQ(type[GETIDX(5)], 1);
|
||||
ASSERT_EQ(type[GETIDX(6)], 4);
|
||||
ASSERT_EQ(type[GETIDX(7)], 1);
|
||||
ASSERT_EQ(type[GETIDX(8)], 2);
|
||||
ASSERT_EQ(type[GETIDX(9)], 3);
|
||||
ASSERT_EQ(type[GETIDX(10)], 4);
|
||||
|
||||
ASSERT_EQ(ellipsoid[GETIDX(1)], 0);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(2)], 1);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(3)], 2);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(4)], 3);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(5)], 4);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(6)], 5);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(7)], 6);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(8)], 7);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(9)], 8);
|
||||
ASSERT_EQ(ellipsoid[GETIDX(10)], 9);
|
||||
|
||||
EXPECT_NEAR(rmass[GETIDX(1)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(2)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(3)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(4)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(5)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(6)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(7)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(8)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(9)], 3.1575, EPSILON);
|
||||
EXPECT_NEAR(rmass[GETIDX(10)], 3.1575, EPSILON);
|
||||
|
||||
EXPECT_NEAR(bonus[0].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[0].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[0].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].shape[2], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].shape[0], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].shape[1], 0.5869922515711705, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].shape[2], 0.5869922515711705, EPSILON);
|
||||
|
||||
EXPECT_NEAR(bonus[0].quat[0], 0.9890278201757743, EPSILON);
|
||||
EXPECT_NEAR(bonus[0].quat[1], 0.01779228232037064, EPSILON);
|
||||
EXPECT_NEAR(bonus[0].quat[2], -0.14337734159225404, EPSILON);
|
||||
EXPECT_NEAR(bonus[0].quat[3], 0.030827642240801516, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].quat[0], 0.939687458852748, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].quat[1], 0.04174166924055095, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].quat[2], -0.023337773785056866, EPSILON);
|
||||
EXPECT_NEAR(bonus[1].quat[3], 0.338674565089608, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].quat[0], 0.8210113150655425, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].quat[1], 0.03012140921736572, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].quat[2], 0.017666019956944813, EPSILON);
|
||||
EXPECT_NEAR(bonus[2].quat[3], 0.5698429897612057, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].quat[0], 0.6623662858285051, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].quat[1], -0.028186343967346823, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].quat[2], 0.022942552517501488, EPSILON);
|
||||
EXPECT_NEAR(bonus[3].quat[3], 0.7482981175276918, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].quat[0], 0.3601488726765216, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].quat[1], 0.0513614985821682, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].quat[2], 0.0724224158335286, EPSILON);
|
||||
EXPECT_NEAR(bonus[4].quat[3], 0.9286602067807472, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].quat[0], 0.11941234710084649, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].quat[1], 0.9244660117493703, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].quat[2], -0.35317942248051865, EPSILON);
|
||||
EXPECT_NEAR(bonus[5].quat[3], -0.07979711784524246, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].quat[0], -0.17949125421205164, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].quat[1], 0.7412884899431119, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].quat[2], -0.6379094464220707, EPSILON);
|
||||
EXPECT_NEAR(bonus[6].quat[3], 0.1065166771202199, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].quat[0], -0.10483691088405202, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].quat[1], 0.5508895999584645, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].quat[2], -0.8250090480220789, EPSILON);
|
||||
EXPECT_NEAR(bonus[7].quat[3], 0.06992811634525403, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].quat[0], 0.07777239911646, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].quat[1], -0.3724087549185288, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].quat[2], 0.9103052384821374, EPSILON);
|
||||
EXPECT_NEAR(bonus[8].quat[3], -0.1631181963720798, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].quat[0], 0.16279109707978262, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].quat[1], 0.027148630125149613, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].quat[2], 0.9849325709665359, EPSILON);
|
||||
EXPECT_NEAR(bonus[9].quat[3], -0.0516705065113425, EPSILON);
|
||||
|
||||
auto num_bond = lmp->atom->num_bond;
|
||||
auto bond_type = lmp->atom->bond_type;
|
||||
auto bond_atom = lmp->atom->bond_atom;
|
||||
auto id5p = lmp->atom->id5p;
|
||||
|
||||
ASSERT_EQ(num_bond[GETIDX(1)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(2)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(3)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(4)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(5)], 0);
|
||||
ASSERT_EQ(num_bond[GETIDX(6)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(7)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(8)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(9)], 1);
|
||||
ASSERT_EQ(num_bond[GETIDX(10)], 0);
|
||||
|
||||
ASSERT_EQ(bond_type[GETIDX(1)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(2)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(3)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(4)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(6)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(7)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(8)][0], 1);
|
||||
ASSERT_EQ(bond_type[GETIDX(9)][0], 1);
|
||||
|
||||
ASSERT_EQ(bond_atom[GETIDX(1)][0], 2);
|
||||
ASSERT_EQ(bond_atom[GETIDX(2)][0], 3);
|
||||
ASSERT_EQ(bond_atom[GETIDX(3)][0], 4);
|
||||
ASSERT_EQ(bond_atom[GETIDX(4)][0], 5);
|
||||
ASSERT_EQ(bond_atom[GETIDX(6)][0], 7);
|
||||
ASSERT_EQ(bond_atom[GETIDX(7)][0], 8);
|
||||
ASSERT_EQ(bond_atom[GETIDX(8)][0], 9);
|
||||
ASSERT_EQ(bond_atom[GETIDX(9)][0], 10);
|
||||
|
||||
ASSERT_EQ(id5p[GETIDX(1)], 2);
|
||||
ASSERT_EQ(id5p[GETIDX(2)], 3);
|
||||
ASSERT_EQ(id5p[GETIDX(3)], 4);
|
||||
ASSERT_EQ(id5p[GETIDX(4)], 5);
|
||||
ASSERT_EQ(id5p[GETIDX(5)], -1);
|
||||
ASSERT_EQ(id5p[GETIDX(6)], 7);
|
||||
ASSERT_EQ(id5p[GETIDX(7)], 8);
|
||||
ASSERT_EQ(id5p[GETIDX(8)], 9);
|
||||
ASSERT_EQ(id5p[GETIDX(9)], 10);
|
||||
ASSERT_EQ(id5p[GETIDX(10)], -1);
|
||||
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
}
|
||||
|
||||
} // namespace LAMMPS_NS
|
||||
|
||||
int main(int argc, char **argv)
|
||||
|
||||
@ -547,12 +547,12 @@ TEST_F(DumpAtomTest, rerun_bin)
|
||||
command(fmt::format("rerun {} first 1 last 1 every 1 post no dump x y z", dump_file));
|
||||
});
|
||||
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
|
||||
ASSERT_NEAR(pe_1, pe_rerun,1.0e-14);
|
||||
ASSERT_NEAR(pe_1, pe_rerun, 1.0e-14);
|
||||
HIDE_OUTPUT([&] {
|
||||
command(fmt::format("rerun {} first 2 last 2 every 1 post yes dump x y z", dump_file));
|
||||
});
|
||||
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
|
||||
ASSERT_NEAR(pe_2, pe_rerun,1.0e-14);
|
||||
ASSERT_NEAR(pe_2, pe_rerun, 1.0e-14);
|
||||
delete_file(dump_file);
|
||||
}
|
||||
|
||||
|
||||
@ -81,6 +81,7 @@ TEST_F(DumpCfgTest, write_dump)
|
||||
auto fields = "mass type xs ys zs id proc procp1 x y z ix iy iz vx vy vz fx fy fz";
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("run 0 post no");
|
||||
command(std::string("write_dump all cfg dump_cfg.melt.cfg ") + fields);
|
||||
command(std::string("write_dump all cfg dump_cfg*.melt.cfg ") + fields);
|
||||
END_HIDE_OUTPUT();
|
||||
|
||||
@ -346,7 +346,7 @@ TEST_F(DumpCustomTest, rerun)
|
||||
});
|
||||
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
|
||||
ASSERT_DOUBLE_EQ(pe_1, pe_rerun);
|
||||
|
||||
|
||||
HIDE_OUTPUT([&] {
|
||||
command(fmt::format("rerun {} first 2 last 2 every 1 post yes dump x y z", dump_file));
|
||||
});
|
||||
@ -375,12 +375,12 @@ TEST_F(DumpCustomTest, rerun_bin)
|
||||
command(fmt::format("rerun {} first 1 last 1 every 1 post no dump x y z", dump_file));
|
||||
});
|
||||
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
|
||||
ASSERT_NEAR(pe_1, pe_rerun,1.0e-14);
|
||||
ASSERT_NEAR(pe_1, pe_rerun, 1.0e-14);
|
||||
HIDE_OUTPUT([&] {
|
||||
command(fmt::format("rerun {} first 2 last 2 every 1 post yes dump x y z", dump_file));
|
||||
});
|
||||
lmp->output->thermo->evaluate_keyword("pe", &pe_rerun);
|
||||
ASSERT_NEAR(pe_2, pe_rerun,1.0e-14);
|
||||
ASSERT_NEAR(pe_2, pe_rerun, 1.0e-14);
|
||||
delete_file(dump_file);
|
||||
}
|
||||
|
||||
|
||||
@ -29,7 +29,6 @@
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
using testing::MatchesRegex;
|
||||
using testing::StrEq;
|
||||
|
||||
using utils::read_lines_from_file;
|
||||
@ -335,7 +334,9 @@ TEST_F(FileOperationsTest, write_restart)
|
||||
ASSERT_FILE_EXISTS("multi2-0.restart");
|
||||
ASSERT_FILE_EXISTS("multi3-base.restart");
|
||||
ASSERT_FILE_EXISTS("multi3-0.restart");
|
||||
if (info->has_package("MPIIO")) ASSERT_FILE_EXISTS("test.restart.mpiio");
|
||||
if (info->has_package("MPIIO")) {
|
||||
ASSERT_FILE_EXISTS("test.restart.mpiio");
|
||||
}
|
||||
|
||||
if (!info->has_package("MPIIO")) {
|
||||
TEST_FAILURE(".*ERROR: Writing to MPI-IO filename when MPIIO package is not inst.*",
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
using testing::MatchesRegex;
|
||||
using testing::ContainsRegex;
|
||||
using testing::StrEq;
|
||||
|
||||
using utils::split_words;
|
||||
@ -173,7 +173,8 @@ TEST_F(MoleculeFileTest, minimal)
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
run_mol_cmd(test_name, "", "Comment\n1 atoms\n\n Coords\n\n 1 0.0 0.0 0.0\n");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*1 molecules.*1 atoms.*0 bonds.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Read molecule template.*\n.*1 molecules.*\n"
|
||||
".*0 fragments.*\n.*1 atoms.*\n.*0 bonds.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, notype)
|
||||
@ -184,10 +185,11 @@ TEST_F(MoleculeFileTest, notype)
|
||||
command("create_box 1 box");
|
||||
run_mol_cmd(test_name, "", "Comment\n1 atoms\n\n Coords\n\n 1 0.0 0.0 0.0\n");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*1 molecules.*1 atoms.*0 bonds.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Read molecule template.*\n.*1 molecules.*\n"
|
||||
".*0 fragments.*\n.*1 atoms.*\n.*0 bonds.*"));
|
||||
TEST_FAILURE(".*ERROR: Create_atoms molecule must have atom types.*",
|
||||
command("create_atoms 0 single 0.0 0.0 0.0 mol notype 542465"););
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, extramass)
|
||||
{
|
||||
@ -195,12 +197,13 @@ TEST_F(MoleculeFileTest, extramass)
|
||||
command("atom_style atomic");
|
||||
command("region box block 0 1 0 1 0 1");
|
||||
command("create_box 1 box");
|
||||
run_mol_cmd(test_name, "", "Comment\n1 atoms\n\n Coords\n\n 1 0.0 0.0 0.0\n"
|
||||
run_mol_cmd(test_name, "",
|
||||
"Comment\n1 atoms\n\n Coords\n\n 1 0.0 0.0 0.0\n"
|
||||
" Types\n\n 1 1\n Masses\n\n 1 1.0\n");
|
||||
command("create_atoms 0 single 0.0 0.0 0.0 mol extramass 73546");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*WARNING: Molecule attributes do not match "
|
||||
"system attributes.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*WARNING: Molecule attributes do not match "
|
||||
"system attributes.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, twomols)
|
||||
@ -211,8 +214,8 @@ TEST_F(MoleculeFileTest, twomols)
|
||||
" Coords\n\n 1 0.0 0.0 0.0\n 2 0.0 0.0 1.0\n"
|
||||
" Molecules\n\n 1 1\n 2 2\n\n Types\n\n 1 1\n 2 2\n\n");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*2 molecules.*2 atoms "
|
||||
"with max type 2.*0 bonds.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Read molecule template.*\n.*2 molecules.*\n"
|
||||
".*0 fragments.*\n.*2 atoms with max type 2.*\n.*0 bonds.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, twofiles)
|
||||
@ -220,12 +223,14 @@ TEST_F(MoleculeFileTest, twofiles)
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("molecule twomols moltest.h2o.mol moltest.co2.mol offset 2 1 1 0 0");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template twomols:.*1 molecules.*3 atoms "
|
||||
"with max type 2.*2 bonds with max type 1.*"
|
||||
"1 angles with max type 1.*0 dihedrals.*"
|
||||
".*Read molecule template twomols:.*1 molecules.*3 atoms "
|
||||
"with max type 4.*2 bonds with max type 2.*"
|
||||
"1 angles with max type 2.*0 dihedrals.*"));
|
||||
ASSERT_THAT(
|
||||
output,
|
||||
ContainsRegex(".*Read molecule template twomols:.*\n.*1 molecules.*\n"
|
||||
".*0 fragments.*\n.*3 atoms with max type 2.*\n.*2 bonds with max type 1.*\n"
|
||||
".*1 angles with max type 1.*\n.*0 dihedrals.*\n.*0 impropers.*\n"
|
||||
".*Read molecule template twomols:.*\n.*1 molecules.*\n"
|
||||
".*0 fragments.*\n.*3 atoms with max type 4.*\n.*2 bonds with max type 2.*\n"
|
||||
".*1 angles with max type 2.*\n.*0 dihedrals.*"));
|
||||
}
|
||||
|
||||
TEST_F(MoleculeFileTest, bonds)
|
||||
@ -254,14 +259,15 @@ TEST_F(MoleculeFileTest, bonds)
|
||||
" 1 1 1 2\n"
|
||||
" 2 2 1 3\n\n");
|
||||
auto output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Read molecule template.*1 molecules.*4 atoms.*type.*2.*"
|
||||
"2 bonds.*type.*2.*0 angles.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Read molecule template.*\n.*1 molecules.*\n"
|
||||
".*0 fragments.*\n.*4 atoms.*type.*2.*\n"
|
||||
".*2 bonds.*type.*2.*\n.*0 angles.*"));
|
||||
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("mass * 2.0");
|
||||
command("create_atoms 0 single 0.5 0.5 0.5 mol bonds 67235");
|
||||
output = END_CAPTURE_OUTPUT();
|
||||
ASSERT_THAT(output, MatchesRegex(".*Created 4 atoms.*"));
|
||||
ASSERT_THAT(output, ContainsRegex(".*Created 4 atoms.*"));
|
||||
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
Molecule *mol = lmp->atom->molecules[0];
|
||||
|
||||
@ -37,7 +37,6 @@
|
||||
#include <vector>
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
using ::testing::MatchesRegex;
|
||||
using utils::split_words;
|
||||
|
||||
// whether to print verbose output (i.e. not capturing LAMMPS screen output).
|
||||
@ -283,7 +282,7 @@ TEST_F(OpenPotentialTest, Sw_conv)
|
||||
{
|
||||
int convert_flag = utils::get_supported_conversions(utils::ENERGY);
|
||||
ASSERT_EQ(convert_flag, utils::METAL2REAL | utils::REAL2METAL);
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
BEGIN_CAPTURE_OUTPUT();
|
||||
command("units real");
|
||||
FILE *fp = utils::open_potential("Si.sw", lmp, &convert_flag);
|
||||
auto text = END_CAPTURE_OUTPUT();
|
||||
@ -301,7 +300,7 @@ TEST_F(OpenPotentialTest, Sw_noconv)
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units real");
|
||||
END_HIDE_OUTPUT();
|
||||
TEST_FAILURE(".*potential.*requires metal units but real.*",
|
||||
TEST_FAILURE(".*Potential.*requires metal units but real.*",
|
||||
utils::open_potential("Si.sw", lmp, nullptr););
|
||||
BEGIN_HIDE_OUTPUT();
|
||||
command("units lj");
|
||||
|
||||
@ -72,7 +72,7 @@ TEST_F(TextFileReaderTest, permissions)
|
||||
{
|
||||
platform::unlink("text_reader_noperms.file");
|
||||
FILE *fp = fopen("text_reader_noperms.file", "w");
|
||||
ASSERT_NE(fp,nullptr);
|
||||
ASSERT_NE(fp, nullptr);
|
||||
fputs("word\n", fp);
|
||||
fclose(fp);
|
||||
chmod("text_reader_noperms.file", 0);
|
||||
|
||||
@ -26,11 +26,11 @@ if(CMAKE_Fortran_COMPILER)
|
||||
|
||||
add_executable(test_fortran_create wrap_create.cpp test_fortran_create.f90)
|
||||
target_link_libraries(test_fortran_create PRIVATE flammps lammps MPI::MPI_Fortran GTest::GTestMain)
|
||||
add_test(FortranOpen test_fortran_create)
|
||||
add_test(NAME FortranOpen COMMAND test_fortran_create)
|
||||
|
||||
add_executable(test_fortran_commands wrap_commands.cpp test_fortran_commands.f90)
|
||||
target_link_libraries(test_fortran_commands PRIVATE flammps lammps MPI::MPI_Fortran GTest::GTestMain)
|
||||
add_test(FortranCommands test_fortran_commands)
|
||||
add_test(NAME FortranCommands COMMAND test_fortran_commands)
|
||||
else()
|
||||
message(STATUS "Skipping Tests for the LAMMPS Fortran Module: no Fortran compiler")
|
||||
endif()
|
||||
|
||||
@ -9,7 +9,7 @@ MODULE MPI
|
||||
mpi_comm_split
|
||||
|
||||
CONTAINS
|
||||
|
||||
|
||||
SUBROUTINE mpi_comm_split(comm,color,key,newcomm,ierr)
|
||||
INTEGER, INTENT(in) :: comm,color,key
|
||||
INTEGER, INTENT(out) :: newcomm,ierr
|
||||
|
||||
@ -12,7 +12,7 @@ if(NOT BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.12)
|
||||
find_package(PythonInterp 3.5) # Deprecated since version 3.12
|
||||
find_package(PythonInterp 3.6) # Deprecated since version 3.12
|
||||
if(PYTHONINTERP_FOUND)
|
||||
set(Python_EXECUTABLE ${PYTHON_EXECUTABLE})
|
||||
endif()
|
||||
@ -28,25 +28,34 @@ if(Python_Development_FOUND)
|
||||
target_compile_definitions(test_python_package PRIVATE -DTEST_HAVE_PYTHON_DEVELOPMENT=1)
|
||||
target_link_libraries(test_python_package PRIVATE Python::Python)
|
||||
endif()
|
||||
add_test(NAME PythonPackage COMMAND test_python_package WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
set_tests_properties(PythonPackage PROPERTIES ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR};PYTHONPATH=${CMAKE_CURRENT_BINARY_DIR}:${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH};PYTHONUNBUFFERED=1")
|
||||
add_test(NAME PythonPackage COMMAND test_python_package)
|
||||
|
||||
# build list of environment variables for testing python functionality
|
||||
if(WIN32)
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR})
|
||||
else()
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH})
|
||||
endif()
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR}/$<CONFIG>)
|
||||
else()
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR})
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "PYTHONUNBUFFERED=1")
|
||||
if(APPLE)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{DYLD_LIBRARY_PATH}")
|
||||
elseif(WIN32)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPSDLLPATH=${LAMMPS_LIB_PATH}")
|
||||
else()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{LD_LIBRARY_PATH}")
|
||||
endif()
|
||||
set_tests_properties(PythonPackage PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
|
||||
if(Python_EXECUTABLE)
|
||||
# prepare to augment the environment so that the LAMMPS python module and the shared library is found.
|
||||
set(PYTHON_TEST_ENVIRONMENT PYTHONPATH=${LAMMPS_PYTHON_DIR}:$ENV{PYTHONPATH})
|
||||
get_property(BUILD_IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG)
|
||||
if(BUILD_IS_MULTI_CONFIG)
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR}/$<CONFIG>)
|
||||
else()
|
||||
set(LAMMPS_LIB_PATH ${CMAKE_BINARY_DIR})
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "TEST_INPUT_DIR=${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
if(APPLE)
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "DYLD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{DYLD_LIBRARY_PATH};LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
else()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LD_LIBRARY_PATH=${LAMMPS_LIB_PATH}:$ENV{LD_LIBRARY_PATH};LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
endif()
|
||||
list(APPEND PYTHON_TEST_ENVIRONMENT "LAMMPS_CMAKE_CACHE=${CMAKE_BINARY_DIR}/CMakeCache.txt")
|
||||
if(LAMMPS_MACHINE)
|
||||
# convert from '_machine' to 'machine'
|
||||
string(SUBSTRING ${LAMMPS_MACHINE} 1 -1 LAMMPS_MACHINE_NAME)
|
||||
@ -89,10 +98,14 @@ if(Python_EXECUTABLE)
|
||||
WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
|
||||
set_tests_properties(PythonCapabilities PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
message(STATUS "Skipping Tests for PyLammps Module: not yet ported to Windows")
|
||||
else()
|
||||
add_test(NAME PythonPyLammps
|
||||
COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-pylammps.py -v
|
||||
WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
|
||||
set_tests_properties(PythonPyLammps PROPERTIES ENVIRONMENT "${PYTHON_TEST_ENVIRONMENT}")
|
||||
endif()
|
||||
|
||||
add_test(NAME PythonFormats
|
||||
COMMAND ${PYTHON_TEST_RUNNER} ${CMAKE_CURRENT_SOURCE_DIR}/python-formats.py -v
|
||||
|
||||
@ -43,9 +43,9 @@ bool verbose = false;
|
||||
using LAMMPS_NS::utils::split_words;
|
||||
|
||||
namespace LAMMPS_NS {
|
||||
using ::testing::ContainsRegex;
|
||||
using ::testing::Eq;
|
||||
using ::testing::HasSubstr;
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::StrEq;
|
||||
|
||||
class PythonPackageTest : public LAMMPSTest {
|
||||
@ -89,7 +89,7 @@ TEST_F(PythonPackageTest, InvokeFunctionFromFile)
|
||||
auto output = CAPTURE_OUTPUT([&]() {
|
||||
command("python printnum invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("2.25\n"));
|
||||
ASSERT_THAT(output, HasSubstr("2.25"));
|
||||
}
|
||||
|
||||
#if defined(TEST_HAVE_PYTHON_DEVELOPMENT)
|
||||
@ -210,7 +210,7 @@ TEST_F(PythonPackageTest, InvokeOtherFunctionFromFile)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("python printtxt invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("sometext\n"));
|
||||
ASSERT_THAT(output, HasSubstr("sometext"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, InvokeFunctionThatUsesLAMMPSModule)
|
||||
@ -224,7 +224,7 @@ TEST_F(PythonPackageTest, InvokeFunctionThatUsesLAMMPSModule)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("python getidxvar invoke");
|
||||
});
|
||||
ASSERT_THAT(output, HasSubstr("2.25\n"));
|
||||
ASSERT_THAT(output, HasSubstr("2.25"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, python_variable)
|
||||
@ -238,7 +238,7 @@ TEST_F(PythonPackageTest, python_variable)
|
||||
std::string output = CAPTURE_OUTPUT([&] {
|
||||
command("print \"${sq}\"");
|
||||
});
|
||||
ASSERT_THAT(output, MatchesRegex("print.*2.25.*"));
|
||||
ASSERT_THAT(output, ContainsRegex("print.*\n.*2.25.*"));
|
||||
}
|
||||
|
||||
TEST_F(PythonPackageTest, InlineFunction)
|
||||
@ -309,7 +309,7 @@ TEST_F(FixPythonInvokeTest, end_of_step)
|
||||
auto output = CAPTURE_OUTPUT([&] {
|
||||
command("run 50");
|
||||
});
|
||||
|
||||
fprintf(stderr,"lines: %s\n",output.c_str());
|
||||
auto lines = utils::split_lines(output);
|
||||
int count = 0;
|
||||
|
||||
|
||||
@ -28,20 +28,20 @@
|
||||
|
||||
using namespace LAMMPS_NS;
|
||||
|
||||
using ::testing::MatchesRegex;
|
||||
using ::testing::ContainsRegex;
|
||||
|
||||
#define TEST_FAILURE(errmsg, ...) \
|
||||
if (Info::has_exceptions()) { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_ANY_THROW({__VA_ARGS__}); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
ASSERT_THAT(mesg, ContainsRegex(errmsg)); \
|
||||
} else { \
|
||||
if (platform::mpi_vendor() != "Open MPI") { \
|
||||
::testing::internal::CaptureStdout(); \
|
||||
ASSERT_DEATH({__VA_ARGS__}, ""); \
|
||||
auto mesg = ::testing::internal::GetCapturedStdout(); \
|
||||
ASSERT_THAT(mesg, MatchesRegex(errmsg)); \
|
||||
ASSERT_THAT(mesg, ContainsRegex(errmsg)); \
|
||||
} else { \
|
||||
std::cerr << "[ ] [ INFO ] Skipping death test (no exception support) \n"; \
|
||||
} \
|
||||
|
||||
@ -1,22 +1,23 @@
|
||||
|
||||
add_executable(test_tokenizer test_tokenizer.cpp)
|
||||
target_link_libraries(test_tokenizer PRIVATE lammps GTest::GMockMain)
|
||||
add_test(Tokenizer test_tokenizer)
|
||||
add_test(NAME Tokenizer COMMAND test_tokenizer)
|
||||
|
||||
add_executable(test_mempool test_mempool.cpp)
|
||||
target_link_libraries(test_mempool PRIVATE lammps GTest::GMockMain)
|
||||
add_test(MemPool test_mempool)
|
||||
add_test(NAME MemPool COMMAND test_mempool)
|
||||
|
||||
add_executable(test_argutils test_argutils.cpp)
|
||||
target_link_libraries(test_argutils PRIVATE lammps GTest::GMockMain)
|
||||
add_test(ArgUtils test_argutils)
|
||||
add_test(NAME ArgUtils COMMAND test_argutils)
|
||||
|
||||
add_executable(test_utils test_utils.cpp)
|
||||
target_link_libraries(test_utils PRIVATE lammps GTest::GMockMain)
|
||||
add_test(Utils test_utils)
|
||||
add_test(NAME Utils COMMAND test_utils)
|
||||
|
||||
add_executable(test_platform test_platform.cpp)
|
||||
target_link_libraries(test_platform PRIVATE lammps GTest::GMockMain)
|
||||
add_test(Platform test_platform)
|
||||
add_test(NAME Platform COMMAND test_platform)
|
||||
|
||||
set_tests_properties(Utils Platform PROPERTIES
|
||||
ENVIRONMENT "LAMMPS_POTENTIALS=${LAMMPS_POTENTIALS_DIR}")
|
||||
@ -35,8 +36,8 @@ endif()
|
||||
|
||||
add_executable(test_fmtlib test_fmtlib.cpp)
|
||||
target_link_libraries(test_fmtlib PRIVATE lammps GTest::GMockMain)
|
||||
add_test(FmtLib test_fmtlib)
|
||||
add_test(NAME FmtLib COMMAND test_fmtlib)
|
||||
|
||||
add_executable(test_math_eigen_impl test_math_eigen_impl.cpp)
|
||||
target_include_directories(test_math_eigen_impl PRIVATE ${LAMMPS_SOURCE_DIR})
|
||||
add_test(MathEigen test_math_eigen_impl 10 5)
|
||||
add_test(NAME MathEigen COMMAND test_math_eigen_impl 10 5)
|
||||
|
||||
@ -48,7 +48,7 @@ inline static bool SimilarVec(Vector a, Vector b, int n, Scalar eps = 1.0e-06,
|
||||
Scalar ratio = 1.0e-06, Scalar ratio_denom = 1.0)
|
||||
{
|
||||
for (int i = 0; i < n; i++)
|
||||
if (! Similar(a[i], b[i], eps, ratio, ratio_denom)) return false;
|
||||
if (!Similar(a[i], b[i], eps, ratio, ratio_denom)) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ inline static bool SimilarVecUnsigned(Vector a, Vector b, int n, Scalar eps = 1.
|
||||
return true;
|
||||
else {
|
||||
for (int i = 0; i < n; i++)
|
||||
if (! Similar(a[i], -b[i], eps, ratio, ratio_denom)) return false;
|
||||
if (!Similar(a[i], -b[i], eps, ratio, ratio_denom)) return false;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -464,7 +464,7 @@ void TestJacobi(int n, //<! matrix size
|
||||
Scalar const(*)[NF]>::SORT_INCREASING_ABS_EVALS);
|
||||
#else
|
||||
ecalc.Diagonalize(M, evals, evecs,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Scalar const *const *>::SORT_INCREASING_ABS_EVALS);
|
||||
#endif
|
||||
|
||||
@ -488,7 +488,7 @@ void TestJacobi(int n, //<! matrix size
|
||||
Scalar const(*)[NF]>::SORT_DECREASING_ABS_EVALS);
|
||||
#else
|
||||
ecalc.Diagonalize(M, evals, evecs,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Scalar const *const *>::SORT_DECREASING_ABS_EVALS);
|
||||
#endif
|
||||
|
||||
@ -511,7 +511,7 @@ void TestJacobi(int n, //<! matrix size
|
||||
Scalar const(*)[NF]>::SORT_INCREASING_EVALS);
|
||||
#else
|
||||
ecalc.Diagonalize(M, evals, evecs,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Jacobi<Scalar, Scalar *, Scalar **,
|
||||
Scalar const *const *>::SORT_INCREASING_EVALS);
|
||||
#endif
|
||||
for (int i = 1; i < n; i++)
|
||||
@ -533,8 +533,8 @@ void TestJacobi(int n, //<! matrix size
|
||||
Jacobi<Scalar, Scalar *, Scalar(*)[NF], Scalar const(*)[NF]>::DO_NOT_SORT);
|
||||
#else
|
||||
ecalc.Diagonalize(
|
||||
M, evals, evecs,
|
||||
Jacobi<Scalar, Scalar *, Scalar **, Scalar const *const *>::DO_NOT_SORT);
|
||||
M, evals, evecs,
|
||||
Jacobi<Scalar, Scalar *, Scalar **, Scalar const *const *>::DO_NOT_SORT);
|
||||
#endif
|
||||
|
||||
} // if (test_code_coverage)
|
||||
|
||||
@ -68,10 +68,10 @@ TEST(Platform, putenv_unsetenv)
|
||||
|
||||
ASSERT_EQ(platform::unsetenv(""), -1);
|
||||
ASSERT_EQ(platform::unsetenv("UNITTEST_VAR3=two"), -1);
|
||||
var = getenv("UNITTEST_VAR1");
|
||||
var = getenv("UNITTEST_VAR1");
|
||||
ASSERT_NE(var, nullptr);
|
||||
ASSERT_EQ(platform::unsetenv("UNITTEST_VAR1"), 0);
|
||||
var = getenv("UNITTEST_VAR1");
|
||||
var = getenv("UNITTEST_VAR1");
|
||||
ASSERT_EQ(var, nullptr);
|
||||
}
|
||||
|
||||
|
||||
@ -838,15 +838,15 @@ TEST(Utils, date2num)
|
||||
|
||||
TEST(Utils, current_date)
|
||||
{
|
||||
auto vals = ValueTokenizer(utils::current_date(),"-");
|
||||
int year = vals.next_int();
|
||||
auto vals = ValueTokenizer(utils::current_date(), "-");
|
||||
int year = vals.next_int();
|
||||
int month = vals.next_int();
|
||||
int day = vals.next_int();
|
||||
ASSERT_GT(year,2020);
|
||||
ASSERT_GE(month,1);
|
||||
ASSERT_GE(day,1);
|
||||
ASSERT_LE(month,12);
|
||||
ASSERT_LE(day,31);
|
||||
int day = vals.next_int();
|
||||
ASSERT_GT(year, 2020);
|
||||
ASSERT_GE(month, 1);
|
||||
ASSERT_GE(day, 1);
|
||||
ASSERT_LE(month, 12);
|
||||
ASSERT_LE(day, 31);
|
||||
}
|
||||
|
||||
TEST(Utils, binary_search)
|
||||
|
||||
Reference in New Issue
Block a user