1use strict;
2use warnings;
3
4use Test::More tests => 10;
5use Prima::sys::Test qw(noX11);
6
7# noX11 test
8
9my $i = Prima::Image-> create(
10       width  => 4,
11       height => 2,
12       preserveType => 0,
13       conversion => ict::None,
14       type => im::RGB,
15);
16
17my $rgb = "mamAmyLarAmuMamAmyLalAru";
18$i-> data( $rgb);
19is( $i-> data, $rgb, "import" );
20$i-> data( $rgb . reverse $rgb);
21is( $i-> data, $rgb, "bounds overset" );
22$i-> data( 'M');
23substr( $rgb, 0, 1) = 'M';
24is( $i-> data, $rgb, "bounds underset" );
25
26my $tester;
27$tester = sub {
28       my ( $s1, $s2, $format, $test_name) = @_;
29       my $new = $rgb;
30       eval "\$new =~ s/$s1/$s2/g";
31       $i-> set(
32               data => $new,
33               type => $format,
34       );
35       is( $i-> data, $rgb, $test_name );
36};
37
38# 4
39$tester->('([A-Z])([a-z])([a-z])', '$3$2$1',    im::Color|im::bpp24|im::fmtBGR,  "im::fmtBGR" );
40$tester->('([A-Z])',               '0$1',       im::Color|im::bpp32|im::fmtIRGB, "im::fmtIRGB" );
41$tester->('([A-Z][a-z][a-z])',     '${1}0',     im::Color|im::bpp32|im::fmtRGBI, "im::fmtRGBI" );
42$tester->('([A-Z])([a-z])([a-z])', '0$3$2$1',   im::Color|im::bpp32|im::fmtIBGR, "im::fmtIBGR" );
43$tester->('([A-Z])([a-z])([a-z])', '$3$2${1}0', im::Color|im::bpp32|im::fmtBGRI, "im::fmtBGRI" );
44# 9
45$i-> set(
46       data    => "\0\1\2\3\4\5\6\7",
47       type    => im::bpp8,
48       palette => [ map { ord } split('', $rgb)],
49);
50is( $i-> data, "\0\1\2\3\4\5\6\7", "im::bpp8+palette" );
51# 10
52$i-> set(
53       data    => "\4\5\6\7\0\1\2\3",
54       reverse => 1,
55       type    => im::bpp8,
56);
57is( $i-> data, "\0\1\2\3\4\5\6\7", "reverse" );
58