4 use Test::More tests => 31;
5 use Imager::Test qw/test_image test_image_double is_image/;
7 my $test_im = test_image;
8 my $test_im_dbl = test_image_double;
11 # split out channels and put it back together
12 my $red = Imager->combine(src => [ $test_im ]);
13 ok($red, "extracted the red channel");
14 is($red->getchannels, 1, "red should be a single channel");
15 my $green = Imager->combine(src => [ $test_im ], channels => [ 1 ]);
16 ok($green, "extracted the green channel");
17 is($green->getchannels, 1, "green should be a single channel");
18 my $blue = $test_im->convert(preset => "blue");
19 ok($blue, "extracted blue (via convert)");
21 # put them back together
22 my $combined = Imager->combine(src => [ $red, $green, $blue ]);
23 is($combined->getchannels, 3, "check we got a three channel image");
24 is_image($combined, $test_im, "presto! check it's the same");
29 ok(!Imager->combine(), "no src");
30 is(Imager->errstr, "src parameter missing", "check message");
36 ok(!Imager->combine(src => [ $im ]), "empty image");
37 is(Imager->errstr, "empty input image", "check message");
43 ok(!Imager->combine(src => [ $im ]), "not an image");
44 is(Imager->errstr, "src must contain image objects", "check message");
49 ok(!Imager->combine(src => []), "no images");
50 is(Imager->errstr, "At least one image must be supplied",
56 ok(!Imager->combine(src => [ ($test_im) x 5 ]), "too many source images");
57 is(Imager->errstr, "Maximum of 4 channels, you supplied 5",
63 ok(!Imager->combine(src => [ $test_im ], channels => [ -1 ]),
65 is(Imager->errstr, "Channel numbers must be zero or positive",
71 ok(!Imager->combine(src => [ $test_im ], channels => [ 3 ]),
73 is(Imager->errstr, "Channel 3 for image 0 is too high (3 channels)",
78 # make sure we get the higher of the bits
79 my $out = Imager->combine(src => [ $test_im, $test_im_dbl ]);
80 ok($out, "make from 8 and double/sample images");
81 is($out->bits, "double", "check output bits");
85 # check high-bit processing
86 # split out channels and put it back together
87 my $red = Imager->combine(src => [ $test_im_dbl ]);
88 ok($red, "extracted the red channel");
89 is($red->getchannels, 1, "red should be a single channel");
90 my $green = Imager->combine(src => [ $test_im_dbl ], channels => [ 1 ]);
91 ok($green, "extracted the green channel");
92 is($green->getchannels, 1, "green should be a single channel");
93 my $blue = $test_im_dbl->convert(preset => "blue");
94 ok($blue, "extracted blue (via convert)");
96 # put them back together
97 my $combined = Imager->combine(src => [ $red, $green, $blue ]);
98 is($combined->getchannels, 3, "check we got a three channel image");
99 is_image($combined, $test_im_dbl, "presto! check it's the same");
100 is($combined->bits, "double", "and we got a double image output");