aboutsummaryrefslogtreecommitdiff
path: root/src/backends/backendsCommon/test/DynamicBackendTests.hpp
diff options
context:
space:
mode:
authorMatteo Martincigh <matteo.martincigh@arm.com>2019-07-25 15:25:44 +0100
committerMatteo Martincigh <matteo.martincigh@arm.com>2019-07-25 16:35:08 +0100
commitac60d28414041774d7a4c8b6b5c4b0991712ef0f (patch)
treea2e36604bd567f3b93aa0212963115397eb91374 /src/backends/backendsCommon/test/DynamicBackendTests.hpp
parentb19d2e9c163f44e180a1cfa1bcad6a67e4b7cdd9 (diff)
downloadarmnn-ac60d28414041774d7a4c8b6b5c4b0991712ef0f.tar.gz
IVGCVSW-3543 Implement the backend versioning algorithm
* Added version structure for backends, with comparisons operators * Added version to IBackendInternal * Added version utility function to DynamicBackendUtils class Signed-off-by: Matteo Martincigh <matteo.martincigh@arm.com> Change-Id: I3697469675c27f79f7cfb296cfa69ec7e06375e5
Diffstat (limited to 'src/backends/backendsCommon/test/DynamicBackendTests.hpp')
-rw-r--r--src/backends/backendsCommon/test/DynamicBackendTests.hpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/backends/backendsCommon/test/DynamicBackendTests.hpp b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
new file mode 100644
index 0000000000..3b0c95b00f
--- /dev/null
+++ b/src/backends/backendsCommon/test/DynamicBackendTests.hpp
@@ -0,0 +1,61 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+
+#pragma once
+
+#include <backendsCommon/DynamicBackendUtils.hpp>
+
+#include <test/UnitTests.hpp>
+
+#include <boost/test/unit_test.hpp>
+
+void BackendVersioningTestImpl()
+{
+ class TestDynamicBackendUtils : public armnn::DynamicBackendUtils
+ {
+ public:
+ static bool IsBackendCompatibleTest(const armnn::BackendVersion& backendApiVersion,
+ const armnn::BackendVersion& backendVersion)
+ {
+ return IsBackendCompatibleImpl(backendApiVersion, backendVersion);
+ }
+ };
+
+ // The backend API version used for the tests
+ armnn::BackendVersion backendApiVersion{ 2, 4 };
+
+ // Same backend and backend API versions are compatible with the backend API
+ armnn::BackendVersion sameBackendVersion{ 2, 4 };
+ BOOST_TEST(sameBackendVersion == backendApiVersion);
+ BOOST_TEST(sameBackendVersion <= backendApiVersion);
+ BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, sameBackendVersion) == true);
+
+ // Backend versions that differ from the backend API version by major revision are not compatible
+ // with the backend API
+ armnn::BackendVersion laterMajorBackendVersion{ 3, 4 };
+ BOOST_TEST(!(laterMajorBackendVersion == backendApiVersion));
+ BOOST_TEST(!(laterMajorBackendVersion <= backendApiVersion));
+ BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, laterMajorBackendVersion) == false);
+
+ armnn::BackendVersion earlierMajorBackendVersion{ 1, 4 };
+ BOOST_TEST(!(earlierMajorBackendVersion == backendApiVersion));
+ BOOST_TEST(earlierMajorBackendVersion <= backendApiVersion);
+ BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion,
+ earlierMajorBackendVersion) == false);
+
+ // Backend versions with the same major revision but later minor revision than
+ // the backend API version are not compatible with the backend API
+ armnn::BackendVersion laterMinorBackendVersion{ 2, 5 };
+ BOOST_TEST(!(laterMinorBackendVersion == backendApiVersion));
+ BOOST_TEST(!(laterMinorBackendVersion <= backendApiVersion));
+ BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, laterMinorBackendVersion) == false);
+
+ // Backend versions with the same major revision but earlier minor revision than
+ // the backend API version are compatible with the backend API
+ armnn::BackendVersion earlierMinorBackendVersion{ 2, 3 };
+ BOOST_TEST(!(earlierMinorBackendVersion == backendApiVersion));
+ BOOST_TEST(earlierMinorBackendVersion <= backendApiVersion);
+ BOOST_TEST(TestDynamicBackendUtils::IsBackendCompatibleTest(backendApiVersion, earlierMinorBackendVersion) == true);
+}