diff --git a/ngraph/test/CMakeLists.txt b/ngraph/test/CMakeLists.txt index 703d0ecbe8d..07d2632172e 100644 --- a/ngraph/test/CMakeLists.txt +++ b/ngraph/test/CMakeLists.txt @@ -237,6 +237,8 @@ set(SRC visitors/op/prior_box.cpp visitors/op/proposal.cpp visitors/op/psroi_pooling.cpp + visitors/op/reduce_l1.cpp + visitors/op/reduce_l2.cpp visitors/op/reduce_logical_and.cpp visitors/op/reduce_logical_or.cpp visitors/op/reduce_max.cpp diff --git a/ngraph/test/visitors/op/reduce_l1.cpp b/ngraph/test/visitors/op/reduce_l1.cpp new file mode 100644 index 00000000000..a9e9c631871 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_l1.cpp @@ -0,0 +1,8 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "reduce_ops.hpp" + +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_l1, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_l2.cpp b/ngraph/test/visitors/op/reduce_l2.cpp new file mode 100644 index 00000000000..0a592e65c9b --- /dev/null +++ b/ngraph/test/visitors/op/reduce_l2.cpp @@ -0,0 +1,8 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "reduce_ops.hpp" + +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_l2, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_logical_and.cpp b/ngraph/test/visitors/op/reduce_logical_and.cpp index 8a5d68010e7..b460be15efc 100644 --- a/ngraph/test/visitors/op/reduce_logical_and.cpp +++ b/ngraph/test/visitors/op/reduce_logical_and.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_logical_and_op) -{ - // ReduceLogicalAnd derives visit_attributes from op::util::LogicalReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_logical_and = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_logical_and); - auto g_reduce_logical_and = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_logical_and->get_keep_dims(), reduce_logical_and->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_logical_and, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_logical_or.cpp b/ngraph/test/visitors/op/reduce_logical_or.cpp index 87fc81e36b8..265256e3a48 100644 --- a/ngraph/test/visitors/op/reduce_logical_or.cpp +++ b/ngraph/test/visitors/op/reduce_logical_or.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_logical_or_op) -{ - // ReduceLogicalOr derives visit_attributes from op::util::LogicalReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_logical_or = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_logical_or); - auto g_reduce_logical_or = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_logical_or->get_keep_dims(), reduce_logical_or->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_logical_or, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_max.cpp b/ngraph/test/visitors/op/reduce_max.cpp index 6ff4a6174ef..7cfe9b54f57 100644 --- a/ngraph/test/visitors/op/reduce_max.cpp +++ b/ngraph/test/visitors/op/reduce_max.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_max_op) -{ - // ReduceMax derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_max = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_max); - auto g_reduce_max = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_max->get_keep_dims(), reduce_max->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_max, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_mean.cpp b/ngraph/test/visitors/op/reduce_mean.cpp index e8f90e3d282..2d99381f4f9 100644 --- a/ngraph/test/visitors/op/reduce_mean.cpp +++ b/ngraph/test/visitors/op/reduce_mean.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_mean_op) -{ - // ReduceMean derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_mean = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_mean); - auto g_reduce_mean = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_mean->get_keep_dims(), reduce_mean->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_mean, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_min.cpp b/ngraph/test/visitors/op/reduce_min.cpp index e0972bfd28d..90dcac33ce7 100644 --- a/ngraph/test/visitors/op/reduce_min.cpp +++ b/ngraph/test/visitors/op/reduce_min.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_min_op) -{ - // ReduceMin derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_min = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_min); - auto g_reduce_min = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_min->get_keep_dims(), reduce_min->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_min, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_ops.hpp b/ngraph/test/visitors/op/reduce_ops.hpp new file mode 100644 index 00000000000..dfbf1b6eba8 --- /dev/null +++ b/ngraph/test/visitors/op/reduce_ops.hpp @@ -0,0 +1,48 @@ +// Copyright (C) 2021 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "gtest/gtest.h" + +#include "ngraph/ngraph.hpp" +#include "ngraph/op/util/attr_types.hpp" + +#include "util/visitor.hpp" + +using namespace std; +using namespace ngraph; +using ngraph::test::NodeBuilder; +using ngraph::test::ValueMap; + +template +class ReduceOpsAttrTest : public ::testing::Test +{ +}; + +TYPED_TEST_CASE_P(ReduceOpsAttrTest); + +TYPED_TEST_P(ReduceOpsAttrTest, reduce_ops) +{ + Shape in_shape{3, 4, 5}; + element::Type in_et = element::f32; + + Shape axes_shape{2}; + element::Type axes_et = element::i64; + + bool keep_dims = true; + + NodeBuilder::get_ops().register_factory(); + auto data = make_shared(in_et, in_shape); + auto reduction_axes = make_shared(axes_et, axes_shape); + auto reduce_op = make_shared(data, reduction_axes, keep_dims); + + NodeBuilder builder(reduce_op); + const auto expected_attr_count = 1; + EXPECT_EQ(builder.get_value_map_size(), expected_attr_count); + auto g_reduce_op = as_type_ptr(builder.create()); + EXPECT_EQ(g_reduce_op->get_keep_dims(), reduce_op->get_keep_dims()); +} + +REGISTER_TYPED_TEST_CASE_P( + ReduceOpsAttrTest, + reduce_ops); diff --git a/ngraph/test/visitors/op/reduce_prod.cpp b/ngraph/test/visitors/op/reduce_prod.cpp index 059186376d2..21cb8ff4fc3 100644 --- a/ngraph/test/visitors/op/reduce_prod.cpp +++ b/ngraph/test/visitors/op/reduce_prod.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_prod_op) -{ - // ReduceProd derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_prod = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_prod); - auto g_reduce_prod = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_prod->get_keep_dims(), reduce_prod->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_prod, ReduceOpsAttrTest, Type); diff --git a/ngraph/test/visitors/op/reduce_sum.cpp b/ngraph/test/visitors/op/reduce_sum.cpp index 46d2a73ae46..aa0414d0987 100644 --- a/ngraph/test/visitors/op/reduce_sum.cpp +++ b/ngraph/test/visitors/op/reduce_sum.cpp @@ -2,34 +2,7 @@ // SPDX-License-Identifier: Apache-2.0 // -#include "gtest/gtest.h" +#include "reduce_ops.hpp" -#include "ngraph/ngraph.hpp" -#include "ngraph/op/util/attr_types.hpp" -#include "ngraph/opsets/opset1.hpp" -#include "ngraph/opsets/opset3.hpp" -#include "ngraph/opsets/opset4.hpp" -#include "ngraph/opsets/opset5.hpp" - -#include "util/visitor.hpp" - -using namespace std; -using namespace ngraph; -using ngraph::test::NodeBuilder; -using ngraph::test::ValueMap; - -TEST(attributes, reduce_sum_op) -{ - // ReduceSum derives visit_attributes from op::util::ArithmeticReductionKeepDims - NodeBuilder::get_ops().register_factory(); - auto data = make_shared(element::f32, Shape{3, 4, 5}); - auto reduction_axes = make_shared(element::i64, Shape{2}); - - bool keep_dims = true; - - auto reduce_sum = make_shared(data, reduction_axes, keep_dims); - NodeBuilder builder(reduce_sum); - auto g_reduce_sum = as_type_ptr(builder.create()); - - EXPECT_EQ(g_reduce_sum->get_keep_dims(), reduce_sum->get_keep_dims()); -} +using Type = ::testing::Types; +INSTANTIATE_TYPED_TEST_CASE_P(attributes_reduce_sum, ReduceOpsAttrTest, Type);