add tests for new library APIs

This commit is contained in:
Axel Kohlmeyer
2024-01-24 04:47:59 -05:00
parent 7b210dd97e
commit 4a13fe68e0
4 changed files with 57 additions and 6 deletions

View File

@ -780,6 +780,25 @@ TEST_F(VariableTest, Format)
// TEST_FAILURE(".*ERROR: Incorrect conversion in format string.*", // TEST_FAILURE(".*ERROR: Incorrect conversion in format string.*",
// command("print \"${f1idx}\"");); // command("print \"${f1idx}\""););
} }
TEST_F(VariableTest, Set)
{
BEGIN_HIDE_OUTPUT();
command("variable three string three");
command("variable ten internal 10.0");
END_HIDE_OUTPUT();
ASSERT_EQ(variable->nvar, 3);
ASSERT_THAT(variable->retrieve("three"), StrEq("three"));
ASSERT_THAT(variable->retrieve("ten"), StrEq("10"));
ASSERT_EQ(variable->internalstyle(variable->find("three")), 0);
ASSERT_EQ(variable->internalstyle(variable->find("ten")), 1);
variable->set_string("three", "new");
ASSERT_THAT(variable->retrieve("three"), StrEq("new"));
variable->internal_set(variable->find("ten"), -2.5);
ASSERT_THAT(variable->retrieve("ten"), StrEq("-2.5"));
}
} // namespace LAMMPS_NS } // namespace LAMMPS_NS
int main(int argc, char **argv) int main(int argc, char **argv)

View File

@ -361,15 +361,23 @@ FUNCTION f_lammps_extract_variable_vector(i) BIND(C)
f_lammps_extract_variable_vector = vector(i) f_lammps_extract_variable_vector = vector(i)
END FUNCTION f_lammps_extract_variable_vector END FUNCTION f_lammps_extract_variable_vector
SUBROUTINE f_lammps_set_variable_string() BIND(C) SUBROUTINE f_lammps_set_string_variable() BIND(C)
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int
USE LIBLAMMPS USE LIBLAMMPS
USE keepstuff, ONLY : lmp, f2c_string USE keepstuff, ONLY : lmp, f2c_string
IMPLICIT NONE IMPLICIT NONE
CHARACTER(LEN=40) :: string CHARACTER(LEN=40) :: string
string = "this is the new string" string = "this is the new string"
CALL lmp%set_variable('str', string) CALL lmp%set_string_variable('str', string)
END SUBROUTINE f_lammps_set_variable_string END SUBROUTINE f_lammps_set_string_variable
SUBROUTINE f_lammps_set_internal_variable() BIND(C)
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double
USE LIBLAMMPS
USE keepstuff, ONLY : lmp, f2c_string
IMPLICIT NONE
CALL lmp%set_internal_variable('int', -2.5_c_double)
END SUBROUTINE f_lammps_set_internal_variable
! vim: sts=2 ts=2 sw=2 et ! vim: sts=2 ts=2 sw=2 et

View File

@ -43,7 +43,9 @@ double f_lammps_extract_variable_internal();
double f_lammps_extract_variable_equal(); double f_lammps_extract_variable_equal();
double f_lammps_extract_variable_atom(int); double f_lammps_extract_variable_atom(int);
double f_lammps_extract_variable_vector(int); double f_lammps_extract_variable_vector(int);
void f_lammps_set_variable_string(); void f_lammps_set_string_variable();
void f_lammps_set_internal_variable();
char *c_path_join(const char *, const char *); char *c_path_join(const char *, const char *);
} }
@ -155,7 +157,7 @@ TEST_F(LAMMPS_extract_variable, string)
char *fstr = f_lammps_extract_variable_string(); char *fstr = f_lammps_extract_variable_string();
EXPECT_STREQ(fstr, "this is a string"); EXPECT_STREQ(fstr, "this is a string");
std::free(fstr); std::free(fstr);
f_lammps_set_variable_string(); f_lammps_set_string_variable();
fstr = f_lammps_extract_variable_string(); fstr = f_lammps_extract_variable_string();
EXPECT_STREQ(fstr, "this is the new string"); EXPECT_STREQ(fstr, "this is the new string");
std::free(fstr); std::free(fstr);
@ -254,6 +256,8 @@ TEST_F(LAMMPS_extract_variable, internal)
{ {
f_lammps_setup_extract_variable(); f_lammps_setup_extract_variable();
EXPECT_DOUBLE_EQ(f_lammps_extract_variable_internal(), 4.0); EXPECT_DOUBLE_EQ(f_lammps_extract_variable_internal(), 4.0);
f_lammps_set_internal_variable();
EXPECT_DOUBLE_EQ(f_lammps_extract_variable_internal(), -2.5);
}; };
TEST_F(LAMMPS_extract_variable, equal) TEST_F(LAMMPS_extract_variable, equal)

View File

@ -475,6 +475,26 @@ create_atoms 1 single &
a = self.lmp.extract_variable("a") a = self.lmp.extract_variable("a")
self.assertEqual(a, 3.14) self.assertEqual(a, 3.14)
def test_extract_variable_stringstyle(self):
self.lmp.command("variable a string xxx")
a = self.lmp.extract_variable("a")
self.assertEqual(a, 'xxx')
rv = self.lmp.set_string_variable("a","20")
a = self.lmp.extract_variable("a")
self.assertEqual(a, '20')
self.assertEqual(rv, 0)
def test_extract_variable_internalstyle(self):
self.lmp.command("variable a internal 2.0")
a = self.lmp.extract_variable("a")
self.assertEqual(a, 2.0)
rv = self.lmp.set_internal_variable("a",-4.5)
a = self.lmp.extract_variable("a")
self.assertEqual(a, -4.5)
self.assertEqual(rv, 0)
def test_extract_variable_atomstyle(self): def test_extract_variable_atomstyle(self):
self.lmp.command("units lj") self.lmp.command("units lj")
self.lmp.command("atom_style atomic") self.lmp.command("atom_style atomic")