diff options
author | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
---|---|---|
committer | telsoa01 <telmo.soares@arm.com> | 2018-08-31 09:22:23 +0100 |
commit | c577f2c6a3b4ddb6ba87a882723c53a248afbeba (patch) | |
tree | bd7d4c148df27f8be6649d313efb24f536b7cf34 /src/armnn/test/UtilsTests.cpp | |
parent | 4c7098bfeab1ffe1cdc77f6c15548d3e73274746 (diff) | |
download | armnn-c577f2c6a3b4ddb6ba87a882723c53a248afbeba.tar.gz |
Release 18.08
Diffstat (limited to 'src/armnn/test/UtilsTests.cpp')
-rw-r--r-- | src/armnn/test/UtilsTests.cpp | 110 |
1 files changed, 110 insertions, 0 deletions
diff --git a/src/armnn/test/UtilsTests.cpp b/src/armnn/test/UtilsTests.cpp index 11fa51626c..2268aa31e2 100644 --- a/src/armnn/test/UtilsTests.cpp +++ b/src/armnn/test/UtilsTests.cpp @@ -4,10 +4,14 @@ // #include <boost/test/unit_test.hpp> + #include <armnn/Utils.hpp> #include <armnn/Types.hpp> #include <armnn/TypesUtils.hpp> #include <armnn/Descriptors.hpp> +#include <GraphTopologicalSort.hpp> +#include <Graph.hpp> +#include "TypeUtils.hpp" BOOST_AUTO_TEST_SUITE(Utils) @@ -55,4 +59,110 @@ BOOST_AUTO_TEST_CASE(PermuteDescriptorWithDuplicatedMappings) BOOST_CHECK_THROW(armnn::PermuteDescriptor({ 1u, 1u, 0u }), armnn::InvalidArgumentException); } +BOOST_AUTO_TEST_CASE(HalfType) +{ + using namespace half_float::literal; + armnn::Half a = 1.0_h; + + float b = 1.0f; + armnn::Half c(b); + + // Test half type + BOOST_CHECK_EQUAL(a, b); + BOOST_CHECK_EQUAL(sizeof(c), 2); + + // Test half type is floating point type + BOOST_CHECK(std::is_floating_point<armnn::Half>::value); + + // Test utility function returns correct type. + using ResolvedType = armnn::ResolveType<armnn::DataType::Float16>; + constexpr bool isHalfType = std::is_same<armnn::Half, ResolvedType>::value; + BOOST_CHECK(isHalfType); + + armnn::DataType dt = armnn::GetDataType<armnn::Half>(); + BOOST_CHECK(dt == armnn::DataType::Float16); + + //Test utility functions return correct size + BOOST_CHECK(GetDataTypeSize(armnn::DataType::Float16) == 2); + + //Test utility functions return correct name + BOOST_CHECK((GetDataTypeName(armnn::DataType::Float16) == std::string("Float16"))); +} + +BOOST_AUTO_TEST_CASE(GraphTopologicalSortSimpleTest) +{ + std::map<int, std::vector<int>> graph; + + graph[0] = {2}; + graph[1] = {3}; + graph[2] = {4}; + graph[3] = {4}; + graph[4] = {5}; + graph[5] = {}; + + auto getNodeInputs = [graph](int node) -> std::vector<int> + { + return graph.find(node)->second; + }; + + std::vector<int> targetNodes = {0, 1}; + + std::vector<int> output; + bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output); + + BOOST_TEST(sortCompleted); + + std::vector<int> correctResult = {5, 4, 2, 0, 3, 1}; + BOOST_CHECK_EQUAL_COLLECTIONS(output.begin(), output.end(), correctResult.begin(), correctResult.end()); +} + +BOOST_AUTO_TEST_CASE(GraphTopologicalSortVariantTest) +{ + std::map<int, std::vector<int>> graph; + + graph[0] = {2}; + graph[1] = {2}; + graph[2] = {3, 4}; + graph[3] = {5}; + graph[4] = {5}; + graph[5] = {6}; + graph[6] = {}; + + auto getNodeInputs = [graph](int node) -> std::vector<int> + { + return graph.find(node)->second; + }; + + std::vector<int> targetNodes = {0, 1}; + + std::vector<int> output; + bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output); + + BOOST_TEST(sortCompleted); + + std::vector<int> correctResult = {6, 5, 3, 4, 2, 0, 1}; + BOOST_CHECK_EQUAL_COLLECTIONS(output.begin(), output.end(), correctResult.begin(), correctResult.end()); +} + +BOOST_AUTO_TEST_CASE(CyclicalGraphTopologicalSortTest) +{ + std::map<int, std::vector<int>> graph; + + graph[0] = {1}; + graph[1] = {2}; + graph[2] = {0}; + + auto getNodeInputs = [graph](int node) -> std::vector<int> + { + return graph.find(node)->second; + }; + + std::vector<int> targetNodes = {0}; + + std::vector<int> output; + bool sortCompleted = armnnUtils::GraphTopologicalSort<int>(targetNodes, getNodeInputs, output); + + BOOST_TEST(!sortCompleted); +} + BOOST_AUTO_TEST_SUITE_END() |