ArmNN
 20.08
BackendRegistryTests.cpp
Go to the documentation of this file.
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include <armnn/Types.hpp>
8 
10 
11 #include <boost/test/unit_test.hpp>
12 
13 namespace
14 {
15 
16 class SwapRegistryStorage : public armnn::BackendRegistry
17 {
18 public:
19  SwapRegistryStorage() : armnn::BackendRegistry()
20  {
21  Swap(armnn::BackendRegistryInstance(), m_TempStorage);
22  }
23 
24  ~SwapRegistryStorage()
25  {
26  Swap(armnn::BackendRegistryInstance(),m_TempStorage);
27  }
28 
29 private:
30  FactoryStorage m_TempStorage;
31 };
32 
33 }
34 
35 BOOST_AUTO_TEST_SUITE(BackendRegistryTests)
36 
37 BOOST_AUTO_TEST_CASE(SwapRegistry)
38 {
39  using namespace armnn;
40  auto nFactories = BackendRegistryInstance().Size();
41  {
42  SwapRegistryStorage helper;
43  BOOST_TEST(BackendRegistryInstance().Size() == 0);
44  }
45  BOOST_TEST(BackendRegistryInstance().Size() == nFactories);
46 }
47 
48 BOOST_AUTO_TEST_CASE(TestRegistryHelper)
49 {
50  using namespace armnn;
51  SwapRegistryStorage helper;
52 
53  bool called = false;
54 
57  "HelloWorld",
58  [&called]()
59  {
60  called = true;
61  return armnn::IBackendInternalUniquePtr(nullptr);
62  }
63  );
64 
65  // sanity check: the factory has not been called yet
66  BOOST_TEST(called == false);
67 
68  auto factoryFunction = BackendRegistryInstance().GetFactory("HelloWorld");
69 
70  // sanity check: the factory still not called
71  BOOST_TEST(called == false);
72 
73  factoryFunction();
74  BOOST_TEST(called == true);
75  BackendRegistryInstance().Deregister("HelloWorld");
76 }
77 
78 BOOST_AUTO_TEST_CASE(TestDirectCallToRegistry)
79 {
80  using namespace armnn;
81  SwapRegistryStorage helper;
82 
83  bool called = false;
85  "HelloWorld",
86  [&called]()
87  {
88  called = true;
89  return armnn::IBackendInternalUniquePtr(nullptr);
90  }
91  );
92 
93  // sanity check: the factory has not been called yet
94  BOOST_TEST(called == false);
95 
96  auto factoryFunction = BackendRegistryInstance().GetFactory("HelloWorld");
97 
98  // sanity check: the factory still not called
99  BOOST_TEST(called == false);
100 
101  factoryFunction();
102  BOOST_TEST(called == true);
103  BackendRegistryInstance().Deregister("HelloWorld");
104 }
105 
BOOST_AUTO_TEST_SUITE(TensorflowLiteParser)
FactoryFunction GetFactory(const BackendId &id) const
void Register(const BackendId &id, FactoryFunction factory)
static void Swap(BackendRegistry &instance, FactoryStorage &other)
For testing only.
BackendRegistry & BackendRegistryInstance()
Copyright (c) 2020 ARM Limited.
BOOST_AUTO_TEST_CASE(SwapRegistry)
BOOST_AUTO_TEST_SUITE_END()
void Deregister(const BackendId &id)
std::unique_ptr< IBackendInternal > IBackendInternalUniquePtr