2 #include <libmesh/getpot.h> 5 #include <libmesh/libmesh.h> 16 CPPUNIT_TEST( testVariables );
17 CPPUNIT_TEST( testSections );
18 CPPUNIT_TEST( testSubSections );
19 CPPUNIT_TEST( testCommandLine );
21 CPPUNIT_TEST_SUITE_END();
57 " [../../Subsection4]\n" 65 " unused_var = 'not_used'\n";
72 this->setup_inputfile();
73 input.parse_input_stream(inputfile);
79 CPPUNIT_ASSERT( input.have_variable(
"Section1/var1") );
80 Real var1 = input(
"Section1/var1", 1.0);
81 CPPUNIT_ASSERT_EQUAL( var1,
Real(5));
83 CPPUNIT_ASSERT( input.have_variable(
"Section1/SubSection1/var2") );
84 std::string var2 = input(
"Section1/SubSection1/var2",
"DIE!");
85 CPPUNIT_ASSERT_EQUAL( var2, std::string(
"blah") );
88 CPPUNIT_ASSERT( !input.have_variable(
"Section2/var3") );
89 int var3 = input(
"Section2/var3", 314);
90 CPPUNIT_ASSERT_EQUAL( var3, 314 );
92 CPPUNIT_ASSERT( input.have_variable(
"Section2/Subsection2/var4") );
93 bool var4 = input(
"Section2/Subsection2/var4",
true);
94 CPPUNIT_ASSERT_EQUAL( var4,
false );
96 CPPUNIT_ASSERT( input.have_variable(
"Section2/Subsection2/Subsection3/var5") );
97 Real var5 = input(
"Section2/Subsection2/Subsection3/var5", 3.1415);
98 CPPUNIT_ASSERT_EQUAL( var5,
Real(6.02e23));
100 CPPUNIT_ASSERT( input.have_variable(
"Section2/Subsection4/var6") );
101 unsigned int var6 = input(
"Section2/Subsection4/var6", 21);
102 CPPUNIT_ASSERT_EQUAL(var6, static_cast<unsigned int>(42));
105 std::vector<std::string> ufos = input.unidentified_variables();
106 CPPUNIT_ASSERT_EQUAL( ufos.size(), (std::vector<std::string>::size_type)1 );
107 CPPUNIT_ASSERT_EQUAL( ufos[0], std::string(
"Section3/unused_var") );
114 CPPUNIT_ASSERT(input.have_section(
"Section1/"));
115 CPPUNIT_ASSERT(input.have_section(
"Section1/SubSection1/"));
116 CPPUNIT_ASSERT(input.have_section(
"Section2/Subsection2/"));
117 CPPUNIT_ASSERT(input.have_section(
"Section2/Subsection2/Subsection3/"));
118 CPPUNIT_ASSERT(input.have_section(
"Section2/Subsection4/"));
119 CPPUNIT_ASSERT(input.have_section(
"Section3/"));
122 CPPUNIT_ASSERT(input.have_section(
"Section1"));
123 CPPUNIT_ASSERT(input.have_section(
"Section1/SubSection1"));
124 CPPUNIT_ASSERT(input.have_section(
"Section2/Subsection2/Subsection3"));
127 CPPUNIT_ASSERT(!input.have_section(
"ImNotASection/"));
133 typedef std::vector<std::string>::size_type sz;
134 typedef std::string str;
136 const std::vector<std::string> subsections1 =
137 input.get_subsection_names(
"Section1");
139 CPPUNIT_ASSERT_EQUAL(subsections1.size(), sz(1));
140 CPPUNIT_ASSERT_EQUAL(subsections1[0], str(
"SubSection1"));
142 const std::vector<std::string> subsections1_1 =
143 input.get_subsection_names(
"Section1/Subsection1");
145 CPPUNIT_ASSERT(subsections1_1.empty());
147 const std::vector<std::string> subsections2 =
148 input.get_subsection_names(
"Section2");
150 CPPUNIT_ASSERT_EQUAL(subsections2.size(), sz(2));
151 CPPUNIT_ASSERT_EQUAL(subsections2[0], str(
"Subsection2"));
152 CPPUNIT_ASSERT_EQUAL(subsections2[1], str(
"Subsection4"));
154 const std::vector<std::string> subsections2_2 =
155 input.get_subsection_names(
"Section2/Subsection2");
157 CPPUNIT_ASSERT_EQUAL(subsections2_2.size(), sz(1));
158 CPPUNIT_ASSERT_EQUAL(subsections2_2[0], str(
"Subsection3"));
160 const std::vector<std::string> subsections2_4 =
161 input.get_subsection_names(
"Section2/Subsection4");
163 CPPUNIT_ASSERT(subsections2_4.empty());
165 const std::vector<std::string> subsections3 =
166 input.get_subsection_names(
"Section3");
168 CPPUNIT_ASSERT(subsections3.empty());
T command_line_next(std::string name, T default_value)
Use GetPot's search()/next() functions to get following arguments from the command line...
std::stringstream inputfile
CPPUNIT_TEST_SUITE_REGISTRATION(GetPotTest)
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
bool on_command_line(std::string arg)