fix codetest failure - ASSERT_ARGS does not have a ; after and
[parrot.git] / t / compilers / pge / pge_globs.t
blobb18c0c669576970034f6d12987817e94d338e841
1 #! perl
2 # Copyright (C) 2001-2005, Parrot Foundation.
3 # $Id$
5 use strict;
6 use warnings;
7 use lib qw( t . lib ../lib ../../lib );
8 use Test::More;
9 use Parrot::Test tests => 28;
10 use Parrot::Test::PGE;
12 =head1 NAME
14 t/library/pge_globs.t
16 =head1 SYNOPSIS
18         % prove -Ilib t/library/pge_globs.t
20 =head1 DESCRIPTION
22 Parrot Grammar Engine tests of globs
24 =cut
26 ## literal match
27 pgeglob_is( '', '', 'literal: empty string, empty pattern' );
28 pgeglob_isnt( '0', '',  'literal: empty pattern' );
29 pgeglob_isnt( '',  '0', 'literal: empty string' );
30 pgeglob_is( 'abc', 'abc', 'literal' );
31 pgeglob_isnt( 'abc', 'abd', 'literal' );
33 ## wildcards
34 pgeglob_is( 'bznza', 'b?n*a', "glob wildcards" );
35 pgeglob_is( 'bana',  'b?n*a', "glob wildcards" );
36 pgeglob_isnt( 'bnana', 'b?n*a', "glob wildcards" );
37 pgeglob_is( 'bnan', '?n?*', "glob wildcards" );
38 pgeglob_is( 'ana',  '?n?*', "glob wildcards" );
39 pgeglob_isnt( 'an', '?n?*', "glob wildcards" );
41 ## enumerated chars
42 pgeglob_is( 'orange', '[go]range', 'glob enumerated characters' );
43 pgeglob_is( 'grange', '[go]range', 'glob enumerated characters' );
44 pgeglob_isnt( 'ggrange', '[go]range', 'glob enumerated characters' );
45 pgeglob_isnt( 'borange', '[go]range', 'glob enumerated characters' );
46 pgeglob_isnt( 'arange',  '[go]range', 'glob enumerated characters' );
47 pgeglob_is( 'a', '[^0-9]', 'glob enumerated characters' );
48 pgeglob_isnt( '4',  '[^0-9]', 'glob enumerated characters' );
49 pgeglob_isnt( '0',  '[^0-9]', 'glob enumerated characters' );
50 pgeglob_isnt( '9',  '[^0-9]', 'glob enumerated characters' );
51 pgeglob_isnt( '4a', '[^0-9]', 'glob enumerated characters' );
52 pgeglob_isnt( 'aa', '[^0-9]', 'glob enumerated characters' );
53 pgeglob_is( '_', '[A-z]', '_ is between A and z' );
55 ## empty string
56 pgeglob_is( '', '*', 'glob empty string' );
57 pgeglob_isnt( '', '?',    'glob empty string' );
58 pgeglob_isnt( '', '[0]',  'glob empty string' );
59 pgeglob_isnt( '', '[^0]', 'glob empty string' );
61 ## alternate
62 pir_output_is( <<'CODE', <<'OUT', "Glob, alternate" );
64 .sub _main
65   load_bytecode "PGE.pbc"
66   load_bytecode "PGE/Glob.pbc"
68   .local pmc rule, globc
69   globc = compreg "PGE::Glob"
70   rule = globc.'compile'("{app,bet,cod}a")
72   $P1 = rule("appa")
73   if $P1 goto ok1
74   print "not "
75 ok1:
76   print "ok1\n"
78   $P1 = rule("coda")
79   if $P1 goto ok2
80   print "not "
81 ok2:
82   print "ok2\n"
84   $P1 = rule("beta")
85   if $P1 goto ok3
86   print "not "
87 ok3:
88   print "ok3\n"
90   $P1 = rule("bet")
91   unless $P1 goto ok4
92   print "not "
93 ok4:
94   print "ok4\n"
96   $P1 = rule("alfa")
97   unless $P1 goto ok5
98   print "not "
99 ok5:
100   print "ok5\n"
102   rule = globc.'compile'("*{1,two,three}")
104   $P1 = rule("1")
105   if $P1 goto ok6
106   print "not "
107 ok6:
108   print "ok6\n"
110   $P1 = rule("ptwo")
111   if $P1 goto ok7
112   print "not "
113 ok7:
114   print "ok7\n"
116   $P1 = rule("al")
117   unless $P1 goto ok8
118   print "not "
119 ok8:
120   print "ok8\n"
122   $P1 = rule("three")
123   if $P1 goto ok9
124   print "not "
125 ok9:
126   print "ok9\n"
128   $P1 = rule("twop")
129   unless $P1 goto ok10
130   print "not "
131 ok10:
132   print "ok10\n"
134   $P1 = rule("1atwo")
135   if $P1 goto ok11
136   print "not "
137 ok11:
138   print "ok11\n"
140 .end
141 CODE
151 ok10
152 ok11
155 # Local Variables:
156 #   mode: cperl
157 #   cperl-indent-level: 4
158 #   fill-column: 100
159 # End:
160 # vim: expandtab shiftwidth=4: