1 /**
2 * Copyright 2020 Huawei Technologies Co., Ltd
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 #include "common/common.h"
17 #include "common/cvop_common.h"
18 #include "minddata/dataset/kernels/image/crop_op.h"
19 #include "utils/log_adapter.h"
20
21 using namespace mindspore::dataset;
22 using mindspore::LogStream;
23 using mindspore::ExceptionType::NoExceptionType;
24 using mindspore::MsLogLevel::INFO;
25
26 class MindDataTestCropOp : public UT::CVOP::CVOpCommon {
27 protected:
MindDataTestCropOp()28 MindDataTestCropOp() : CVOpCommon() {}
29
30 std::shared_ptr<Tensor> output_tensor_;
31 };
32
TEST_F(MindDataTestCropOp,TestOp1)33 TEST_F(MindDataTestCropOp, TestOp1) {
34 MS_LOG(INFO) << "Doing testCrop.";
35 // Crop params
36 int crop_height = 18;
37 int crop_width = 12;
38 std::unique_ptr<CropOp> op(new CropOp(0, 0, crop_height, crop_width));
39 EXPECT_TRUE(op->OneToOne());
40 Status s = op->Compute(input_tensor_, &output_tensor_);
41 size_t actual = 0;
42 if (s == Status::OK()) {
43 actual = output_tensor_->shape()[0] * output_tensor_->shape()[1] * output_tensor_->shape()[2];
44 }
45 EXPECT_EQ(crop_height, output_tensor_->shape()[0]);
46 EXPECT_EQ(actual, crop_height * crop_width * 3);
47 EXPECT_EQ(s, Status::OK());
48 }
49
TEST_F(MindDataTestCropOp,TestOp2)50 TEST_F(MindDataTestCropOp, TestOp2) {
51 MS_LOG(INFO) << "Doing testCrop negative coordinates.";
52 // Crop params
53 unsigned int crop_height = 10;
54 unsigned int crop_width = 10;
55
56 std::unique_ptr<CropOp> op(new CropOp(-10, -10, crop_height, crop_width));
57 EXPECT_TRUE(op->OneToOne());
58 Status s = op->Compute(input_tensor_, &output_tensor_);
59 EXPECT_EQ(false, s.IsOk());
60 MS_LOG(INFO) << "testCrop coordinate exception end.";
61 }
62
TEST_F(MindDataTestCropOp,TestOp3)63 TEST_F(MindDataTestCropOp, TestOp3) {
64 MS_LOG(INFO) << "Doing testCrop size too large.";
65 // Crop params
66 unsigned int crop_height = 1200000;
67 unsigned int crop_width = 1200000;
68
69 std::unique_ptr<CropOp> op(new CropOp(0, 0, crop_height, crop_width));
70 EXPECT_TRUE(op->OneToOne());
71 Status s = op->Compute(input_tensor_, &output_tensor_);
72 EXPECT_EQ(false, s.IsOk());
73 MS_LOG(INFO) << "testCrop size exception end.";
74 }
75