The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;

use Test::More tests => 2;

use XML::LibXML;

use XML::Grammar::Screenplay::FromProto;
use XML::Grammar::Screenplay::FromProto::Parser::QnD;

sub load_xml
{
    my $path = shift;

    open my $in, "<", $path;
    my $contents;
    {
        local $/;
        $contents = <$in>
    }
    close($in);
    return $contents;
}


{
    my $grammar = XML::Grammar::Screenplay::FromProto->new({
        parser_class => "XML::Grammar::Screenplay::FromProto::Parser::QnD",
    });

    eval {
        my $got_xml = $grammar->convert(
            {
                source =>
                {
                    file => "t/screenplay/data/proto-text-invalid/inner-desc-inside-char-addressing.txt",
                },
            }
        );
    };

    my $err = $@;

    # TEST
    like ($err, qr{inner-desc.*?addressing},
        "Tried to put an inner-desc inside an addressing "
    );

}

{
    my $grammar = XML::Grammar::Screenplay::FromProto->new({
        parser_class => "XML::Grammar::Screenplay::FromProto::Parser::QnD",
    });

    eval {
        my $got_xml = $grammar->convert(
            {
                source =>
                {
                    file => "t/screenplay/data/proto-text-invalid/non-terminated-desc.txt",
                },
            }
        );
    };

    my $err = $@;

    # TEST
    like ($err, qr{Tag not closed at EOF},
        "Screenplay with a description that did not terminate"
    );

}

1;