Skip to content

Commit 15ca24a

Browse files
committed
add more unittests
1 parent f562e4f commit 15ca24a

File tree

1 file changed

+58
-6
lines changed

1 file changed

+58
-6
lines changed

source/module_hamilt_general/module_vdw/test/dftd3_xc_test.cpp

Lines changed: 58 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,31 @@
44

55
TEST(DFTD3XCTest, SearchXcnameLibXCXplusC)
66
{
7-
std::string xcpattern = "XC_GGA_X_PBE+XC_GGA_C_OP_PBE";
87
std::string xname;
9-
DFTD3::_xcname_libxc_xplusc(xcpattern, xname);
8+
DFTD3::_xcname_libxc_xplusc("XC_GGA_X_PBE+XC_GGA_C_OP_PBE", xname);
9+
EXPECT_EQ(xname, "pbeop");
10+
// then test the case with out prefix XC_
11+
DFTD3::_xcname_libxc_xplusc("GGA_X_PBE+GGA_C_OP_PBE", xname);
1012
EXPECT_EQ(xname, "pbeop");
1113
}
1214

1315
TEST(DFTD3XCTest, SearchXcnameLibXCXC)
1416
{
15-
std::string xcpattern = "XC_LDA_XC_TETER93";
1617
std::string xname;
17-
DFTD3::_xcname_libxc_xc(xcpattern, xname);
18+
DFTD3::_xcname_libxc_xc("XC_LDA_XC_TETER93", xname);
19+
EXPECT_EQ(xname, "teter93");
20+
// then test the case with out prefix XC_
21+
DFTD3::_xcname_libxc_xc("LDA_XC_TETER93", xname);
1822
EXPECT_EQ(xname, "teter93");
1923
}
2024

2125
TEST(DFTD3XCTest, SearchXcnameLibXC)
2226
{
23-
std::string xcpattern = "XC_GGA_X_PBE+XC_GGA_C_OP_PBE";
2427
std::string xname;
25-
DFTD3::_xcname_libxc(xcpattern, xname);
28+
DFTD3::_xcname_libxc("XC_GGA_X_PBE+XC_GGA_C_OP_PBE", xname);
29+
EXPECT_EQ(xname, "pbeop");
30+
// then test the case with out prefix XC_
31+
DFTD3::_xcname_libxc("GGA_X_PBE+GGA_C_OP_PBE", xname);
2632
EXPECT_EQ(xname, "pbeop");
2733
}
2834

@@ -45,6 +51,52 @@ TEST(DFTD3XCTest, SearchXcname)
4551
EXPECT_EQ(xname, "pbe");
4652
}
4753

54+
TEST(DFTD3XCTest, SuccessfulSearch)
55+
{
56+
std::string xc = "pbe";
57+
std::string d3method = "d3_0";
58+
std::string s6_in = "default";
59+
std::string s8_in = "default";
60+
std::string a1_in = "default";
61+
std::string a2_in = "default";
62+
double s6, s8, a1, a2;
63+
DFTD3::dftd3_params(xc, d3method, s6_in, s8_in, a1_in, a2_in, s6, s8, a1, a2);
64+
EXPECT_DOUBLE_EQ(s6, 1.0);
65+
EXPECT_DOUBLE_EQ(s8, 0.722);
66+
EXPECT_DOUBLE_EQ(a1, 1.217);
67+
EXPECT_DOUBLE_EQ(a2, 1.0);
68+
69+
// a more complicated case: MGGA_X_SCAN+MGGA_C_SCAN
70+
xc = "XC_MGGA_X_SCAN+XC_MGGA_C_SCAN";
71+
DFTD3::dftd3_params(xc, d3method, s6_in, s8_in, a1_in, a2_in, s6, s8, a1, a2);
72+
EXPECT_DOUBLE_EQ(s6, 1.0);
73+
EXPECT_DOUBLE_EQ(s8, 0.0);
74+
EXPECT_DOUBLE_EQ(a1, 1.324);
75+
EXPECT_DOUBLE_EQ(a2, 1.0);
76+
77+
// user defines all parameters
78+
s6_in = "1.1";
79+
s8_in = "0.1";
80+
a1_in = "1.325";
81+
a2_in = "1.1";
82+
DFTD3::dftd3_params(xc, d3method, s6_in, s8_in, a1_in, a2_in, s6, s8, a1, a2);
83+
EXPECT_DOUBLE_EQ(s6, 1.1);
84+
EXPECT_DOUBLE_EQ(s8, 0.1);
85+
EXPECT_DOUBLE_EQ(a1, 1.325);
86+
EXPECT_DOUBLE_EQ(a2, 1.1);
87+
88+
// user defines one parameter
89+
s6_in = "1.1";
90+
s8_in = "default";
91+
a1_in = "default";
92+
a2_in = "default";
93+
DFTD3::dftd3_params(xc, d3method, s6_in, s8_in, a1_in, a2_in, s6, s8, a1, a2);
94+
EXPECT_DOUBLE_EQ(s6, 1.1);
95+
EXPECT_DOUBLE_EQ(s8, 0.0);
96+
EXPECT_DOUBLE_EQ(a1, 1.324);
97+
EXPECT_DOUBLE_EQ(a2, 1.0);
98+
}
99+
48100
int main(int argc, char **argv)
49101
{
50102
::testing::InitGoogleTest(&argc, argv);

0 commit comments

Comments
 (0)