diff options
Diffstat (limited to 'src/backends/backendsCommon/test/WorkloadDataValidation.cpp')
-rw-r--r-- | src/backends/backendsCommon/test/WorkloadDataValidation.cpp | 118 |
1 files changed, 58 insertions, 60 deletions
diff --git a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp index 182c913777..2034a65f6d 100644 --- a/src/backends/backendsCommon/test/WorkloadDataValidation.cpp +++ b/src/backends/backendsCommon/test/WorkloadDataValidation.cpp @@ -13,13 +13,13 @@ #include <reference/workloads/RefWorkloads.hpp> #include <reference/RefWorkloadFactory.hpp> -#include <boost/test/unit_test.hpp> +#include <doctest/doctest.h> using namespace armnn; -BOOST_AUTO_TEST_SUITE(WorkloadInfoValidation) - -BOOST_AUTO_TEST_CASE(BatchNormalizationQueueDescriptor_Validate_DifferentQuantizationData) +TEST_SUITE("WorkloadInfoValidation") +{ +TEST_CASE("BatchNormalizationQueueDescriptor_Validate_DifferentQuantizationData") { TensorShape inputShape { 1, 3, 2, 2 }; TensorShape outputShape { 1, 3, 2, 2 }; @@ -42,18 +42,18 @@ BOOST_AUTO_TEST_CASE(BatchNormalizationQueueDescriptor_Validate_DifferentQuantiz invalidData.m_Beta= &sameTensor; invalidData.m_Gamma = &sameTensor; - BOOST_CHECK_NO_THROW(RefBatchNormalizationWorkload(invalidData, invalidInfo)); + CHECK_NOTHROW(RefBatchNormalizationWorkload(invalidData, invalidInfo)); } -BOOST_AUTO_TEST_CASE(QueueDescriptor_Validate_WrongNumOfInputsOutputs) +TEST_CASE("QueueDescriptor_Validate_WrongNumOfInputsOutputs") { InputQueueDescriptor invalidData; WorkloadInfo invalidInfo; //Invalid argument exception is expected, because no inputs and no outputs were defined. - BOOST_CHECK_THROW(RefWorkloadFactory().CreateInput(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefWorkloadFactory().CreateInput(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(RefPooling2dFloat32Workload_Validate_WrongDimTensor) +TEST_CASE("RefPooling2dFloat32Workload_Validate_WrongDimTensor") { armnn::TensorInfo inputTensorInfo; armnn::TensorInfo outputTensorInfo; @@ -71,10 +71,10 @@ BOOST_AUTO_TEST_CASE(RefPooling2dFloat32Workload_Validate_WrongDimTensor) AddInputToWorkload(invalidData, invalidInfo, inputTensorInfo, nullptr); // Invalid argument exception is expected, input tensor has to be 4D. - BOOST_CHECK_THROW(RefPooling2dWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefPooling2dWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(SoftmaxQueueDescriptor_Validate_WrongInputHeight) +TEST_CASE("SoftmaxQueueDescriptor_Validate_WrongInputHeight") { unsigned int inputHeight = 1; unsigned int inputWidth = 1; @@ -102,10 +102,10 @@ BOOST_AUTO_TEST_CASE(SoftmaxQueueDescriptor_Validate_WrongInputHeight) AddOutputToWorkload(invalidData, invalidInfo, outputTensorInfo, nullptr); //Invalid argument exception is expected, because height != 1. - BOOST_CHECK_THROW(RefSoftmaxWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefSoftmaxWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(FullyConnectedQueueDescriptor_Validate_RequiredDataMissing) +TEST_CASE("FullyConnectedQueueDescriptor_Validate_RequiredDataMissing") { unsigned int inputWidth = 1; unsigned int inputHeight = 1; @@ -149,11 +149,11 @@ BOOST_AUTO_TEST_CASE(FullyConnectedQueueDescriptor_Validate_RequiredDataMissing) //Invalid argument exception is expected, because not all required fields have been provided. //In particular inputsData[0], outputsData[0] and weightsData can not be null. - BOOST_CHECK_THROW(RefFullyConnectedWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefFullyConnectedWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(NormalizationQueueDescriptor_Validate_WrongInputHeight) +TEST_CASE("NormalizationQueueDescriptor_Validate_WrongInputHeight") { constexpr unsigned int inputNum = 5; constexpr unsigned int inputHeight = 32; @@ -197,10 +197,10 @@ BOOST_AUTO_TEST_CASE(NormalizationQueueDescriptor_Validate_WrongInputHeight) invalidData.m_Parameters.m_K = kappa; //Invalid argument exception is expected, because input height != output height. - BOOST_CHECK_THROW(RefNormalizationWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefNormalizationWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(SplitterQueueDescriptor_Validate_WrongWindow) +TEST_CASE("SplitterQueueDescriptor_Validate_WrongWindow") { constexpr unsigned int inputNum = 1; constexpr unsigned int inputHeight = 32; @@ -233,16 +233,15 @@ BOOST_AUTO_TEST_CASE(SplitterQueueDescriptor_Validate_WrongWindow) armnn::SplitterQueueDescriptor::ViewOrigin window(wOrigin); invalidData.m_ViewOrigins.push_back(window); - BOOST_TEST_INFO("Invalid argument exception is expected, because split window dimensionality does not " - "match input."); - BOOST_CHECK_THROW(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid argument exception is expected, because split window dimensionality does not match input."); + CHECK_THROWS_AS(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); // Invalid, since window extends past the boundary of input tensor. std::vector<unsigned int> wOrigin3 = {0, 0, 15, 0}; armnn::SplitterQueueDescriptor::ViewOrigin window3(wOrigin3); invalidData.m_ViewOrigins[0] = window3; - BOOST_TEST_INFO("Invalid argument exception is expected (wOrigin3[2]+ outputHeight > inputHeight"); - BOOST_CHECK_THROW(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid argument exception is expected (wOrigin3[2]+ outputHeight > inputHeight"); + CHECK_THROWS_AS(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); std::vector<unsigned int> wOrigin4 = {0, 0, 0, 0}; @@ -253,12 +252,12 @@ BOOST_AUTO_TEST_CASE(SplitterQueueDescriptor_Validate_WrongWindow) armnn::SplitterQueueDescriptor::ViewOrigin window5(wOrigin4); invalidData.m_ViewOrigins.push_back(window5); - BOOST_TEST_INFO("Invalid exception due to number of split windows not matching number of outputs."); - BOOST_CHECK_THROW(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid exception due to number of split windows not matching number of outputs."); + CHECK_THROWS_AS(RefSplitterWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(ConcatQueueDescriptor_Validate_WrongWindow) +TEST_CASE("ConcatQueueDescriptor_Validate_WrongWindow") { constexpr unsigned int inputNum = 1; constexpr unsigned int inputChannels = 3; @@ -291,16 +290,15 @@ BOOST_AUTO_TEST_CASE(ConcatQueueDescriptor_Validate_WrongWindow) armnn::ConcatQueueDescriptor::ViewOrigin window(wOrigin); invalidData.m_ViewOrigins.push_back(window); - BOOST_TEST_INFO("Invalid argument exception is expected, because merge window dimensionality does not " - "match input."); - BOOST_CHECK_THROW(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid argument exception is expected, because merge window dimensionality does not match input."); + CHECK_THROWS_AS(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); // Invalid, since window extends past the boundary of output tensor. std::vector<unsigned int> wOrigin3 = {0, 0, 15, 0}; armnn::ConcatQueueDescriptor::ViewOrigin window3(wOrigin3); invalidData.m_ViewOrigins[0] = window3; - BOOST_TEST_INFO("Invalid argument exception is expected (wOrigin3[2]+ inputHeight > outputHeight"); - BOOST_CHECK_THROW(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid argument exception is expected (wOrigin3[2]+ inputHeight > outputHeight"); + CHECK_THROWS_AS(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); std::vector<unsigned int> wOrigin4 = {0, 0, 0, 0}; @@ -311,11 +309,11 @@ BOOST_AUTO_TEST_CASE(ConcatQueueDescriptor_Validate_WrongWindow) armnn::ConcatQueueDescriptor::ViewOrigin window5(wOrigin4); invalidData.m_ViewOrigins.push_back(window5); - BOOST_TEST_INFO("Invalid exception due to number of merge windows not matching number of inputs."); - BOOST_CHECK_THROW(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + INFO("Invalid exception due to number of merge windows not matching number of inputs."); + CHECK_THROWS_AS(RefConcatWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(AdditionQueueDescriptor_Validate_InputNumbers) +TEST_CASE("AdditionQueueDescriptor_Validate_InputNumbers") { armnn::TensorInfo input1TensorInfo; armnn::TensorInfo input2TensorInfo; @@ -336,20 +334,20 @@ BOOST_AUTO_TEST_CASE(AdditionQueueDescriptor_Validate_InputNumbers) AddOutputToWorkload(invalidData, invalidInfo, outputTensorInfo, nullptr); // Too few inputs. - BOOST_CHECK_THROW(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); AddInputToWorkload(invalidData, invalidInfo, input2TensorInfo, nullptr); // Correct. - BOOST_CHECK_NO_THROW(RefAdditionWorkload<>(invalidData, invalidInfo)); + CHECK_NOTHROW(RefAdditionWorkload<>(invalidData, invalidInfo)); AddInputToWorkload(invalidData, invalidInfo, input3TensorInfo, nullptr); // Too many inputs. - BOOST_CHECK_THROW(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(AdditionQueueDescriptor_Validate_InputShapes) +TEST_CASE("AdditionQueueDescriptor_Validate_InputShapes") { armnn::TensorInfo input1TensorInfo; armnn::TensorInfo input2TensorInfo; @@ -371,7 +369,7 @@ BOOST_AUTO_TEST_CASE(AdditionQueueDescriptor_Validate_InputShapes) AddInputToWorkload(invalidData, invalidInfo, input2TensorInfo, nullptr); AddOutputToWorkload(invalidData, invalidInfo, outputTensorInfo, nullptr); - BOOST_CHECK_THROW(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); } // Output size not compatible with input sizes. @@ -388,11 +386,11 @@ BOOST_AUTO_TEST_CASE(AdditionQueueDescriptor_Validate_InputShapes) AddOutputToWorkload(invalidData, invalidInfo, outputTensorInfo, nullptr); // Output differs. - BOOST_CHECK_THROW(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefAdditionWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); } } -BOOST_AUTO_TEST_CASE(MultiplicationQueueDescriptor_Validate_InputTensorDimensionMismatch) +TEST_CASE("MultiplicationQueueDescriptor_Validate_InputTensorDimensionMismatch") { armnn::TensorInfo input0TensorInfo; armnn::TensorInfo input1TensorInfo; @@ -423,7 +421,7 @@ BOOST_AUTO_TEST_CASE(MultiplicationQueueDescriptor_Validate_InputTensorDimension AddInputToWorkload(invalidData, invalidInfo, input0TensorInfo, nullptr); AddInputToWorkload(invalidData, invalidInfo, input1TensorInfo, nullptr); - BOOST_CHECK_THROW(RefMultiplicationWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefMultiplicationWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); } // Checks dimension consistency for input and output tensors. @@ -448,11 +446,11 @@ BOOST_AUTO_TEST_CASE(MultiplicationQueueDescriptor_Validate_InputTensorDimension AddInputToWorkload(invalidData, invalidInfo, input0TensorInfo, nullptr); AddInputToWorkload(invalidData, invalidInfo, input1TensorInfo, nullptr); - BOOST_CHECK_THROW(RefMultiplicationWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefMultiplicationWorkload<>(invalidData, invalidInfo), armnn::InvalidArgumentException); } } -BOOST_AUTO_TEST_CASE(ReshapeQueueDescriptor_Validate_MismatchingNumElements) +TEST_CASE("ReshapeQueueDescriptor_Validate_MismatchingNumElements") { armnn::TensorInfo inputTensorInfo; armnn::TensorInfo outputTensorInfo; @@ -471,11 +469,11 @@ BOOST_AUTO_TEST_CASE(ReshapeQueueDescriptor_Validate_MismatchingNumElements) AddOutputToWorkload(invalidData, invalidInfo, outputTensorInfo, nullptr); // InvalidArgumentException is expected, because the number of elements don't match. - BOOST_CHECK_THROW(RefReshapeWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); + CHECK_THROWS_AS(RefReshapeWorkload(invalidData, invalidInfo), armnn::InvalidArgumentException); } -BOOST_AUTO_TEST_CASE(LstmQueueDescriptor_Validate) +TEST_CASE("LstmQueueDescriptor_Validate") { armnn::DataType dataType = armnn::DataType::Float32; @@ -568,61 +566,61 @@ BOOST_AUTO_TEST_CASE(LstmQueueDescriptor_Validate) data.m_Parameters.m_LayerNormEnabled = true; // check wrong number of outputs - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); AddOutputToWorkload(data, info, outputTensorInfo, nullptr); // check wrong cifg parameter configuration data.m_Parameters.m_CifgEnabled = true; armnn::TensorInfo scratchBufferTensorInfo2({batchSize, numUnits * 3}, dataType, qScale, qOffset); SetWorkloadOutput(data, info, 0, scratchBufferTensorInfo2, nullptr); - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_Parameters.m_CifgEnabled = false; SetWorkloadOutput(data, info, 0, scratchBufferTensorInfo, nullptr); // check wrong inputGateBias configuration data.m_InputGateBias = nullptr; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_InputGateBias = &inputGateBiasTensor; // check inconsistant projection parameters data.m_Parameters.m_ProjectionEnabled = false; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_Parameters.m_ProjectionEnabled = true; data.m_ProjectionWeights = nullptr; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_ProjectionWeights = &projectionWeightsTensor; // check missing input layer normalisation weights data.m_InputLayerNormWeights = nullptr; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_InputLayerNormWeights = &inputLayerNormWeightsTensor; // layer norm disabled but normalisation weights are present data.m_Parameters.m_LayerNormEnabled = false; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_Parameters.m_LayerNormEnabled = true; // check invalid outputTensor shape armnn::TensorInfo incorrectOutputTensorInfo({batchSize, outputSize + 1}, dataType, qScale, qOffset); SetWorkloadOutput(data, info, 3, incorrectOutputTensorInfo, nullptr); - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); SetWorkloadOutput(data, info, 3, outputTensorInfo, nullptr); // check invalid cell clipping parameters data.m_Parameters.m_ClippingThresCell = -1.0f; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_Parameters.m_ClippingThresCell = 0.0f; // check invalid projection clipping parameters data.m_Parameters.m_ClippingThresProj = -1.0f; - BOOST_CHECK_THROW(data.Validate(info), armnn::InvalidArgumentException); + CHECK_THROWS_AS(data.Validate(info), armnn::InvalidArgumentException); data.m_Parameters.m_ClippingThresProj = 0.0f; // check correct configuration - BOOST_CHECK_NO_THROW(data.Validate(info)); + CHECK_NOTHROW(data.Validate(info)); } -BOOST_AUTO_TEST_CASE(BiasPerAxisQuantization_Validate) +TEST_CASE("BiasPerAxisQuantization_Validate") { constexpr unsigned int nInput = 1u; constexpr unsigned int cInput = 3u; @@ -667,7 +665,7 @@ BOOST_AUTO_TEST_CASE(BiasPerAxisQuantization_Validate) ScopedTensorHandle biasHandle1(biasInfo1); queueDescriptor.m_Bias = &biasHandle1; - BOOST_CHECK_NO_THROW(queueDescriptor.Validate(workloadInfo)); + CHECK_NOTHROW(queueDescriptor.Validate(workloadInfo)); // Test 2: wrong per-axis quantization values const std::vector<float> biasPerAxisScales2 = { 4.00f, 5.00f }; @@ -676,7 +674,7 @@ BOOST_AUTO_TEST_CASE(BiasPerAxisQuantization_Validate) ScopedTensorHandle biasHandle2(biasInfo2); queueDescriptor.m_Bias = &biasHandle2; - BOOST_CHECK_NO_THROW(queueDescriptor.Validate(workloadInfo)); + CHECK_NOTHROW(queueDescriptor.Validate(workloadInfo)); // Test 3: mismatched number of quantization scales const std::vector<float> biasPerAxisScales3 = { 3.75f, 5.25f, 5.25f }; @@ -685,7 +683,7 @@ BOOST_AUTO_TEST_CASE(BiasPerAxisQuantization_Validate) ScopedTensorHandle biasHandle3(biasInfo3); queueDescriptor.m_Bias = &biasHandle3; - BOOST_CHECK_THROW(queueDescriptor.Validate(workloadInfo), InvalidArgumentException); + CHECK_THROWS_AS(queueDescriptor.Validate(workloadInfo), InvalidArgumentException); } -BOOST_AUTO_TEST_SUITE_END() +} |