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

if (1) {
	my $rgba = Cv::Mat->new([100, 100], CV_8UC4);
	my $bgr = $rgba->new(CV_8UC3);
	my $alpha = $rgba->new(CV_8UC1);
	$rgba->Fill(cvScalar([map { ord $_ } split(//, "rgba")]));
	my $fromTo = [ (0, 2), (1, 1), (2, 0), (3, 3) ];
	Cv->MixChannels([ $rgba ], [ $bgr, $alpha ], $fromTo);
	is($rgba->get(0, 0)->[0], $bgr->get(0, 0)->[2]);
	is($rgba->get(0, 0)->[1], $bgr->get(0, 0)->[1]);
	is($rgba->get(0, 0)->[2], $bgr->get(0, 0)->[0]);
	is($rgba->get(0, 0)->[3], $alpha->get(0, 0)->[0]);
}

if (10) {
	throws_ok { Cv->mixChannels; } qr/Usage: Cv::cvMixChannels\(src, dst, fromTo\) at $0/;
}

if (11) {
	my $rgba = Cv::Mat->new([100, 100], CV_8UC4);
	my $bgr = $rgba->new(CV_8UC1);
	my $alpha = $rgba->new(CV_8UC1);
	my $fromTo = [ (0, 2), (1, 1), (2, 0), (3, 3) ];
	throws_ok { Cv->MixChannels([ $rgba ], [ $bgr, $alpha ], $fromTo) } qr/OpenCV Error:/;
}