summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--slicer/db/sqlSelectDeserializer.cpp4
-rw-r--r--slicer/db/sqlSelectDeserializer.h5
-rw-r--r--slicer/db/testSelect.cpp7
3 files changed, 15 insertions, 1 deletions
diff --git a/slicer/db/sqlSelectDeserializer.cpp b/slicer/db/sqlSelectDeserializer.cpp
index 2a499b6..96c58c1 100644
--- a/slicer/db/sqlSelectDeserializer.cpp
+++ b/slicer/db/sqlSelectDeserializer.cpp
@@ -7,6 +7,8 @@ namespace Slicer {
TooManyRowsReturned::TooManyRowsReturned() : std::runtime_error("Too many rows returned") { }
+ UnsupportedModelType::UnsupportedModelType() : std::invalid_argument("Unspported model type") { }
+
class SqlSource : public Slicer::ValueSource,
public Slicer::TValueSource<boost::posix_time::time_duration>,
public Slicer::TValueSource<boost::posix_time::ptime>
@@ -110,7 +112,7 @@ namespace Slicer {
DeserializeSimple(mp);
return;
default:
- throw std::invalid_argument("Unspported model type");
+ throw UnsupportedModelType();
}
}
diff --git a/slicer/db/sqlSelectDeserializer.h b/slicer/db/sqlSelectDeserializer.h
index 3d73c94..42a0243 100644
--- a/slicer/db/sqlSelectDeserializer.h
+++ b/slicer/db/sqlSelectDeserializer.h
@@ -16,6 +16,11 @@ namespace Slicer {
TooManyRowsReturned();
};
+ class UnsupportedModelType : public std::invalid_argument {
+ public:
+ UnsupportedModelType();
+ };
+
class DLL_PUBLIC SqlSelectDeserializer : public Slicer::Deserializer {
public:
SqlSelectDeserializer(DB::SelectCommand &, IceUtil::Optional<std::string> typeIdCol = IceUtil::Optional<std::string>());
diff --git a/slicer/db/testSelect.cpp b/slicer/db/testSelect.cpp
index 7540529..3af5282 100644
--- a/slicer/db/testSelect.cpp
+++ b/slicer/db/testSelect.cpp
@@ -153,6 +153,13 @@ BoostThrowWrapperHelper(P & ... p)
return Slicer::DeserializeAny<Slicer::SqlSelectDeserializer, T>(p...);
}
+BOOST_AUTO_TEST_CASE( select_inherit_unsupportedModel )
+{
+ auto db = DBPtr(DB::MockDatabase::openConnectionTo("pqmock"));
+ auto sel = SelectPtr(db->newSelectCommand("SELECT id FROM test"));
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<TestModule::ClassMap>(*sel), Slicer::UnsupportedModelType);
+}
+
BOOST_AUTO_TEST_CASE( select_inherit_tooManyRowsSimple )
{
auto db = DBPtr(DB::MockDatabase::openConnectionTo("pqmock"));