From 5e3de8f39d9f06bbf3fa51bef34455b5d254304e Mon Sep 17 00:00:00 2001 From: hekra Date: Sun, 6 Dec 2015 21:37:28 -0800 Subject: [PATCH] IOT-897:OCRepresentation can check attribute type Change-Id: I6a63bdb958b016385aa20b3467c61c44a1824327 Signed-off-by: Hugues Ekra Reviewed-on: https://gerrit.iotivity.org/gerrit/4429 Tested-by: jenkins-iotivity Reviewed-by: Jon A. Cruz --- resource/include/OCRepresentation.h | 31 +++++++++-- resource/unittests/OCRepresentationTest.cpp | 82 ++++++++++++++--------------- 2 files changed, 68 insertions(+), 45 deletions(-) diff --git a/resource/include/OCRepresentation.h b/resource/include/OCRepresentation.h index 687b64c..4d1d24a 100644 --- a/resource/include/OCRepresentation.h +++ b/resource/include/OCRepresentation.h @@ -168,8 +168,16 @@ namespace OC if(x!= m_values.end()) { - val = boost::get(x->second); - return true; + try + { + val = boost::get(x->second); + return true; + } + catch (boost::bad_get& e) + { + val = T(); + return false; + } } else { @@ -193,7 +201,14 @@ namespace OC auto x = m_values.find(str); if(x != m_values.end()) { - val = boost::get(x->second); + try + { + val = boost::get(x->second); + } + catch (boost::bad_get& e) + { + return val; + } } return val; } @@ -250,7 +265,15 @@ namespace OC template T getValue() const { - return boost::get(m_values[m_attrName]); + try + { + return boost::get(m_values[m_attrName]); + } + catch (boost::bad_get& e) + { + T val = T(); + return val; + } } std::string getValueToString() const; diff --git a/resource/unittests/OCRepresentationTest.cpp b/resource/unittests/OCRepresentationTest.cpp index befcdcb..5701fc2 100644 --- a/resource/unittests/OCRepresentationTest.cpp +++ b/resource/unittests/OCRepresentationTest.cpp @@ -421,9 +421,9 @@ namespace OCRepresentationTest EXPECT_EQ(nullptr, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -442,9 +442,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -463,9 +463,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); int badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -492,9 +492,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout); int badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -513,7 +513,7 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); (void)badout; } @@ -535,9 +535,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource.getUri(), repout2.getUri()); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -556,9 +556,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -577,9 +577,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -598,9 +598,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -619,9 +619,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -640,9 +640,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -662,9 +662,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -683,9 +683,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -704,9 +704,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -726,9 +726,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -747,9 +747,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -768,9 +768,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -790,9 +790,9 @@ namespace OCRepresentationTest EXPECT_EQ(repsource, repout2); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -818,9 +818,9 @@ namespace OCRepresentationTest EXPECT_EQ(inner2.getUri(), repout2[1].getUri()); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -860,9 +860,9 @@ namespace OCRepresentationTest EXPECT_EQ(inner4.getUri(), repout2[1][1].getUri()); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } @@ -922,9 +922,9 @@ namespace OCRepresentationTest EXPECT_EQ(inner8.getUri(), repout2[1][1][1].getUri()); double badout; - EXPECT_THROW(badout = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badout)); string badoutstr; - EXPECT_THROW(badoutstr = rep[AttrName], boost::bad_get); + EXPECT_FALSE(rep.getValue(AttrName, badoutstr)); (void)badout; (void)badoutstr; } -- 2.7.4