Implemented decode_image_flags and its unit test; updated documentation

This commit is contained in:
Karl Hammond
2022-10-20 00:27:57 -05:00
parent b51c50294e
commit 34121e5545
4 changed files with 135 additions and 17 deletions

View File

@ -110,3 +110,25 @@ FUNCTION f_lammps_get_image_flags_bigint(ix, iy, iz) BIND(C)
f_lammps_get_image_flags_bigint = lmp%encode_image_flags(ix, iy, iz)
END FUNCTION f_lammps_get_image_flags_bigint
SUBROUTINE f_lammps_decode_image_flags(image, flag) BIND(C)
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int
USE keepstuff, ONLY : lmp
USE LIBLAMMPS
IMPLICIT NONE
INTEGER(c_int), INTENT(IN), VALUE :: image
INTEGER(c_int), INTENT(OUT) :: flag(3)
CALL lmp%decode_image_flags(image, flag)
END SUBROUTINE f_lammps_decode_image_flags
SUBROUTINE f_lammps_decode_image_flags_bigbig(image, flag) BIND(C)
USE, INTRINSIC :: ISO_C_BINDING, ONLY : c_int, c_int64_t
USE keepstuff, ONLY : lmp
USE LIBLAMMPS
IMPLICIT NONE
INTEGER(c_int64_t), INTENT(IN), VALUE :: image
INTEGER(c_int), INTENT(OUT) :: flag(3)
CALL lmp%decode_image_flags(image, flag)
END SUBROUTINE f_lammps_decode_image_flags_bigbig

View File

@ -21,6 +21,8 @@ int f_lammps_has_error();
int f_lammps_get_last_error_message(char *, int);
int f_lammps_get_image_flags_int(int, int, int);
int64_t f_lammps_get_image_flags_bigint(int, int, int);
void f_lammps_decode_image_flags(int, int*);
void f_lammps_decode_image_flags_bigbig(int64_t, int*);
}
namespace LAMMPS_NS {
@ -156,20 +158,35 @@ TEST_F(LAMMPS_properties, has_error)
TEST_F(LAMMPS_properties, get_image_flags)
{
#ifdef LAMMPS_BIGBIG
int64_t image = f_lammps_get_image_flags_bigint(0,0,0);
int64_t Cimage = lammps_encode_image_flags(0,0,0);
EXPECT_EQ(image, Cimage);
image = f_lammps_get_image_flags_bigint(1,-1,1);
Cimage = lammps_encode_image_flags(1,-1,1);
EXPECT_EQ(image, Cimage);
int64_t image = f_lammps_get_image_flags_bigint(0,0,0);
int64_t Cimage = lammps_encode_image_flags(0,0,0);
EXPECT_EQ(image, Cimage);
image = f_lammps_get_image_flags_bigint(1,-1,1);
Cimage = lammps_encode_image_flags(1,-1,1);
EXPECT_EQ(image, Cimage);
#else
int image = f_lammps_get_image_flags_int(0,0,0);
int Cimage = lammps_encode_image_flags(0,0,0);
EXPECT_EQ(image, Cimage);
image = f_lammps_get_image_flags_int(1,-1,1);
Cimage = lammps_encode_image_flags(1,-1,1);
EXPECT_EQ(image, Cimage);
int image = f_lammps_get_image_flags_int(0,0,0);
int Cimage = lammps_encode_image_flags(0,0,0);
EXPECT_EQ(image, Cimage);
image = f_lammps_get_image_flags_int(1,-1,1);
Cimage = lammps_encode_image_flags(1,-1,1);
EXPECT_EQ(image, Cimage);
#endif
}
TEST_F(LAMMPS_properties, decode_image_flags)
{
int flag[3];
#ifdef LAMMPS_BIGBIG
int64_t image = f_lammps_get_image_flags_bigint(1,3,-2);
f_lammps_decode_image_flags_bigbig(image, flag);
#else
int image = f_lammps_get_image_flags_int(1,3,-2);
f_lammps_decode_image_flags(image, flag);
#endif
EXPECT_EQ(flag[0], 1);
EXPECT_EQ(flag[1], 3);
EXPECT_EQ(flag[2], -2);
};
} // namespace LAMMPS_NS