//This file is a part of G4MICE
//
//G4MICE is free software: you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation, either version 3 of the License, or
//(at your option) any later version.
//
//G4MICE is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//You should have received a copy of the GNU General Public License
//along with G4MICE in the doc folder. If not, see
//.
#include "gtest/gtest.h"
#include "src/legacy/Interface/dataCards.hh"
#include "Utils/Exception.hh"
#include
namespace {
/////////////// datacards Tests ///////////////
// Just test readkeys(std::istream) so far
class dataCardsTest : public ::testing::Test {
protected:
dataCardsTest() : key_int("numEvts"), val_int(10), key_dub("MaxZInChannel"), val_dub(1.), units_dub("m"),
bad_units_dub("nnnn"), key_str("Description"), val_str("@"), bad_key("NotAKey") {
ss_good << key_int << " " << val_int << "\n" << key_dub << " " << val_dub << " " << units_dub << "\n"
<< key_str << " " << val_str << "\n";
ss_good << "!" << bad_key << " " << val_dub << " " << units_dub << "\n";
ss_good << "#" << bad_key << " " << val_dub << " " << units_dub << "\n";
ss_bad_key << ss_good.str() << bad_key << " " << val_dub << " " << units_dub;
}
virtual ~dataCardsTest() {}
virtual void SetUp () {}
virtual void TearDown () {}
std::string key_int; int val_int;
std::string key_dub; double val_dub; std::string units_dub; std::string bad_units_dub;
std::string key_str; std::string val_str;
std::string bad_key;
std::stringstream ss_good;
std::stringstream ss_comments;
std::stringstream ss_bad_key;
};
//! Test read keys
//!
//! Check that I can read int, double, string types
//! hep3vector and vector types don't actually seem
//! to have any instantiations so don't test for them
//!
//! Also check that bad key and bad units throws an exception
TEST_F(dataCardsTest, readKeysTest)
{
dataCards dc(0);
EXPECT_NO_THROW(dc.readKeys(ss_good));
EXPECT_EQ(dc.fetchValueInt (key_int), val_int);
EXPECT_EQ(dc.fetchValueDouble(key_dub), val_dub);
EXPECT_EQ(dc.fetchValueString(key_str), val_str);
EXPECT_THROW(dc.readKeys(ss_bad_key), MAUS::Exception);
}
} //namespace