summaryrefslogtreecommitdiff
path: root/compiler/exo/src/Dialect/IR/TFLNodes.test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/exo/src/Dialect/IR/TFLNodes.test.cpp')
-rw-r--r--compiler/exo/src/Dialect/IR/TFLNodes.test.cpp159
1 files changed, 159 insertions, 0 deletions
diff --git a/compiler/exo/src/Dialect/IR/TFLNodes.test.cpp b/compiler/exo/src/Dialect/IR/TFLNodes.test.cpp
new file mode 100644
index 000000000..09c5c83a0
--- /dev/null
+++ b/compiler/exo/src/Dialect/IR/TFLNodes.test.cpp
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2019 Samsung Electronics Co., Ltd. All Rights Reserved
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "TFLNodes.h"
+
+#include "TFLDialect.h"
+#include "TFLOpcode.h"
+
+#include <gtest/gtest.h>
+
+TEST(TFLAddTest, constructor)
+{
+ locoex::TFLAdd add_node;
+
+ ASSERT_EQ(add_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(add_node.opcode(), locoex::TFLOpcode::ADD);
+
+ ASSERT_EQ(add_node.x(), nullptr);
+ ASSERT_EQ(add_node.y(), nullptr);
+}
+
+// TODO TFLAveragePool2D
+
+TEST(TFLConcatTest, constructor)
+{
+ locoex::TFLConcatenation concat_node(3);
+
+ ASSERT_EQ(concat_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(concat_node.opcode(), locoex::TFLOpcode::CONCATENATION);
+
+ ASSERT_EQ(concat_node.numValues(), 3);
+ ASSERT_EQ(concat_node.values(0), nullptr);
+ ASSERT_EQ(concat_node.values(1), nullptr);
+ ASSERT_EQ(concat_node.values(2), nullptr);
+ ASSERT_EQ(concat_node.fusedActivationFunction(), locoex::FusedActFunc::UNDEFINED);
+}
+
+// TODO TFLConv2D
+
+TEST(TFLDepthwiseConv2DTest, constructor)
+{
+ locoex::TFLDepthwiseConv2D dw_conv2d_node;
+
+ ASSERT_EQ(dw_conv2d_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(dw_conv2d_node.opcode(), locoex::TFLOpcode::DEPTHWISE_CONV_2D);
+
+ ASSERT_EQ(dw_conv2d_node.input(), nullptr);
+ ASSERT_EQ(dw_conv2d_node.filter(), nullptr);
+ ASSERT_EQ(dw_conv2d_node.bias(), nullptr);
+ ASSERT_EQ(dw_conv2d_node.padding(), locoex::Padding::UNDEFINED);
+ ASSERT_EQ(dw_conv2d_node.stride()->h(), 1);
+ ASSERT_EQ(dw_conv2d_node.stride()->w(), 1);
+ ASSERT_EQ(dw_conv2d_node.depthMultiplier(), 0);
+ ASSERT_EQ(dw_conv2d_node.fusedActivationFunction(), locoex::FusedActFunc::UNDEFINED);
+}
+
+TEST(TFLDivTest, constructor)
+{
+ locoex::TFLDiv div_node;
+
+ ASSERT_EQ(div_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(div_node.opcode(), locoex::TFLOpcode::DIV);
+
+ ASSERT_EQ(div_node.x(), nullptr);
+ ASSERT_EQ(div_node.y(), nullptr);
+}
+
+// TODO TFLMaxPool2D
+
+TEST(TFLMulTest, constructor)
+{
+ locoex::TFLMul mul_node;
+
+ ASSERT_EQ(mul_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(mul_node.opcode(), locoex::TFLOpcode::MUL);
+
+ ASSERT_EQ(mul_node.x(), nullptr);
+ ASSERT_EQ(mul_node.y(), nullptr);
+}
+
+TEST(TFLReluTest, constructor)
+{
+ locoex::TFLRelu relu_node;
+
+ ASSERT_EQ(relu_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(relu_node.opcode(), locoex::TFLOpcode::RELU);
+
+ ASSERT_EQ(relu_node.features(), nullptr);
+}
+
+// TODO TFLRelu6
+
+TEST(TFLReshapeTest, constructor)
+{
+ locoex::TFLReshape reshape;
+
+ ASSERT_EQ(reshape.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(reshape.opcode(), locoex::TFLOpcode::RESHAPE);
+
+ ASSERT_EQ(reshape.tensor(), nullptr);
+ ASSERT_EQ(reshape.shape(), nullptr);
+ ASSERT_EQ(reshape.newShape()->rank(), 0);
+}
+
+TEST(TFLReshapeTest, alloc_new_shape)
+{
+ locoex::TFLReshape reshape;
+
+ reshape.newShape()->rank(2);
+ ASSERT_EQ(reshape.newShape()->rank(), 2);
+
+ reshape.newShape()->dim(0) = 0;
+ reshape.newShape()->dim(1) = 1;
+
+ auto &const_reshape = const_cast<const locoex::TFLReshape &>(reshape);
+ ASSERT_EQ(const_reshape.newShape()->dim(0), 0);
+ ASSERT_EQ(const_reshape.newShape()->dim(1), 1);
+}
+
+// TODO TFLSoftmax
+
+// TODO TFLSqrt
+
+TEST(TFLSubTest, constructor)
+{
+ locoex::TFLSub sub_node;
+
+ ASSERT_EQ(sub_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(sub_node.opcode(), locoex::TFLOpcode::SUB);
+
+ ASSERT_EQ(sub_node.x(), nullptr);
+ ASSERT_EQ(sub_node.y(), nullptr);
+}
+
+// TODO TFLTanh
+
+TEST(TFLTransposeTest, constructor)
+{
+ locoex::TFLTranspose tr_node;
+
+ ASSERT_EQ(tr_node.dialect(), locoex::TFLDialect::get());
+ ASSERT_EQ(tr_node.opcode(), locoex::TFLOpcode::TRANSPOSE);
+
+ ASSERT_EQ(tr_node.a(), nullptr);
+ ASSERT_EQ(tr_node.perm(), nullptr);
+}