diff options
author | Sang-Hoon Park <sang-hoon.park@arm.com> | 2020-05-20 22:13:47 +0100 |
---|---|---|
committer | Sang-Hoon Park <sang-hoon.park@arm.com> | 2020-06-02 18:37:14 +0000 |
commit | c26179810823bb36375111f4a5485a6475fc97c5 (patch) | |
tree | 4c255d16bcf039b8c8dc60b10b75c2b48d4ddb7d /tests/validation | |
parent | a98dee2da0aef1c53a31045b0c681fb0abc8f8ba (diff) | |
download | ComputeLibrary-c26179810823bb36375111f4a5485a6475fc97c5.tar.gz |
COMPMID-3363: Create ScaleKernelInfo
NEScaleKernel and NEScale are modified to use the
new kernel descriptor.
Change-Id: I32e3e2a5209a38f5bf32c43f64b2aa4430825988
Signed-off-by: Sang-Hoon Park <sang-hoon.park@arm.com>
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/3239
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'tests/validation')
-rw-r--r-- | tests/validation/NEON/Scale.cpp | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/tests/validation/NEON/Scale.cpp b/tests/validation/NEON/Scale.cpp index 82ab666d4a..9ab169b251 100644 --- a/tests/validation/NEON/Scale.cpp +++ b/tests/validation/NEON/Scale.cpp @@ -230,6 +230,15 @@ TEST_SUITE(Validate) * the kernel are not currently tested. * - The same input and output * - Data type of offset, dx and dy + * This suite also tests two different validate() APIs - one is + * using @ref ScaleKernelInfo and the other one is more verbose + * one calls the other one - in the same test case. Even though + * there are possibility that it makes debugging for regression + * harder, belows are reasons of this test case implementation. + * - The more verbose one is just a wrapper function calls + * the other one without any additional logic. So we are + * safe to merge two tests into one. + * - A large amount of code duplication is test suite can be prevented. */ const auto input_shape = TensorShape{ 2, 3, 3, 2 }; @@ -252,9 +261,15 @@ TEST_CASE(NullPtr, framework::DatasetMode::ALL) result = NEScale::validate(nullptr, &output, default_interpolation_policy, default_border_mode); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + result = NEScale::validate(nullptr, &output, ScaleKernelInfo{ default_interpolation_policy, default_border_mode }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + // nullptr is given as output result = NEScale::validate(&input, nullptr, default_interpolation_policy, default_border_mode); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, nullptr, ScaleKernelInfo{ default_interpolation_policy, default_border_mode }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); } TEST_CASE(SupportDataType, framework::DatasetMode::ALL) @@ -290,7 +305,11 @@ TEST_CASE(SupportDataType, framework::DatasetMode::ALL) { const auto input = TensorInfo{ input_shape, 1, kv.first, default_data_layout }; const auto output = TensorInfo{ output_shape, 1, kv.first, default_data_layout }; - result = NEScale::validate(&input, &output, default_interpolation_policy, default_border_mode); + + result = NEScale::validate(&input, &output, default_interpolation_policy, default_border_mode); + ARM_COMPUTE_EXPECT(bool(result) == kv.second, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, &output, ScaleKernelInfo{ default_interpolation_policy, default_border_mode }); ARM_COMPUTE_EXPECT(bool(result) == kv.second, framework::LogLevel::ERRORS); } } @@ -302,8 +321,12 @@ TEST_CASE(MissmatchingDataType, framework::DatasetMode::ALL) const auto input = TensorInfo{ input_shape, 1, default_data_type, default_data_layout }; const auto output = TensorInfo{ output_shape, 1, non_default_data_type, default_data_layout }; Status result{}; + result = NEScale::validate(&input, &output, default_interpolation_policy, default_border_mode); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, &output, ScaleKernelInfo{ default_interpolation_policy, default_border_mode }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); } TEST_CASE(UsePadding, framework::DatasetMode::ALL) @@ -318,6 +341,9 @@ TEST_CASE(UsePadding, framework::DatasetMode::ALL) result = NEScale::validate(&input, &output, default_interpolation_policy, border_mode, PixelValue(), default_sampling_policy, use_padding); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, &output, ScaleKernelInfo{ default_interpolation_policy, border_mode, PixelValue(), default_sampling_policy, use_padding }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); } TEST_CASE(AreaWithNHWC, framework::DatasetMode::ALL) @@ -329,8 +355,12 @@ TEST_CASE(AreaWithNHWC, framework::DatasetMode::ALL) const auto input = TensorInfo{ input_shape, 1, default_data_type, data_layout }; const auto output = TensorInfo{ output_shape, 1, default_data_type, data_layout }; Status result{}; + result = NEScale::validate(&input, &output, interpolation_policy, default_border_mode); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, &output, ScaleKernelInfo{ interpolation_policy, default_border_mode }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); } TEST_CASE(AreaWithNonU8, framework::DatasetMode::ALL) @@ -343,8 +373,12 @@ TEST_CASE(AreaWithNonU8, framework::DatasetMode::ALL) const auto input = TensorInfo{ input_shape, 1, data_type, data_layout }; const auto output = TensorInfo{ output_shape, 1, data_type, data_layout }; Status result{}; + result = NEScale::validate(&input, &output, interpolation_policy, default_border_mode); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); + + result = NEScale::validate(&input, &output, ScaleKernelInfo{ interpolation_policy, default_border_mode }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); } TEST_CASE(InvalidAlignedCornerOutput, framework::DatasetMode::ALL) @@ -359,10 +393,13 @@ TEST_CASE(InvalidAlignedCornerOutput, framework::DatasetMode::ALL) const auto input = TensorInfo{ input_shape, 1, default_data_type, default_data_layout }; const auto output = TensorInfo{ invalid_output_shape, 1, default_data_type, default_data_layout }; Status result{}; + result = NEScale::validate(&input, &output, interpolation_policy, default_border_mode, PixelValue(), sampling_policy, default_use_padding, align_corners); ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); -} + result = NEScale::validate(&input, &output, ScaleKernelInfo{ interpolation_policy, default_border_mode, PixelValue(), sampling_policy, default_use_padding, align_corners }); + ARM_COMPUTE_EXPECT(bool(result) == false, framework::LogLevel::ERRORS); +} TEST_SUITE_END() // Validate template <typename T> |