diff --git a/unittest/commands/test_variables.cpp b/unittest/commands/test_variables.cpp index 7a9b87fbe2..c631b69528 100644 --- a/unittest/commands/test_variables.cpp +++ b/unittest/commands/test_variables.cpp @@ -780,6 +780,25 @@ TEST_F(VariableTest, Format) // TEST_FAILURE(".*ERROR: Incorrect conversion in format string.*", // 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 int main(int argc, char **argv) diff --git a/unittest/fortran/test_fortran_extract_variable.f90 b/unittest/fortran/test_fortran_extract_variable.f90 index b4b5ab8727..619962daf9 100644 --- a/unittest/fortran/test_fortran_extract_variable.f90 +++ b/unittest/fortran/test_fortran_extract_variable.f90 @@ -361,15 +361,23 @@ FUNCTION f_lammps_extract_variable_vector(i) BIND(C) f_lammps_extract_variable_vector = vector(i) END FUNCTION f_lammps_extract_variable_vector -SUBROUTINE f_lammps_set_variable_string() BIND(C) - USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_double, c_int +SUBROUTINE f_lammps_set_string_variable() BIND(C) USE LIBLAMMPS USE keepstuff, ONLY : lmp, f2c_string IMPLICIT NONE CHARACTER(LEN=40) :: string string = "this is the new string" - CALL lmp%set_variable('str', string) -END SUBROUTINE f_lammps_set_variable_string + CALL lmp%set_string_variable('str', 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 diff --git a/unittest/fortran/wrap_extract_variable.cpp b/unittest/fortran/wrap_extract_variable.cpp index 8c81897c0a..b1f79e149a 100644 --- a/unittest/fortran/wrap_extract_variable.cpp +++ b/unittest/fortran/wrap_extract_variable.cpp @@ -43,7 +43,9 @@ double f_lammps_extract_variable_internal(); double f_lammps_extract_variable_equal(); double f_lammps_extract_variable_atom(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 *); } @@ -155,7 +157,7 @@ TEST_F(LAMMPS_extract_variable, string) char *fstr = f_lammps_extract_variable_string(); EXPECT_STREQ(fstr, "this is a string"); std::free(fstr); - f_lammps_set_variable_string(); + f_lammps_set_string_variable(); fstr = f_lammps_extract_variable_string(); EXPECT_STREQ(fstr, "this is the new string"); std::free(fstr); @@ -254,6 +256,8 @@ TEST_F(LAMMPS_extract_variable, internal) { f_lammps_setup_extract_variable(); 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) diff --git a/unittest/python/python-commands.py b/unittest/python/python-commands.py index 1c25751191..c9f16f6a71 100644 --- a/unittest/python/python-commands.py +++ b/unittest/python/python-commands.py @@ -475,6 +475,26 @@ create_atoms 1 single & a = self.lmp.extract_variable("a") 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): self.lmp.command("units lj") self.lmp.command("atom_style atomic")