From c0c93a692362e8e00301b7e3785d4bfed3111ec2 Mon Sep 17 00:00:00 2001 From: Simon Heybrock <simon.heybrock@esss.se> Date: Thu, 16 Mar 2017 07:49:24 +0100 Subject: [PATCH] Re #19016. Assert exception text in Beamline::DetectorInfo. --- Framework/Beamline/src/DetectorInfo.cpp | 2 +- Framework/Beamline/test/DetectorInfoTest.h | 57 +++++++++++++++++----- 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/Framework/Beamline/src/DetectorInfo.cpp b/Framework/Beamline/src/DetectorInfo.cpp index 20d46301083..efb95ad9b88 100644 --- a/Framework/Beamline/src/DetectorInfo.cpp +++ b/Framework/Beamline/src/DetectorInfo.cpp @@ -204,7 +204,7 @@ void DetectorInfo::setScanInterval( initScanIntervals(); if (interval.first >= interval.second) throw std::runtime_error( - "DetectorInfo: cannot set scan interval with start > end"); + "DetectorInfo: cannot set scan interval with start >= end"); m_scanIntervals.access()[index] = interval; } diff --git a/Framework/Beamline/test/DetectorInfoTest.h b/Framework/Beamline/test/DetectorInfoTest.h index 9ca8a7d4ea5..418746bc99c 100644 --- a/Framework/Beamline/test/DetectorInfoTest.h +++ b/Framework/Beamline/test/DetectorInfoTest.h @@ -275,8 +275,14 @@ public: void test_setScanInterval_failures() { DetectorInfo info(PosVec(1), RotVec(1)); - TS_ASSERT_THROWS(info.setScanInterval(0, {1, 1}), std::runtime_error); - TS_ASSERT_THROWS(info.setScanInterval(0, {2, 1}), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + info.setScanInterval(0, {1, 1}), const std::runtime_error &e, + std::string(e.what()), + "DetectorInfo: cannot set scan interval with start >= end"); + TS_ASSERT_THROWS_EQUALS( + info.setScanInterval(0, {2, 1}), const std::runtime_error &e, + std::string(e.what()), + "DetectorInfo: cannot set scan interval with start >= end"); } void test_merge_fail_size() { @@ -285,18 +291,26 @@ public: a.setScanInterval(0, {0, 1}); b.setScanInterval(0, {0, 1}); b.setScanInterval(1, {0, 1}); - TS_ASSERT_THROWS(a.merge(b), std::runtime_error); + TS_ASSERT_THROWS_EQUALS(a.merge(b), const std::runtime_error &e, + std::string(e.what()), + "Cannot merge DetectorInfo: size mismatch"); } void test_merge_fail_no_intervals() { DetectorInfo a(PosVec(1), RotVec(1)); DetectorInfo b(PosVec(1), RotVec(1)); DetectorInfo c(PosVec(1), RotVec(1)); - TS_ASSERT_THROWS(a.merge(b), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + a.merge(b), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals not defined"); c.setScanInterval(0, {0, 1}); - TS_ASSERT_THROWS(a.merge(c), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + a.merge(c), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals not defined"); a.setScanInterval(0, {0, 1}); - TS_ASSERT_THROWS(a.merge(b), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + a.merge(b), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals not defined"); } void test_merge_fail_monitor_mismatch() { @@ -306,7 +320,9 @@ public: a.setScanInterval(1, {0, 1}); b.setScanInterval(0, {0, 1}); b.setScanInterval(1, {0, 1}); - TS_ASSERT_THROWS(a.merge(b), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + a.merge(b), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: monitor flags mismatch"); } void test_merge_identical_interval_failures() { @@ -326,19 +342,28 @@ public: b = a; b.setMasked(0, false); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS(b.merge(a), const std::runtime_error &e, + std::string(e.what()), "Cannot merge DetectorInfo: " + "matching scan interval but " + "mask flags differ"); b.setMasked(0, true); TS_ASSERT_THROWS_NOTHING(b.merge(a)); b = a; b.setPosition(0, pos2); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS(b.merge(a), const std::runtime_error &e, + std::string(e.what()), "Cannot merge DetectorInfo: " + "matching scan interval but " + "positions differ"); b.setPosition(0, pos1); TS_ASSERT_THROWS_NOTHING(b.merge(a)); b = a; b.setRotation(0, rot2); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS(b.merge(a), const std::runtime_error &e, + std::string(e.what()), "Cannot merge DetectorInfo: " + "matching scan interval but " + "rotations differ"); b.setRotation(0, rot1); TS_ASSERT_THROWS_NOTHING(b.merge(a)); } @@ -368,11 +393,17 @@ public: TS_ASSERT_THROWS_NOTHING(b.merge(a)); b = a; b.setScanInterval(1, {-1, 5}); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + b.merge(a), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals overlap but not identical"); b.setScanInterval(1, {1, 5}); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + b.merge(a), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals overlap but not identical"); b.setScanInterval(1, {1, 11}); - TS_ASSERT_THROWS(b.merge(a), std::runtime_error); + TS_ASSERT_THROWS_EQUALS( + b.merge(a), const std::runtime_error &e, std::string(e.what()), + "Cannot merge DetectorInfo: scan intervals overlap but not identical"); } void test_merge() { -- GitLab