diff options
-rw-r--r-- | tests/validation/UNIT/TensorInfo.cpp | 89 | ||||
-rw-r--r-- | tests/validation/UNIT/TensorShape.cpp | 73 | ||||
-rw-r--r-- | tests/validation_old/UNIT/TensorInfo.cpp | 91 | ||||
-rw-r--r-- | tests/validation_old/UNIT/TensorShape.cpp | 70 | ||||
-rw-r--r-- | utils/TypePrinter.h | 8 |
5 files changed, 170 insertions, 161 deletions
diff --git a/tests/validation/UNIT/TensorInfo.cpp b/tests/validation/UNIT/TensorInfo.cpp new file mode 100644 index 0000000000..2a6c3365ea --- /dev/null +++ b/tests/validation/UNIT/TensorInfo.cpp @@ -0,0 +1,89 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "arm_compute/core/TensorInfo.h" +#include "arm_compute/core/Types.h" +#include "tests/framework/Asserts.h" +#include "tests/framework/Macros.h" +#include "tests/framework/datasets/Datasets.h" +#include "tests/validation/Validation.h" +#include "utils/TypePrinter.h" + +namespace arm_compute +{ +namespace test +{ +namespace validation +{ +TEST_SUITE(UNIT) +TEST_SUITE(TensorInfoValidation) + +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(AutoPadding, framework::DatasetMode::ALL, zip(zip(zip( + framework::dataset::make("TensorShape", { + TensorShape{}, + TensorShape{ 10U }, + TensorShape{ 10U, 10U }, + TensorShape{ 10U, 10U, 10U }, + TensorShape{ 10U, 10U, 10U, 10U }, + TensorShape{ 10U, 10U, 10U, 10U, 10U }, + TensorShape{ 10U, 10U, 10U, 10U, 10U, 10U }}), + framework::dataset::make("PaddingSize", { + PaddingSize{ 0, 0, 0, 0 }, + PaddingSize{ 0, 36, 0, 4 }, + PaddingSize{ 4, 36, 4, 4 }, + PaddingSize{ 4, 36, 4, 4 }, + PaddingSize{ 4, 36, 4, 4 }, + PaddingSize{ 4, 36, 4, 4 }, + PaddingSize{ 4, 36, 4, 4 }})), + framework::dataset::make("Strides", { + Strides{}, + Strides{ 1U, 50U }, + Strides{ 1U, 50U }, + Strides{ 1U, 50U, 900U }, + Strides{ 1U, 50U, 900U, 9000U }, + Strides{ 1U, 50U, 900U, 9000U, 90000U }, + Strides{ 1U, 50U, 900U, 9000U, 90000U, 900000U }})), + framework::dataset::make("Offset", { 0U, 4U, 204U, 204U, 204U, 204U, 204U })), + shape, auto_padding, strides, offset) +{ + TensorInfo info{ shape, Format::U8 }; + + ARM_COMPUTE_EXPECT(!info.has_padding(), framework::LogLevel::ERRORS); + + info.auto_padding(); + + validate(info.padding(), auto_padding); + + ARM_COMPUTE_EXPECT(compare_dimensions(info.strides_in_bytes(), strides), framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT(info.offset_first_element_in_bytes() == offset, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + +TEST_SUITE_END() // TensorInfoValidation +TEST_SUITE_END() +} // namespace validation +} // namespace test +} // namespace arm_compute diff --git a/tests/validation/UNIT/TensorShape.cpp b/tests/validation/UNIT/TensorShape.cpp new file mode 100644 index 0000000000..31f95e3f8c --- /dev/null +++ b/tests/validation/UNIT/TensorShape.cpp @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2017 ARM Limited. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ +#include "tests/framework/Macros.h" +#include "tests/framework/datasets/Datasets.h" +#include "tests/validation/Validation.h" + +namespace arm_compute +{ +namespace test +{ +namespace validation +{ +TEST_SUITE(UNIT) +TEST_SUITE(TensorShapeValidation) + +// *INDENT-OFF* +// clang-format off +DATA_TEST_CASE(Construction, framework::DatasetMode::ALL, zip(zip( + framework::dataset::make("TensorShape", { + TensorShape{}, + TensorShape{ 1U }, + TensorShape{ 2U }, + TensorShape{ 2U, 3U }, + TensorShape{ 2U, 3U, 5U }, + TensorShape{ 2U, 3U, 5U, 7U }, + TensorShape{ 2U, 3U, 5U, 7U, 11U }, + TensorShape{ 2U, 3U, 5U, 7U, 11U, 13U }}), + framework::dataset::make("NumDimensions", { 0U, 1U, 1U, 2U, 3U, 4U, 5U, 6U })), + framework::dataset::make("TotalSize", { 0U, 1U, 2U, 6U, 30U, 210U, 2310U, 30030U })), + shape, num_dimensions, total_size) +{ + ARM_COMPUTE_EXPECT(shape.num_dimensions() == num_dimensions, framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT(shape.total_size() == total_size, framework::LogLevel::ERRORS); +} +// clang-format on +// *INDENT-ON* + +DATA_TEST_CASE(SetEmpty, framework::DatasetMode::ALL, framework::dataset::make("Dimension", { 0U, 1U, 2U, 3U, 4U, 5U }), dimension) +{ + TensorShape shape; + + shape.set(dimension, 10); + + ARM_COMPUTE_EXPECT(shape.num_dimensions() == dimension + 1, framework::LogLevel::ERRORS); + ARM_COMPUTE_EXPECT(shape.total_size() == 10, framework::LogLevel::ERRORS); +} + +TEST_SUITE_END() // TensorShapeValidation +TEST_SUITE_END() +} // namespace validation +} // namespace test +} // namespace arm_compute diff --git a/tests/validation_old/UNIT/TensorInfo.cpp b/tests/validation_old/UNIT/TensorInfo.cpp deleted file mode 100644 index ec1db42e97..0000000000 --- a/tests/validation_old/UNIT/TensorInfo.cpp +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include "tests/validation_old/Validation.h" -#include "utils/TypePrinter.h" - -#include "arm_compute/core/TensorInfo.h" -#include "arm_compute/core/Types.h" - -#include "tests/validation_old/boost_wrapper.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::validation; - -#ifndef DOXYGEN_SKIP_THIS -BOOST_AUTO_TEST_SUITE(UNIT) -BOOST_AUTO_TEST_SUITE(TensorInfoValidation) - -BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) -BOOST_DATA_TEST_CASE(AutoPadding, - boost::unit_test::data::make({ TensorShape{}, - TensorShape{ 10U }, - TensorShape{ 10U, 10U }, - TensorShape{ 10U, 10U, 10U }, - TensorShape{ 10U, 10U, 10U, 10U }, - TensorShape{ 10U, 10U, 10U, 10U, 10U }, - TensorShape{ 10U, 10U, 10U, 10U, 10U, 10U } - }) - ^ boost::unit_test::data::make({ PaddingSize{ 0, 0, 0, 0 }, - PaddingSize{ 0, 36, 0, 4 }, - PaddingSize{ 4, 36, 4, 4 }, - PaddingSize{ 4, 36, 4, 4 }, - PaddingSize{ 4, 36, 4, 4 }, - PaddingSize{ 4, 36, 4, 4 }, - PaddingSize{ 4, 36, 4, 4 } - }) - ^ boost::unit_test::data::make({ Strides{}, - Strides{ 1U, 50U }, - Strides{ 1U, 50U }, - Strides{ 1U, 50U, 900U }, - Strides{ 1U, 50U, 900U, 9000U }, - Strides{ 1U, 50U, 900U, 9000U, 90000U }, - Strides{ 1U, 50U, 900U, 9000U, 90000U, 900000U } - }) - ^ boost::unit_test::data::make( -{ - 0, - 4, - 204, - 204, - 204, - 204, - 204, -}), -shape, auto_padding, strides, offset) -{ - TensorInfo info{ shape, Format::U8 }; - - BOOST_TEST(!info.has_padding()); - - info.auto_padding(); - - validate(info.padding(), auto_padding); - BOOST_TEST(compare_dimensions(info.strides_in_bytes(), strides)); - BOOST_TEST(info.offset_first_element_in_bytes() == offset); -} - -BOOST_AUTO_TEST_SUITE_END() -BOOST_AUTO_TEST_SUITE_END() -#endif /* DOXYGEN_SKIP_THIS */ diff --git a/tests/validation_old/UNIT/TensorShape.cpp b/tests/validation_old/UNIT/TensorShape.cpp deleted file mode 100644 index ef888b24c8..0000000000 --- a/tests/validation_old/UNIT/TensorShape.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2017 ARM Limited. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -#include "tests/validation_old/Validation.h" -#include "utils/TypePrinter.h" - -#include "arm_compute/core/TensorShape.h" - -#include "tests/validation_old/boost_wrapper.h" - -using namespace arm_compute; -using namespace arm_compute::test; -using namespace arm_compute::test::validation; - -#ifndef DOXYGEN_SKIP_THIS -BOOST_AUTO_TEST_SUITE(UNIT) -BOOST_AUTO_TEST_SUITE(TensorShapeValidation) - -BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) -BOOST_DATA_TEST_CASE(Construction, - boost::unit_test::data::make({ TensorShape{}, - TensorShape{ 1U }, - TensorShape{ 2U }, - TensorShape{ 2U, 3U }, - TensorShape{ 2U, 3U, 5U }, - TensorShape{ 2U, 3U, 5U, 7U }, - TensorShape{ 2U, 3U, 5U, 7U, 11U }, - TensorShape{ 2U, 3U, 5U, 7U, 11U, 13U } - }) - ^ boost::unit_test::data::make({ 0, 1, 1, 2, 3, 4, 5, 6 }) ^ boost::unit_test::data::make({ 0, 1, 2, 6, 30, 210, 2310, 30030 }), - shape, num_dimensions, total_size) -{ - BOOST_TEST(shape.num_dimensions() == num_dimensions); - BOOST_TEST(shape.total_size() == total_size); -} - -BOOST_TEST_DECORATOR(*boost::unit_test::label("precommit") * boost::unit_test::label("nightly")) -BOOST_DATA_TEST_CASE(SetEmpty, boost::unit_test::data::make({ 0, 1, 2, 3, 4, 5 }), dimension) -{ - TensorShape shape; - - shape.set(dimension, 10); - - BOOST_TEST(shape.num_dimensions() == dimension + 1); - BOOST_TEST(shape.total_size() == 10); -} - -BOOST_AUTO_TEST_SUITE_END() -BOOST_AUTO_TEST_SUITE_END() -#endif /* DOXYGEN_SKIP_THIS */ diff --git a/utils/TypePrinter.h b/utils/TypePrinter.h index 4f424d9438..b072d1a308 100644 --- a/utils/TypePrinter.h +++ b/utils/TypePrinter.h @@ -26,6 +26,7 @@ #include "arm_compute/core/Dimensions.h" #include "arm_compute/core/Error.h" +#include "arm_compute/core/Strides.h" #include "arm_compute/core/Types.h" #include "tests/Types.h" @@ -554,6 +555,13 @@ inline std::string to_string(const Dimensions<T> &dimensions) return str.str(); } +inline std::string to_string(const Strides &stride) +{ + std::stringstream str; + str << stride; + return str.str(); +} + /** Formatted output of the TensorShape type. */ inline std::string to_string(const TensorShape &shape) { |