diff --git a/unittest/formats/test_potential_file_reader.cpp b/unittest/formats/test_potential_file_reader.cpp index 933fa66b96..08b51059fd 100644 --- a/unittest/formats/test_potential_file_reader.cpp +++ b/unittest/formats/test_potential_file_reader.cpp @@ -76,7 +76,7 @@ protected: } }; -TEST_F(PotentialFileReaderTest, Si) +TEST_F(PotentialFileReaderTest, Sw) { if (!verbose) ::testing::internal::CaptureStdout(); lmp->input->one("units metal"); @@ -208,6 +208,49 @@ TEST_F(PotentialFileReaderTest, Vashishta) ASSERT_EQ(utils::count_words(line), PairVashishta::NPARAMS_PER_LINE); } +TEST_F(PotentialFileReaderTest, UnitConvert) +{ + PotentialFileReader *reader; + int unit_convert, flag; + + if (!verbose) ::testing::internal::CaptureStdout(); + lmp->input->one("units metal"); + reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber"); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + unit_convert = reader->get_unit_convert(); + ASSERT_EQ(unit_convert, 0); + delete reader; + + if (!verbose) ::testing::internal::CaptureStdout(); + flag = utils::get_supported_conversions(utils::UNKNOWN); + reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + unit_convert = reader->get_unit_convert(); + ASSERT_EQ(unit_convert, 0); + delete reader; + + if (!verbose) ::testing::internal::CaptureStdout(); + flag = utils::get_supported_conversions(utils::ENERGY); + reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + unit_convert = reader->get_unit_convert(); + ASSERT_EQ(unit_convert, 0); + delete reader; + + if (!verbose) ::testing::internal::CaptureStdout(); + flag = utils::get_supported_conversions(utils::ENERGY); + lmp->input->one("units real"); + reader = new PotentialFileReader(lmp, "Si.sw", "Stillinger-Weber", flag); + if (!verbose) ::testing::internal::GetCapturedStdout(); + + unit_convert = reader->get_unit_convert(); + ASSERT_EQ(unit_convert, utils::METAL2REAL); + delete reader; +} + int main(int argc, char **argv) { MPI_Init(&argc, &argv); diff --git a/unittest/utils/test_utils.cpp b/unittest/utils/test_utils.cpp index c1312e7725..c4b4042bf9 100644 --- a/unittest/utils/test_utils.cpp +++ b/unittest/utils/test_utils.cpp @@ -341,3 +341,25 @@ TEST(Utils, potential_file) remove("ctest1.txt"); remove("ctest2.txt"); } + +TEST(Utils, unit_conversion) +{ + double factor; + int flag; + + flag = utils::get_supported_conversions(utils::UNKNOWN); + ASSERT_EQ(flag, utils::NOCONVERT); + flag = utils::get_supported_conversions(utils::ENERGY); + ASSERT_EQ(flag, utils::METAL2REAL | utils::REAL2METAL); + + factor = utils::get_conversion_factor(utils::UNKNOWN, 1 << 30 - 1); + ASSERT_DOUBLE_EQ(factor, 0.0); + factor = utils::get_conversion_factor(utils::UNKNOWN, utils::NOCONVERT); + ASSERT_DOUBLE_EQ(factor, 0.0); + factor = utils::get_conversion_factor(utils::ENERGY, utils::NOCONVERT); + ASSERT_DOUBLE_EQ(factor, 1.0); + factor = utils::get_conversion_factor(utils::ENERGY, utils::METAL2REAL); + ASSERT_DOUBLE_EQ(factor, 23.060549); + factor = utils::get_conversion_factor(utils::ENERGY, utils::REAL2METAL); + ASSERT_DOUBLE_EQ(factor, 1.0 / 23.060549); +}