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 $a = Cv->createMat(2, 2, CV_64FC1)
		->setReal([0, 0], 5)->setReal([0, 1], 6)
		->setReal([1, 0], 7)->setReal([1, 1], 8);

	my $b = Cv->createMat(2, 2, CV_64FC1)
		->setReal((0, 0), 1)->setReal((0, 1), 2)
		->setReal((1, 0), 3)->setReal((1, 1), 4);

	my $c = Cv->createMat(2, 2, CV_64FC1);

	my $s = 2;
	$a->scaleAdd([$s], $b, $c);

	is($c->getReal([0, 0]), $s * $a->getReal(0, 0) + $b->getReal(0, 0));
	is($c->getReal([0, 1]), $s * $a->getReal(0, 1) + $b->getReal(0, 1));
	is($c->getReal([1, 0]), $s * $a->getReal(1, 0) + $b->getReal(1, 0));
	is($c->getReal([1, 1]), $s * $a->getReal(1, 1) + $b->getReal(1, 1));
}

if (10) {
	my $a = Cv->createMat(2, 2, CV_64FC1);
	throws_ok { $a->scaleAdd(1, 2, 3) } qr/Usage: Cv::Arr::cvScaleAdd\(src1, scale, src2, dst\) at $0/;
}

if (11) {
	my $a = Cv->createMat(2, 2, CV_64FC1);
	throws_ok { $a->scaleAdd(1) } qr/scale is not of type CvScalar in Cv::Arr::cvScaleAdd at $0/;
}

if (12) {
	my $a = Cv->createMat(2, 2, CV_64FC1);
	my $b = Cv->createMat(2, 2, CV_64FC2);
	my $c = Cv->createMat(2, 2, CV_64FC3);
	throws_ok { $a->scaleAdd([2], $b, $c) } qr/OpenCV Error:/;
}