22 #include "gtest/gtest.h" 
   27     class CmdArgumentsTest : 
public ::testing::Test {
 
   33             char exe_name[] = 
"test";
 
   34             char a1[]       = 
"--arg1=val1";
 
   35             char a2[]       = 
"--arg2=2.2";
 
   36             char *argv[]    = { exe_name, a1, a2 };
 
   41         virtual ~CmdArgumentsTest() {
 
   48         virtual void SetUp() {
 
   53         virtual void TearDown() {
 
   59         std::unique_ptr<CmdArguments> args_;
 
   62     TEST_F(CmdArgumentsTest, RetrieveCorrectFatal) {
 
   64         std::string arg1 = args_->getArg<std::string>(
"arg1", 
true);
 
   65         double arg2 = args_->getArg<
double>(
"arg2", 
true);
 
   67         EXPECT_EQ(
"val1", arg1) << 
"first argument string value wrong";
 
   68         EXPECT_EQ(2.2, arg2)    << 
"second argument double value wrong";
 
   71     TEST_F(CmdArgumentsTest, ThrowOnNotPresentFatal) {
 
   74             args_->getArg<std::string>(
"arg11", 
true)
 
   78     TEST_F(CmdArgumentsTest, CorrectDefaultIfNotPresent) {
 
   80         double arg = args_->getArg<
double>(
"arg22", 10.0, 
false);
 
   81         EXPECT_EQ(10.0, arg) << 
"second argument double value wrong";
 
   86 int main(
int argc, 
char **argv) {
 
   87     ::testing::InitGoogleTest(&argc, argv);
 
   88     return RUN_ALL_TESTS();
 
int main(int argc, char *argv[])