Imported Upstream version 1.7.0
[platform/core/ml/nnfw.git] / compiler / luci / lang / src / Nodes / CircleUnpack.test.cpp
1 /*
2  * Copyright (c) 2020 Samsung Electronics Co., Ltd. All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *    http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include "luci/IR/Nodes/CircleUnpack.h"
18
19 #include "luci/IR/CircleDialect.h"
20 #include "luci/IR/CircleNodeVisitor.h"
21
22 #include <gtest/gtest.h>
23
24 TEST(CircleUnpackTest, constructor)
25 {
26   luci::CircleUnpack unpack_node;
27
28   ASSERT_EQ(luci::CircleDialect::get(), unpack_node.dialect());
29   ASSERT_EQ(luci::CircleOpcode::UNPACK, unpack_node.opcode());
30
31   ASSERT_EQ(nullptr, unpack_node.value());
32   ASSERT_EQ(0, unpack_node.num());
33   ASSERT_EQ(0, unpack_node.axis());
34 }
35
36 TEST(CircleUnpackTest, input_NEG)
37 {
38   luci::CircleUnpack unpack_node;
39   luci::CircleUnpack node;
40
41   unpack_node.value(&node);
42   ASSERT_NE(nullptr, unpack_node.value());
43
44   unpack_node.value(nullptr);
45   ASSERT_EQ(nullptr, unpack_node.value());
46
47   unpack_node.num(1);
48   unpack_node.axis(1);
49   ASSERT_NE(0, unpack_node.num());
50   ASSERT_NE(0, unpack_node.axis());
51 }
52
53 TEST(CircleUnpackTest, arity_NEG)
54 {
55   luci::CircleUnpack unpack_node;
56
57   ASSERT_NO_THROW(unpack_node.arg(0));
58   ASSERT_THROW(unpack_node.arg(1), std::out_of_range);
59 }
60
61 TEST(CircleUnpackTest, visit_mutable_NEG)
62 {
63   struct TestVisitor final : public luci::CircleNodeMutableVisitor<void>
64   {
65   };
66
67   luci::CircleUnpack unpack_node;
68
69   TestVisitor tv;
70   ASSERT_THROW(unpack_node.accept(&tv), std::exception);
71 }
72
73 TEST(CircleUnpackTest, visit_NEG)
74 {
75   struct TestVisitor final : public luci::CircleNodeVisitor<void>
76   {
77   };
78
79   luci::CircleUnpack unpack_node;
80
81   TestVisitor tv;
82   ASSERT_THROW(unpack_node.accept(&tv), std::exception);
83 }