perl-XML-LibXML / t / 45regex.t

#########################

use strict;
use warnings;

use Test::More tests => 13;

use XML::LibXML;

{
    my $regex = '[0-9]{5}(-[0-9]{4})?';
    my $re = XML::LibXML::RegExp->new($regex);

    # TEST
    ok( $re, 'Regex object was initted.');
    # TEST
    ok( ! $re->matches('00'), 'Does not match 00' );
    # TEST
    ok( ! $re->matches('00-'), 'Does not match 00-' );
    # TEST
    ok( $re->matches('12345'), 'Matches 12345' );
    # TEST
    ok( !$re->matches('123456'), 'Does not match 123456' );

    # TEST
    ok( $re->matches('12345-1234'), 'Matches 12345-1234');
    # TEST
    ok( ! $re->matches(' 12345-1234'), 'Does not match leading space');
    # TEST
    ok( ! $re->matches(' 12345-12345'), 'Leading space No. 2' );
    # TEST
    ok( ! $re->matches('12345-1234 '), 'Trailing space' );

    # TEST
    ok( $re->isDeterministic, 'Regex is deterministic' );
}

{
    my $nondet_regex = '(bc)|(bd)';
    my $nondet_re = XML::LibXML::RegExp->new($nondet_regex);

    # TEST
    ok( $nondet_re, 'Non deterministic re was initted' );
    # TEST
    ok( ! $nondet_re->isDeterministic, 'It is not deterministic' );
}

{
    my $bad_regex = '[0-9]{5}(-[0-9]{4}?';
    eval { XML::LibXML::RegExp->new($bad_regex); };
    # TEST
    ok( $@, 'An exception was thrown on bad regex' );
}
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.