The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 4;
use Imager::QRCode;
use Encode;

my @Tests = ( {
    params => {},
    result => qr/^$/,
}, {
    params => {
        size          => 2,
        margin        => 2,
        version       => 1,
        level         => 'M',
        casesensitive => 1,
        lightcolor    => Imager::Color->new(255, 255, 255),
        darkcolor     => Imager::Color->new(0, 0, 0),
    },
    result => qr/^$/,
}, {
    params => {
        size          => 2,
        margin        => 2,
        version       => 1,
        level         => 'M',
        casesensitive => 1,
        mode          => '8-bit',
        lightcolor    => Imager::Color->new(255, 255, 255),
        darkcolor     => Imager::Color->new(0, 0, 0),
    },
    result => qr/^$/,
}, {
    params => {
        size          => 2,
        margin        => 2,
        version       => 1,
        level         => 'M',
        casesensitive => 1,
        mode          => 'invalid',
        lightcolor    => Imager::Color->new(255, 255, 255),
        darkcolor     => Imager::Color->new(0, 0, 0),
    },
    result => qr/^Invalid mode: XS error/,
} );

for my $dat ( @Tests ) {
    my $params = $dat->{ params };
    my $qrcode = Imager::QRCode->new(%$params);
    my $text = encode('cp932', decode('utf8', "QRコードは(株)デンソーウェーブの登録商標です。QR Code is registered trademarks of DENSO WAVE INCORPORATED in JAPAN and other countries."));

    eval { $qrcode->plot($text) };
    like $@, $dat->{ result }, 'plot successful';
}