The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*- mode: perl; coding: utf-8; tab-width: 4 -*-

use strict;
use warnings;
# use Test::More qw(no_plan);
use Test::More tests => 3;
use Test::Exception;
BEGIN { use_ok('Cv', -nomore) }

my $verbose = Cv->hasGUI;

# ------------------------------------------------------------
#  void cvDCT(const CvArr* src, CvArr* dst, int flags)
# ------------------------------------------------------------

my $src = Cv::Mat->new([100, 100], CV_64FC1);
for my $i (0 .. $src->rows - 1) {
	for my $j (0 .. $src->cols - 1) {
		my ($x, $y) = ($i / $src->rows, $j / $src->cols);
		$src->set([$i, $j], [sqrt($x * $x + $y * $y)]);
	}
}

if (1) {
	my $dct = $src->DCT(CV_DXT_INVERSE);
	if ($verbose) {
		$dct->show("dct");
		Cv->waitKey(1000);
	}
}

if (2) {
	my $dct = $src->DCT($src->new, CV_DXT_INVERSE);
	if ($verbose) {
		$dct->show("dct");
		Cv->waitKey(1000);
	}
}

if (10) {
	throws_ok { $src->DCT() } qr/Usage: Cv::Arr::cvDCT\(src, dst, flags\) at $0/;
}

if (11) {
	throws_ok { $src->DCT(\0, CV_DXT_FORWARD) } qr/OpenCV Error:/;
}