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 => 8;
use Test::Exception;
BEGIN { use_ok('Cv', -nomore) }

if (1) {
	my $arr = Cv::Mat->new([240, 320], CV_8UC1);
	my $arr2 = $arr->cvtScale(1, 0);
	is($arr2->type, $arr->type);
}

if (2) {
	my $arr = Cv::Mat->new([240, 320], CV_8UC3);
	my $arr2 = $arr->cvtScale($arr->new(CV_32FC3), 1, 0);
	is($arr2->type, CV_32FC3);
}

if (3) {
	my $src = Cv::Mat->new([ 3 ], CV_32SC1);
	$src->set([0], [int rand 1000]);
	$src->set([1], [int rand 1000]);
	$src->set([2], [int rand 1000]);
	my $dst = $src->cvtScale(my $scale = 2, my $shift = 3);
	is($dst->getReal(0), CvtScale($src->getReal(0), $scale, $shift));
	is($dst->getReal(1), CvtScale($src->getReal(1), $scale, $shift));
	is($dst->getReal(2), CvtScale($src->getReal(2), $scale, $shift));
}

sub CvtScale {
	my ($x, $scale, $shift) = @_;
	$x * $scale + $shift;
}

if (10) {
	my $arr = Cv::Mat->new([240, 320], CV_8UC3);
	throws_ok { $arr->cvtScale(1, 0, 1) } qr/Usage: Cv::Arr::cvConvertScale\(src, dst, scale=1, shift=0\) at $0/;
}

if (11) {
	my $arr = Cv::Mat->new([240, 320], CV_8UC3);
	throws_ok { $arr->cvtScale($arr->new([120, 160])) } qr/OpenCV Error:/;
}