Release 18.08
[platform/upstream/armnn.git] / src / armnn / test / ObservableTest.cpp
1 //
2 // Copyright © 2017 Arm Ltd. All rights reserved.
3 // See LICENSE file in the project root for full license information.
4 //
5
6 #include <boost/test/unit_test.hpp>
7
8 #include "Graph.hpp"
9 #include "Observable.hpp"
10
11 BOOST_AUTO_TEST_SUITE(Observable)
12
13 BOOST_AUTO_TEST_CASE(AddedLayerObservableTest)
14 {
15     armnn::Graph graph;
16
17     // Create a graph observable
18     armnn::AddedLayerObservable layerObservable(graph);
19
20     // Add a few layers
21     auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
22     auto input = graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
23
24     // Check the observable has observed the changes
25     std::list<armnn::Layer*> testLayers({ output, input });
26
27     BOOST_CHECK_EQUAL_COLLECTIONS(layerObservable.begin(), layerObservable.end(),
28                                   testLayers.begin(), testLayers.end());
29 }
30
31 BOOST_AUTO_TEST_CASE(ClearAddedLayerObservableTest)
32 {
33     armnn::Graph graph;
34
35     // Create a graph observable
36     armnn::AddedLayerObservable addedLayerObservable(graph);
37
38     // Add a few layers
39     auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
40     graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
41
42     addedLayerObservable.Clear();
43
44     // Check the observable has observed the changes
45     std::list<armnn::Layer*> emptyList({});
46
47     BOOST_CHECK_EQUAL_COLLECTIONS(addedLayerObservable.begin(), addedLayerObservable.end(),
48                                   emptyList.begin(), emptyList.end());
49 }
50
51 BOOST_AUTO_TEST_CASE(ErasedLayerNamesObservableTest)
52 {
53     armnn::Graph graph;
54
55     // Create a graph observable
56     armnn::ErasedLayerNamesObservable erasedLayerNamesObservable(graph);
57
58     // Add a few layers
59     auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
60     graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
61
62     graph.EraseLayer(output);
63
64     // Check the observable has observed the changes
65     std::list<std::string> testList({"output"});
66
67     BOOST_CHECK_EQUAL_COLLECTIONS(erasedLayerNamesObservable.begin(), erasedLayerNamesObservable.end(),
68                                   testList.begin(), testList.end());
69 }
70
71 BOOST_AUTO_TEST_CASE(ClearErasedLayerNamesObservableTest)
72 {
73     armnn::Graph graph;
74
75     // Create a graph observable
76     armnn::ErasedLayerNamesObservable erasedLayerNamesObservable(graph);
77
78     // Add a few layers
79     auto output = graph.AddLayer<armnn::OutputLayer>(0, "output");
80     graph.InsertNewLayer<armnn::InputLayer>(output->GetInputSlot(0), 0, "input");
81
82     graph.EraseLayer(output);
83
84     erasedLayerNamesObservable.Clear();
85
86     // Check the observable has observed the changes
87     std::list<std::string> emptyList({});
88
89     BOOST_CHECK_EQUAL_COLLECTIONS(erasedLayerNamesObservable.begin(), erasedLayerNamesObservable.end(),
90                                   emptyList.begin(), emptyList.end());
91 }
92
93 BOOST_AUTO_TEST_SUITE_END()
94