use strict; use warnings; use XML::Generator::RSS10; use Test::More; BEGIN { eval { require XML::SAX::Writer }; if ($@) { plan skip_all => 'Cannot run tests without XML::SAX::Writer.'; } else { } } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); eval { $gen->image( title => 'Image title', url => 'http://example.com/image.jpg', link => 'http://example.com/bar', ) for 1 .. 2; }; like( $@, qr/call image\(\) more than once/, 'call image twice' ); } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); $gen->item( title => 'Item title', link => 'http://example.com/foo', ); $gen->channel( title => 'Channel title', link => 'http://example.com/', description => 'a description', ); eval { $gen->image( title => 'Image title', url => 'http://example.com/image.jpg', link => 'http://example.com/bar', ) for 1 .. 2; }; like( $@, qr/call image\(\) after calling channel\(\)/, 'call image after channel' ); } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); eval { $gen->textinput( title => 'Textinput title', name => 'ti', description => 'Textinput description', url => 'http://example.com/search', ) for 1 .. 2; }; like( $@, qr/call textinput\(\) more than once/, 'call image twice' ); } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); $gen->item( title => 'Item title', link => 'http://example.com/foo', ); $gen->channel( title => 'Channel title', link => 'http://example.com/', description => 'a description', ); eval { $gen->textinput( title => 'Textinput title', name => 'ti', description => 'Textinput description', url => 'http://example.com/search', ); }; like( $@, qr/call textinput\(\) after calling channel\(\)/, 'call image after channel' ); } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); eval { $gen->channel( title => 'Channel title', link => 'http://example.com/', description => 'a description', ); }; like( $@, qr/without any items/, 'call channel without items' ); } { my $out; my $writer = XML::SAX::Writer->new( Output => \$out ); my $gen = XML::Generator::RSS10->new( Handler => $writer, pretty => 1, ); $gen->item( title => 'Item title', link => 'http://example.com/foo', ); $gen->channel( title => 'Channel title', link => 'http://example.com/', description => 'a description', ); eval { $gen->channel( title => 'Channel title', link => 'http://example.com/', description => 'a description', ); }; like( $@, qr/call channel\(\) more than once/, 'call channel twice' ); } done_testing();