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: 28 MindDataTestCropOp() : CVOpCommon() {} 29 30 std::shared_ptr<Tensor> output_tensor_; 31 }; 32 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 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 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