The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#Check that Java exceptions are properly caught
use strict;
use warnings;
use XML::Jing;
use Test::More;
# use Test::Warn;
use Test::Exception;
use Path::Tiny;
use FindBin qw($Bin);
plan tests => 6;

my $jing;
my $nonexistent = 'nonexistent.xml';

#test the constructor
throws_ok
	{$jing = XML::Jing->new($nonexistent)}
	qr/^File doesn't exist: $nonexistent/,
	'warning for nonexistent RNG file';
ok(!$jing, 'constructor returns nothing for non-existent RNG file');

my $bad_rng = path($Bin, 'data', 'BAD.rng');

throws_ok
	{$jing = XML::Jing->new($bad_rng)}
	qr/^Error reading RNG file:/,
	'warning for bad RNG file';
ok(!$jing, 'constructor returns nothing for bad RNG file');

#test the validate method
$jing = XML::Jing->new(path($Bin, 'data','test.rng'));
my $errors = '';
throws_ok
	{$jing->validate($nonexistent)}
	qr/^File doesn't exist: $nonexistent/,
	'warning for nonexistent XML file';

$errors = '';
throws_ok
	{$jing->validate(path($Bin,'data','testBADDTD.xml'))}
	qr/^Error reading file:/,
	'warning for nonexistent DTD required by XML file';