1 // Copyright (C) 2018-2019 Intel Corporation
2 // SPDX-License-Identifier: Apache-2.0
5 #include <gtest/gtest.h>
6 #include <gmock/gmock-spec-builders.h>
10 using namespace ::testing;
12 using namespace InferenceEngine;
13 using namespace InferenceEngine::details;
15 class DataTests : public ::testing::Test {
17 const std::string data_name = "test_data_name";
18 const Precision precision = Precision::FP32;
20 const SizeVector notEmptyDims = {1, 1, 1, 1};
21 const SizeVector emptyDims = {};
22 const size_t batchSize = 1;
24 class BlockingDescTest : public BlockingDesc {
26 BlockingDescTest(const SizeVector &blocked_dims, const SizeVector &order) : BlockingDesc(blocked_dims, order) {}
28 void fillDescTest(const SizeVector &blocked_dims, const SizeVector &order) {
29 fillDesc(blocked_dims, order);
34 TEST_F(DataTests, canSetEmptyDimsForDataDefault) {
35 Data data(data_name, precision);
36 ASSERT_NO_THROW(data.setDims(emptyDims));
37 ASSERT_FALSE(data.isInitialized());
40 TEST_F(DataTests, canSetEmptyDimsForDataBlocked) {
41 Data data(data_name, precision, BLOCKED);
42 ASSERT_NO_THROW(data.setDims(emptyDims));
45 TEST_F(DataTests, canSetNotEmptyDimsForDataBlocked) {
46 Data data(data_name, precision, BLOCKED);
47 ASSERT_NO_THROW(data.setDims(notEmptyDims));
50 TEST_F(DataTests, canSetNotEmptyDimsForDataNCHW) {
51 Data data(data_name, precision, NCHW);
52 ASSERT_NO_THROW(data.setDims(notEmptyDims));
53 ASSERT_TRUE(data.isInitialized());
56 TEST_F(DataTests, canSetEmptyDimsForTensorDescNCHW) {
57 TensorDesc desc(precision, emptyDims, NCHW);
58 ASSERT_NO_THROW(desc.setDims(emptyDims));
61 TEST_F(DataTests, canSetEmptyDimsForTensorDescBlocked) {
62 TensorDesc desc(precision, emptyDims, BLOCKED);
63 ASSERT_NO_THROW(desc.setDims(emptyDims));
66 TEST_F(DataTests, canSetNotEmptyDimsForTensorDescBlocked) {
67 TensorDesc desc(precision, notEmptyDims, BLOCKED);
68 ASSERT_NO_THROW(desc.setDims(notEmptyDims));
71 TEST_F(DataTests, canSetEmptyDimsForBlockingDescOrder) {
72 ASSERT_NO_THROW(BlockingDesc(emptyDims, emptyDims));
75 TEST_F(DataTests, throwOnFillDescByEmptyDimsForBlockingDesc) {
76 BlockingDescTest desc(emptyDims, emptyDims);
77 ASSERT_THROW(desc.fillDescTest(emptyDims, emptyDims), InferenceEngineException);
80 TEST_F(DataTests, throwOnSetEmptyDimsForBlockingDescBlocked) {
81 ASSERT_NO_THROW(BlockingDesc(emptyDims, BLOCKED));
84 TEST_F(DataTests, throwOnSetEmptyDimsForBlockingDescNCHW) {
85 ASSERT_NO_THROW(BlockingDesc(emptyDims, NCHW));
88 TEST_F(DataTests, canSetNotEmptyDimsForBlockingDescBlocked) {
89 ASSERT_NO_THROW(BlockingDesc(notEmptyDims, BLOCKED));
92 TEST_F(DataTests, canSetNotEmptyDimsForBlockingDescNCHW) {
93 ASSERT_NO_THROW(BlockingDesc(notEmptyDims, NCHW));
96 TEST_F(DataTests, setPrecision) {
97 Data data(data_name, emptyDims, Precision::FP32, Layout::NCHW);
99 EXPECT_EQ(Precision::FP32, data.precision);
100 EXPECT_EQ(Precision::FP32, data.getPrecision());
101 EXPECT_EQ(Precision::FP32, data.getTensorDesc().getPrecision());
103 data.setPrecision(Precision::FP16);
104 EXPECT_EQ(Precision::FP16, data.precision);
105 EXPECT_EQ(Precision::FP16, data.getPrecision());
106 EXPECT_EQ(Precision::FP16, data.getTensorDesc().getPrecision());
108 data.precision = Precision::Q78;
109 EXPECT_EQ(Precision::Q78, data.precision);
110 EXPECT_EQ(Precision::Q78, data.getPrecision());
111 EXPECT_EQ(Precision::Q78, data.getTensorDesc().getPrecision());