From 3a613cc9103484249ffcd7c63a7ae57783b1ea18 Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Tue, 29 Sep 2020 20:50:35 +0100 Subject: Refactored Optimize(...) function to throw exceptions instead of returning null * INetwork::Optimize(...) states that the function should throw an exception if it fails but the implementation in Network.cpp returned null in some scenarios instead. This has led to some confusion amongst users. Signed-off-by: Mike Kelly Change-Id: I358d1293232c9464772aa0e39ab3355e3570c823 --- .../backendsCommon/test/OptimizedNetworkTests.cpp | 28 ++++++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) (limited to 'src/backends/backendsCommon/test/OptimizedNetworkTests.cpp') diff --git a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp index d82ee0e2fc..c8986f5d4d 100644 --- a/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp +++ b/src/backends/backendsCommon/test/OptimizedNetworkTests.cpp @@ -84,8 +84,18 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateDeviceNonSupportLayerNoFallback) armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); std::vector backends = { armnn::Compute::CpuAcc }; - armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(*net, backends, runtime->GetDeviceSpec()); - BOOST_CHECK(!optNet); + std::vector errMessages; + + try + { + Optimize(*net, backends, runtime->GetDeviceSpec(), armnn::OptimizerOptions(), errMessages); + BOOST_FAIL("Should have thrown an exception."); + } + catch (const armnn::InvalidArgumentException& e) + { + // Different exceptions are thrown on different backends + } + BOOST_CHECK(errMessages.size() > 0); } BOOST_AUTO_TEST_CASE(OptimizeValidateDeviceNonSupportLayerWithFallback) @@ -190,10 +200,18 @@ BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsUndefinedComputeDevice) armnn::IRuntimePtr runtime(armnn::IRuntime::Create(options)); std::vector backends = { armnn::Compute::Undefined }; + std::vector errMessages; - armnn::IOptimizedNetworkPtr optNet = armnn::Optimize(net, backends, runtime->GetDeviceSpec()); - BOOST_CHECK(!optNet); - + try + { + Optimize(net, backends, runtime->GetDeviceSpec(), armnn::OptimizerOptions(), errMessages); + BOOST_FAIL("Should have thrown an exception."); + } + catch (const armnn::InvalidArgumentException& e) + { + // Different exceptions are thrown on different backends + } + BOOST_CHECK(errMessages.size() > 0); } BOOST_AUTO_TEST_CASE(OptimizeValidateWorkloadsUndefinedComputeDeviceWithFallback) -- cgit v1.2.1