summaryrefslogtreecommitdiff
path: root/t/45regex.t
blob: 54428e6b6a4fd0b346dd93027e8e303058c54d95 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#########################

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' );
}