1 /*
2  * Copyright (c) 2022 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <gtest/gtest.h>
17 
18 #include "transform.h"
19 #include "memory_manager.h"
20 
21 using namespace testing;
22 using namespace testing::ext;
23 using namespace OHOS::NeuralNetworkRuntime;
24 namespace OHOS {
25 namespace NeuralNetworkRuntime {
26 namespace UnitTest {
27 class TransformTest : public testing::Test {
28 public:
29     TransformTest() = default;
30     ~TransformTest() = default;
31 };
32 
33 /**
34  * @tc.name: transform_gettypesize_001
35  * @tc.desc: Verify the TransIOTensor function return 1.
36  * @tc.type: FUNC
37  */
38 HWTEST_F(TransformTest, transform_gettypesize_001, TestSize.Level0)
39 {
40     OH_NN_DataType dataType = OH_NN_BOOL;
41     uint32_t result = GetTypeSize(dataType);
42     EXPECT_EQ(static_cast<uint32_t>(1), result);
43 }
44 
45 /**
46  * @tc.name: transform_gettypesize_002
47  * @tc.desc: Verify the TransIOTensor function return 2.
48  * @tc.type: FUNC
49  */
50 HWTEST_F(TransformTest, transform_gettypesize_002, TestSize.Level0)
51 {
52     OH_NN_DataType dataType = OH_NN_INT16;
53     uint32_t result = GetTypeSize(dataType);
54     EXPECT_EQ(static_cast<uint32_t>(2), result);
55 }
56 
57 /**
58  * @tc.name: transform_gettypesize_003
59  * @tc.desc: Verify the TransIOTensor function return 4.
60  * @tc.type: FUNC
61  */
62 HWTEST_F(TransformTest, transform_gettypesize_003, TestSize.Level0)
63 {
64     OH_NN_DataType dataType = OH_NN_INT32;
65     uint32_t result = GetTypeSize(dataType);
66     EXPECT_EQ(static_cast<uint32_t>(4), result);
67 }
68 
69 /**
70  * @tc.name: transform_gettypesize_004
71  * @tc.desc: Verify the TransIOTensor function return 8.
72  * @tc.type: FUNC
73  */
74 HWTEST_F(TransformTest, transform_gettypesize_004, TestSize.Level0)
75 {
76     OH_NN_DataType dataType = OH_NN_INT64;
77     uint32_t result = GetTypeSize(dataType);
78     EXPECT_EQ(static_cast<uint32_t>(8), result);
79 }
80 
81 /**
82  * @tc.name: transform_gettypesize_005
83  * @tc.desc: Verify the TransIOTensor function return 0.
84  * @tc.type: FUNC
85  */
86 HWTEST_F(TransformTest, transform_gettypesize_005, TestSize.Level0)
87 {
88     OH_NN_DataType dataType = OH_NN_UNKNOWN;
89     uint32_t result = GetTypeSize(dataType);
90     EXPECT_EQ(static_cast<uint32_t>(0), result);
91 }
92 
93 /**
94  * @tc.name: transform_nntoms_transformdatatype_001
95  * @tc.desc: Verify the TransIOTensor function return DATA_TYPE_BOOL.
96  * @tc.type: FUNC
97  */
98 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_001, TestSize.Level0)
99 {
100     OH_NN_DataType dataType = OH_NN_BOOL;
101     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
102     EXPECT_EQ(mindspore::lite::DATA_TYPE_BOOL, result);
103 }
104 
105 /**
106  * @tc.name: transform_nntoms_transformdatatype_002
107  * @tc.desc: Verify the TransDataType function return DATA_TYPE_INT8.
108  * @tc.type: FUNC
109  */
110 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_002, TestSize.Level0)
111 {
112     OH_NN_DataType dataType = OH_NN_INT8;
113     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
114     EXPECT_EQ(mindspore::lite::DATA_TYPE_INT8, result);
115 }
116 
117 /**
118  * @tc.name: transform_nntoms_transformdatatype_003
119  * @tc.desc: Verify the TransDataType function return DATA_TYPE_INT16.
120  * @tc.type: FUNC
121  */
122 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_003, TestSize.Level0)
123 {
124     OH_NN_DataType dataType = OH_NN_INT16;
125     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
126     EXPECT_EQ(mindspore::lite::DATA_TYPE_INT16, result);
127 }
128 
129 /**
130  * @tc.name: transform_nntoms_transformdatatype_004
131  * @tc.desc: Verify the TransDataType function return DATA_TYPE_INT32.
132  * @tc.type: FUNC
133  */
134 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_004, TestSize.Level0)
135 {
136     OH_NN_DataType dataType = OH_NN_INT32;
137     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
138     EXPECT_EQ(mindspore::lite::DATA_TYPE_INT32, result);
139 }
140 
141 /**
142  * @tc.name: transform_nntoms_transformdatatype_005
143  * @tc.desc: Verify the TransDataType function return DATA_TYPE_INT64.
144  * @tc.type: FUNC
145  */
146 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_005, TestSize.Level0)
147 {
148     OH_NN_DataType dataType = OH_NN_INT64;
149     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
150     EXPECT_EQ(mindspore::lite::DATA_TYPE_INT64, result);
151 }
152 
153 /**
154  * @tc.name: transform_nntoms_transformdatatype_006
155  * @tc.desc: Verify the TransDataType function return DATA_TYPE_UINT8.
156  * @tc.type: FUNC
157  */
158 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_006, TestSize.Level0)
159 {
160     OH_NN_DataType dataType = OH_NN_UINT8;
161     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
162     EXPECT_EQ(mindspore::lite::DATA_TYPE_UINT8, result);
163 }
164 
165 /**
166  * @tc.name: transform_nntoms_transformdatatype_007
167  * @tc.desc: Verify the TransDataType function return DATA_TYPE_UINT16.
168  * @tc.type: FUNC
169  */
170 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_007, TestSize.Level0)
171 {
172     OH_NN_DataType dataType = OH_NN_UINT16;
173     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
174     EXPECT_EQ(mindspore::lite::DATA_TYPE_UINT16, result);
175 }
176 
177 /**
178  * @tc.name: transform_nntoms_transformdatatype_008
179  * @tc.desc: Verify the TransDataType function return DATA_TYPE_UINT32.
180  * @tc.type: FUNC
181  */
182 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_008, TestSize.Level0)
183 {
184     OH_NN_DataType dataType = OH_NN_UINT32;
185     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
186     EXPECT_EQ(mindspore::lite::DATA_TYPE_UINT32, result);
187 }
188 
189 /**
190  * @tc.name: transform_nntoms_transformdatatype_009
191  * @tc.desc: Verify the TransDataType function return DATA_TYPE_UINT64.
192  * @tc.type: FUNC
193  */
194 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_009, TestSize.Level0)
195 {
196     OH_NN_DataType dataType = OH_NN_UINT64;
197     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
198     EXPECT_EQ(mindspore::lite::DATA_TYPE_UINT64, result);
199 }
200 
201 /**
202  * @tc.name: transform_nntoms_transformdatatype_010
203  * @tc.desc: Verify the TransDataType function return DATA_TYPE_FLOAT16.
204  * @tc.type: FUNC
205  */
206 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_010, TestSize.Level0)
207 {
208     OH_NN_DataType dataType = OH_NN_FLOAT16;
209     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
210     EXPECT_EQ(mindspore::lite::DATA_TYPE_FLOAT16, result);
211 }
212 
213 /**
214  * @tc.name: transform_nntoms_transformdatatype_011
215  * @tc.desc: Verify the TransDataType function return DATA_TYPE_FLOAT32.
216  * @tc.type: FUNC
217  */
218 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_011, TestSize.Level0)
219 {
220     OH_NN_DataType dataType = OH_NN_FLOAT32;
221     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
222     EXPECT_EQ(mindspore::lite::DATA_TYPE_FLOAT32, result);
223 }
224 
225 /**
226  * @tc.name: transform_nntoms_transformdatatype_012
227  * @tc.desc: Verify the TransDataType function return DATA_TYPE_UNKNOWN.
228  * @tc.type: FUNC
229  */
230 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_012, TestSize.Level0)
231 {
232     OH_NN_DataType dataType = OH_NN_UNKNOWN;
233     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
234     EXPECT_EQ(mindspore::lite::DATA_TYPE_UNKNOWN, result);
235 }
236 
237 /**
238  * @tc.name: transform_nntoms_transformdatatype_013
239  * @tc.desc: Verify the TransDataType function return DATA_TYPE_FLOAT64
240  * @tc.type: FUNC
241  */
242 HWTEST_F(TransformTest, transform_nntoms_transformdatatype_013, TestSize.Level0)
243 {
244     OH_NN_DataType dataType = OH_NN_FLOAT64;
245     mindspore::lite::DataType result = NNToMS::TransformDataType(dataType);
246     EXPECT_EQ(mindspore::lite::DATA_TYPE_FLOAT64, result);
247 }
248 
249 /**
250  * @tc.name: transform_nntoms_transformformat_001
251  * @tc.desc: Verify the TransFormat function return FORMAT_NCHW.
252  * @tc.type: FUNC
253  */
254 HWTEST_F(TransformTest, transform_nntoms_transformformat_001, TestSize.Level0)
255 {
256     OH_NN_Format format = OH_NN_FORMAT_NCHW;
257     mindspore::lite::Format result = NNToMS::TransformFormat(format);
258     EXPECT_EQ(mindspore::lite::FORMAT_NCHW, result);
259 }
260 
261 /**
262  * @tc.name: transform_nntoms_transformformat_002
263  * @tc.desc: Verify the TransFormat function return FORMAT_NHWC.
264  * @tc.type: FUNC
265  */
266 HWTEST_F(TransformTest, transform_nntoms_transformformat_002, TestSize.Level0)
267 {
268     OH_NN_Format format = OH_NN_FORMAT_NHWC;
269     mindspore::lite::Format result = NNToMS::TransformFormat(format);
270     EXPECT_EQ(mindspore::lite::FORMAT_NHWC, result);
271 }
272 
273 /**
274  * @tc.name: transform_nntoms_transformformat_003
275  * @tc.desc: Verify the TransFormat function return FORMAT_NHWC.
276  * @tc.type: FUNC
277  */
278 HWTEST_F(TransformTest, transform_nntoms_transformformat_003, TestSize.Level0)
279 {
280     OH_NN_Format format = OH_NN_FORMAT_NONE;
281     mindspore::lite::Format result = NNToMS::TransformFormat(format);
282     EXPECT_EQ(mindspore::lite::FORMAT_NHWC, result);
283 }
284 
285 /**
286  * @tc.name: transform_nntoms_transformfusiontype_001
287  * @tc.desc: Verify the TransFormat function return ACTIVATION_TYPE_NO_ACTIVATION.
288  * @tc.type: FUNC
289  */
290 HWTEST_F(TransformTest, transform_nntoms_transformfusiontype_001, TestSize.Level0)
291 {
292     OH_NN_FuseType type = OH_NN_FUSED_NONE;
293     mindspore::lite::ActivationType result = NNToMS::TransfromFusionType(type);
294     EXPECT_EQ(mindspore::lite::ACTIVATION_TYPE_NO_ACTIVATION, result);
295 }
296 
297 /**
298  * @tc.name: transform_nntoms_transformfusiontype_002
299  * @tc.desc: Verify the TransFormat function return ACTIVATION_TYPE_RELU.
300  * @tc.type: FUNC
301  */
302 HWTEST_F(TransformTest, transform_nntoms_transformfusiontype_002, TestSize.Level0)
303 {
304     OH_NN_FuseType type = OH_NN_FUSED_RELU;
305     mindspore::lite::ActivationType result = NNToMS::TransfromFusionType(type);
306     EXPECT_EQ(mindspore::lite::ACTIVATION_TYPE_RELU, result);
307 }
308 
309 /**
310  * @tc.name: transform_nntoms_transformfusiontype_003
311  * @tc.desc: Verify the TransFormat function return ACTIVATION_TYPE_RELU6.
312  * @tc.type: FUNC
313  */
314 HWTEST_F(TransformTest, transform_nntoms_transformfusiontype_003, TestSize.Level0)
315 {
316     OH_NN_FuseType type = OH_NN_FUSED_RELU6;
317     mindspore::lite::ActivationType result = NNToMS::TransfromFusionType(type);
318     EXPECT_EQ(mindspore::lite::ACTIVATION_TYPE_RELU6, result);
319 }
320 
321 /**
322  * @tc.name: transform_nntoms_transformquanttype_001
323  * @tc.desc: Verify the TransFormat function return QUANT_TYPE_NONE.
324  * @tc.type: FUNC
325  */
326 HWTEST_F(TransformTest, transform_nntoms_transformquanttype_001, TestSize.Level0)
327 {
328     OHOS::NeuralNetworkRuntime::Ops::OpsQuantType type = OHOS::NeuralNetworkRuntime::Ops::OpsQuantType::QUANT_NONE;
329     mindspore::lite::QuantType result = NNToMS::TransformQuantType(type);
330     EXPECT_EQ(mindspore::lite::QUANT_TYPE_NONE, result);
331 }
332 
333 /**
334  * @tc.name: transform_nntoms_transformquanttype_002
335  * @tc.desc: Verify the TransFormat function return QUANT_TYPE_ALL.
336  * @tc.type: FUNC
337  */
338 HWTEST_F(TransformTest, transform_nntoms_transformquanttype_002, TestSize.Level0)
339 {
340     OHOS::NeuralNetworkRuntime::Ops::OpsQuantType type = OHOS::NeuralNetworkRuntime::Ops::OpsQuantType::QUANT_ALL;
341     mindspore::lite::QuantType result = NNToMS::TransformQuantType(type);
342     EXPECT_EQ(mindspore::lite::QUANT_TYPE_ALL, result);
343 }
344 
345 
346 /**
347  * @tc.name: transform_mstonn_transformdatatype_001
348  * @tc.desc: Verify the TransIOTensor function return OH_NN_BOOL.
349  * @tc.type: FUNC
350  */
351 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_001, TestSize.Level0)
352 {
353     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_BOOL;
354     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
355     EXPECT_EQ(OH_NN_BOOL, result);
356 }
357 
358 /**
359  * @tc.name: transform_mstonn_transformdatatype_002
360  * @tc.desc: Verify the TransDataType function return OH_NN_INT8.
361  * @tc.type: FUNC
362  */
363 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_002, TestSize.Level0)
364 {
365     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_INT8;
366     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
367     EXPECT_EQ(OH_NN_INT8, result);
368 }
369 
370 /**
371  * @tc.name: transform_mstonn_transformdatatype_003
372  * @tc.desc: Verify the TransDataType function return OH_NN_INT16.
373  * @tc.type: FUNC
374  */
375 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_003, TestSize.Level0)
376 {
377     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_INT16;
378     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
379     EXPECT_EQ(OH_NN_INT16, result);
380 }
381 
382 /**
383  * @tc.name: transform_mstonn_transformdatatype_004
384  * @tc.desc: Verify the TransDataType function return OH_NN_INT32.
385  * @tc.type: FUNC
386  */
387 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_004, TestSize.Level0)
388 {
389     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_INT32;
390     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
391     EXPECT_EQ(OH_NN_INT32, result);
392 }
393 
394 /**
395  * @tc.name: transform_mstonn_transformdatatype_005
396  * @tc.desc: Verify the TransDataType function return OH_NN_INT64.
397  * @tc.type: FUNC
398  */
399 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_005, TestSize.Level0)
400 {
401     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_INT64;
402     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
403     EXPECT_EQ(OH_NN_INT64, result);
404 }
405 
406 /**
407  * @tc.name: transform_mstonn_transformdatatype_006
408  * @tc.desc: Verify the TransDataType function return OH_NN_UINT8.
409  * @tc.type: FUNC
410  */
411 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_006, TestSize.Level0)
412 {
413     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_UINT8;
414     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
415     EXPECT_EQ(OH_NN_UINT8, result);
416 }
417 
418 /**
419  * @tc.name: transform_mstonn_transformdatatype_007
420  * @tc.desc: Verify the TransDataType function return OH_NN_UINT16.
421  * @tc.type: FUNC
422  */
423 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_007, TestSize.Level0)
424 {
425     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_UINT16;
426     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
427     EXPECT_EQ(OH_NN_UINT16, result);
428 }
429 
430 /**
431  * @tc.name: transform_mstonn_transformdatatype_008
432  * @tc.desc: Verify the TransDataType function return OH_NN_UINT32.
433  * @tc.type: FUNC
434  */
435 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_008, TestSize.Level0)
436 {
437     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_UINT32;
438     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
439     EXPECT_EQ(OH_NN_UINT32, result);
440 }
441 
442 /**
443  * @tc.name: transform_mstonn_transformdatatype_009
444  * @tc.desc: Verify the TransDataType function return OH_NN_UINT64.
445  * @tc.type: FUNC
446  */
447 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_009, TestSize.Level0)
448 {
449     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_UINT64;
450     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
451     EXPECT_EQ(OH_NN_UINT64, result);
452 }
453 
454 /**
455  * @tc.name: transform_mstonn_transformdatatype_010
456  * @tc.desc: Verify the TransDataType function return OH_NN_FLOAT16
457  * @tc.type: FUNC
458  */
459 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_010, TestSize.Level0)
460 {
461     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_FLOAT16;
462     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
463     EXPECT_EQ(OH_NN_FLOAT16, result);
464 }
465 
466 /**
467  * @tc.name: transform_mstonn_transformdatatype_011
468  * @tc.desc: Verify the TransDataType function return OH_NN_FLOAT32.
469  * @tc.type: FUNC
470  */
471 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_011, TestSize.Level0)
472 {
473     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_FLOAT32;
474     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
475     EXPECT_EQ(OH_NN_FLOAT32, result);
476 }
477 
478 /**
479  * @tc.name: transform_mstonn_transformdatatype_012
480  * @tc.desc: Verify the TransDataType function return OH_NN_UNKNOWN.
481  * @tc.type: FUNC
482  */
483 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_012, TestSize.Level0)
484 {
485     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_UNKNOWN;
486     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
487     EXPECT_EQ(OH_NN_UNKNOWN, result);
488 }
489 
490 /**
491  * @tc.name: transform_mstonn_transformdatatype_013
492  * @tc.desc: Verify the TransDataType function return DATA_TYPE_FLOAT64
493  * @tc.type: FUNC
494  */
495 HWTEST_F(TransformTest, transform_mstonn_transformdatatype_013, TestSize.Level0)
496 {
497     mindspore::lite::DataType dataType = mindspore::lite::DATA_TYPE_FLOAT64;
498     OH_NN_DataType result = MSToNN::TransformDataType(dataType);
499     EXPECT_EQ(OH_NN_FLOAT64, result);
500 }
501 
502 /**
503  * @tc.name: transform_mstonn_transformquantparams_001
504  * @tc.desc: Verify the TransformQuantParams function.
505  * @tc.type: FUNC
506  */
507 HWTEST_F(TransformTest, transform_mstonn_transformquantparams_001, TestSize.Level0)
508 {
509     std::vector<mindspore::lite::QuantParam> msQuantParams = {{1, 1.0, 8}};
510     std::vector<QuantParam> result = MSToNN::TransformQuantParams(msQuantParams);
511     EXPECT_EQ(msQuantParams.size(), result.size());
512 }
513 } // namespace UnitTest
514 } // namespace NeuralNetworkRuntime
515 } // namespace OHOS
516