| 566 | } |
| 567 | |
| 568 | TEST(OpRotate_Negative, varshape_hasDifferentFormat) |
| 569 | { |
| 570 | cudaStream_t stream; |
| 571 | EXPECT_EQ(cudaSuccess, cudaStreamCreate(&stream)); |
| 572 | |
| 573 | nvcv::ImageFormat fmt = nvcv::FMT_RGB8; |
| 574 | const int numberOfImages = 5; |
| 575 | NVCVInterpolationType interpolation = NVCV_INTERP_NEAREST; |
| 576 | |
| 577 | int srcWidthBase = 4; |
| 578 | int srcHeightBase = 4; |
| 579 | |
| 580 | std::vector<std::tuple<nvcv::ImageFormat, nvcv::ImageFormat>> testSet{ |
| 581 | {nvcv::FMT_RGBA8, fmt}, |
| 582 | { fmt, nvcv::FMT_RGBA8} |
| 583 | }; |
| 584 | for (auto testCase : testSet) |
| 585 | { |
| 586 | nvcv::ImageFormat inputFmtExtra = std::get<0>(testCase); |
| 587 | nvcv::ImageFormat outputFmtExtra = std::get<1>(testCase); |
| 588 | |
| 589 | // Create input and output |
| 590 | std::default_random_engine randEng; |
| 591 | std::uniform_int_distribution<int> rndSrcWidth(srcWidthBase * 0.8, srcWidthBase * 1.1); |
| 592 | std::uniform_int_distribution<int> rndSrcHeight(srcHeightBase * 0.8, srcHeightBase * 1.1); |
| 593 | |
| 594 | nvcv::Tensor angleDegTensor(nvcv::TensorShape({numberOfImages}, "N"), nvcv::TYPE_F64); |
| 595 | nvcv::Tensor shiftTensor(nvcv::TensorShape({numberOfImages, 2}, nvcv::TENSOR_NW), nvcv::TYPE_F64); |
| 596 | |
| 597 | std::vector<nvcv::Image> imgSrc, imgDst; |
| 598 | |
| 599 | for (int i = 0; i < numberOfImages - 1; ++i) |
| 600 | { |
| 601 | int tmpWidth = i == 0 ? srcWidthBase : rndSrcWidth(randEng); |
| 602 | int tmpHeight = i == 0 ? srcHeightBase : rndSrcHeight(randEng); |
| 603 | |
| 604 | imgSrc.emplace_back(nvcv::Size2D{tmpWidth, tmpHeight}, fmt); |
| 605 | imgDst.emplace_back(nvcv::Size2D{tmpWidth, tmpHeight}, fmt); |
| 606 | } |
| 607 | imgSrc.emplace_back(imgSrc[0].size(), inputFmtExtra); |
| 608 | imgDst.emplace_back(imgSrc.back().size(), outputFmtExtra); |
| 609 | |
| 610 | nvcv::ImageBatchVarShape batchSrc(numberOfImages); |
| 611 | batchSrc.pushBack(imgSrc.begin(), imgSrc.end()); |
| 612 | |
| 613 | nvcv::ImageBatchVarShape batchDst(numberOfImages); |
| 614 | batchDst.pushBack(imgDst.begin(), imgDst.end()); |
| 615 | |
| 616 | cvcuda::Rotate rotateOp(numberOfImages); |
| 617 | EXPECT_EQ(NVCV_ERROR_INVALID_ARGUMENT, |
| 618 | nvcv::ProtectCall( |
| 619 | [&] { rotateOp(stream, batchSrc, batchDst, angleDegTensor, shiftTensor, interpolation); })); |
| 620 | } |
| 621 | |
| 622 | EXPECT_EQ(cudaSuccess, cudaStreamSynchronize(stream)); |
| 623 | EXPECT_EQ(cudaSuccess, cudaStreamDestroy(stream)); |
| 624 | } |
| 625 |
nothing calls this directly
no test coverage detected