From 32cbb0c7cd99786191c080f5a619b3dab23b4cd0 Mon Sep 17 00:00:00 2001 From: David Beck Date: Tue, 9 Oct 2018 15:46:08 +0100 Subject: IVGCVSW-1987 : registry for backend creation functions (factories) Change-Id: I13d2d3dc763e1d05dffddb34472bd4f9e632c776 --- src/backends/test/BackendRegistryTests.cpp | 91 ++++++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 src/backends/test/BackendRegistryTests.cpp (limited to 'src/backends/test/BackendRegistryTests.cpp') 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 + +#include +#include + +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() -- cgit v1.2.1