aboutsummaryrefslogtreecommitdiff
path: root/src/backends/test
diff options
context:
space:
mode:
authorDavid Beck <david.beck@arm.com>2018-10-09 15:46:08 +0100
committerMatthew Bentham <matthew.bentham@arm.com>2018-10-22 16:57:53 +0100
commit32cbb0c7cd99786191c080f5a619b3dab23b4cd0 (patch)
tree0e7db143cdf3faa6430a1ffa5e948165ff60c045 /src/backends/test
parent43095f31edf103d71a8e2420b549d21fd349b49e (diff)
downloadarmnn-32cbb0c7cd99786191c080f5a619b3dab23b4cd0.tar.gz
IVGCVSW-1987 : registry for backend creation functions (factories)
Change-Id: I13d2d3dc763e1d05dffddb34472bd4f9e632c776
Diffstat (limited to 'src/backends/test')
-rw-r--r--src/backends/test/BackendRegistryTests.cpp91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/backends/test/BackendRegistryTests.cpp b/src/backends/test/BackendRegistryTests.cpp
new file mode 100644
index 0000000000..e895df63a6
--- /dev/null
+++ b/src/backends/test/BackendRegistryTests.cpp
@@ -0,0 +1,91 @@
+//
+// Copyright © 2017 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#include <boost/test/unit_test.hpp>
+
+#include <backends/BackendRegistry.hpp>
+#include <armnn/Types.hpp>
+
+namespace
+{
+
+class SwapRegistryStorage : public armnn::BackendRegistry
+{
+public:
+ SwapRegistryStorage() : armnn::BackendRegistry()
+ {
+ Swap(m_TempStorage);
+ }
+
+ ~SwapRegistryStorage()
+ {
+ Swap(m_TempStorage);
+ }
+
+private:
+ BackendRegistry::FactoryStorage m_TempStorage;
+};
+
+}
+
+BOOST_AUTO_TEST_SUITE(BackendRegistryTests)
+
+BOOST_AUTO_TEST_CASE(SwapRegistry)
+{
+ using armnn::BackendRegistry;
+ auto nFactories = BackendRegistry::Instance().Size();
+ {
+ SwapRegistryStorage helper;
+ BOOST_TEST(BackendRegistry::Instance().Size() == 0);
+ }
+ BOOST_TEST(BackendRegistry::Instance().Size() == nFactories);
+}
+
+BOOST_AUTO_TEST_CASE(TestRegistryHelper)
+{
+ using armnn::BackendRegistry;
+ SwapRegistryStorage helper;
+
+ bool called = false;
+ BackendRegistry::Helper factoryHelper("HelloWorld", [&called]() {
+ called = true;
+ return armnn::IBackendUniquePtr(nullptr, nullptr);
+ } );
+
+ // sanity check: the factory has not been called yet
+ BOOST_TEST(called == false);
+
+ auto factoryFunction = BackendRegistry::Instance().GetFactory("HelloWorld");
+
+ // sanity check: the factory still not called
+ BOOST_TEST(called == false);
+
+ factoryFunction();
+ BOOST_TEST(called == true);
+}
+
+BOOST_AUTO_TEST_CASE(TestDirectCallToRegistry)
+{
+ using armnn::BackendRegistry;
+ SwapRegistryStorage helper;
+
+ bool called = false;
+ BackendRegistry::Instance().Register("HelloWorld", [&called]() {
+ called = true;
+ return armnn::IBackendUniquePtr(nullptr, nullptr);
+ } );
+
+ // sanity check: the factory has not been called yet
+ BOOST_TEST(called == false);
+
+ auto factoryFunction = BackendRegistry::Instance().GetFactory("HelloWorld");
+
+ // sanity check: the factory still not called
+ BOOST_TEST(called == false);
+
+ factoryFunction();
+ BOOST_TEST(called == true);
+}
+
+BOOST_AUTO_TEST_SUITE_END()