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

use File::Basename;
my $lena = dirname($0) . "/lena.jpg";
my $verbose = Cv->hasGUI;

# ------------------------------------------------------------
# void cvSetZero(CvArr* arr)
# void cvZero(CvArr* arr)
# ------------------------------------------------------------

# (11) Cv::Arr::cvSetZero(arr);
# (12) Cv::Arr::cvZero(arr);
# (13) Cv->SetZero(arr);
# (14) Cv->Zero(arr);
# (15) $arr->SetZero;
# (6) $arr->setZero;
# (17) $arr->Zero;
# (8) $arr->zero;

if (1) {
	my $arr = Cv->loadImage($lena, CV_LOAD_IMAGE_COLOR);
	isa_ok($arr, 'Cv::Image');
	my @channels = 0 .. $arr->nChannels - 1;

	if ($verbose) {
		$arr->show($lena);
		Cv->waitKey(1000);
	}

	if (11) {
		my $s1 = Cv::Arr::cvSetZero($arr->clone)->Sum;
		is($s1->[$_], 0) for @channels;
	}

	if (12) {
		my $s2 = Cv::Arr::cvZero($arr->clone)->Sum;
		is($s2->[$_], 0) for @channels;
	}

	my $zero = $arr->Zero;
	my $sum = cvScalarAll(0);
	foreach my $j (0 .. $arr->height - 1) {
		foreach my $i (0 .. $arr->width - 1) {
			my $x = $arr->Get($j, $i);
			$sum->[$_] += $x->[$_] for @channels;
		}
	}
	is($sum->[$_], 0) for @channels;
}

if (10) {
	my $arr = Cv->createMat(240, 320, CV_8UC3);
	throws_ok { $arr->setZero({}) } qr/Usage: Cv::Arr::cvSetZero\(arr\) at $0/;
}