Use value::status to keep track of data status in DeckItem

With this commit the DeckItem::push_backDummyDefault() function will push back a
default value T( ). This will give a change in behaviour in downstream code
which has used getData<T> to get DeckItem data unchecked.
This commit is contained in:
Joakim Hove
2019-11-17 14:46:00 +01:00
parent 3156448f99
commit 6cc3b578f5
8 changed files with 64 additions and 54 deletions

View File

@@ -166,10 +166,10 @@ BOOST_AUTO_TEST_CASE(DummyDefaultsString) {
DeckItem deckStringItem("TEST", std::string() );
BOOST_CHECK_EQUAL(deckStringItem.data_size(), 0);
deckStringItem.push_backDummyDefault();
BOOST_CHECK_EQUAL(deckStringItem.data_size(), 0);
deckStringItem.push_backDummyDefault<std::string>();
BOOST_CHECK_EQUAL(deckStringItem.data_size(), 1);
BOOST_CHECK_EQUAL(true, deckStringItem.defaultApplied(0));
BOOST_CHECK_THROW(deckStringItem.get< std::string >(0), std::out_of_range);
BOOST_CHECK_THROW(deckStringItem.get< std::string >(0), std::invalid_argument);
}
BOOST_AUTO_TEST_CASE(GetStringAtIndex_NoData_ExceptionThrown) {
@@ -270,10 +270,10 @@ BOOST_AUTO_TEST_CASE(DummyDefaultsDouble) {
DeckItem deckDoubleItem( "TEST", double(), dims.first, dims.second);
BOOST_CHECK_EQUAL(deckDoubleItem.data_size(), 0);
deckDoubleItem.push_backDummyDefault();
BOOST_CHECK_EQUAL(deckDoubleItem.data_size(), 0);
deckDoubleItem.push_backDummyDefault<double>();
BOOST_CHECK_EQUAL(deckDoubleItem.data_size(), 1);
BOOST_CHECK_EQUAL(true, deckDoubleItem.defaultApplied(0));
BOOST_CHECK_THROW(deckDoubleItem.get< double >(0), std::out_of_range);
BOOST_CHECK_THROW(deckDoubleItem.get< double >(0), std::invalid_argument);
}
BOOST_AUTO_TEST_CASE(PushBackMultipleDouble) {
@@ -344,12 +344,12 @@ BOOST_AUTO_TEST_CASE(DummyDefaultsInt) {
DeckItem deckIntItem( "TEST", int() );
BOOST_CHECK_EQUAL(deckIntItem.data_size(), 0);
deckIntItem.push_backDummyDefault();
BOOST_CHECK_EQUAL(deckIntItem.data_size(), 0);
deckIntItem.push_backDummyDefault<int>();
BOOST_CHECK_EQUAL(deckIntItem.data_size(), 1);
BOOST_CHECK_EQUAL(true, deckIntItem.defaultApplied(0));
BOOST_CHECK_EQUAL( false , deckIntItem.hasValue(0));
BOOST_CHECK_EQUAL( false , deckIntItem.hasValue(1));
BOOST_CHECK_THROW(deckIntItem.get< int >(0), std::out_of_range);
BOOST_CHECK_THROW(deckIntItem.get< int >(0), std::invalid_argument);
}
BOOST_AUTO_TEST_CASE(GetIntAtIndex_NoData_ExceptionThrown) {