#! perl
# Copyright (C) 2001-2005, The Perl Foundation.
# $Id: /local/t/compilers/pge/pge_globs.t 12838 2006-05-30T14:19:10.150135Z coke $
use strict;
use warnings;
use lib qw( t . lib ../lib ../../lib );
use Test::More;
use Parrot::Test;
use Parrot::Test::PGE;
=head1 NAME
t/library/pge_globs.t - Parrot Grammar Engine tests of globs
=head1 SYNOPSIS
% prove -Ilib t/library/pge_globs.t
=cut
# 1-6
pgeglob_is ('bznza', 'b?n*a', "glob wildcards");
pgeglob_is ('bana', 'b?n*a', "glob wildcards");
pgeglob_isnt('bnana', 'b?n*a', "glob wildcards");
pgeglob_is ('bnan', '?n?*', "glob wildcards");
pgeglob_is ('ana', '?n?*', "glob wildcards");
pgeglob_isnt('an', '?n?*', "glob wildcards");
# 7
pgeglob_is ('orange','[go]range','glob enumerated characters');
pgeglob_is ('grange','[go]range','glob enumerated characters');
pgeglob_isnt('ggrange','[go]range','glob enumerated characters');
pgeglob_isnt('borange','[go]range','glob enumerated characters');
pgeglob_isnt('arange','[go]range','glob enumerated characters');
pgeglob_is ('a','[^0-9]','glob enumerated characters');
pgeglob_isnt('4','[^0-9]','glob enumerated characters');
pgeglob_isnt('0','[^0-9]','glob enumerated characters');
pgeglob_isnt('9','[^0-9]','glob enumerated characters');
pgeglob_isnt('4a','[^0-9]','glob enumerated characters');
pgeglob_isnt('aa','[^0-9]','glob enumerated characters');
pgeglob_is ('', '*', 'glob empty string');
pgeglob_isnt('', '?', 'glob empty string');
pgeglob_isnt('', '[0]', 'glob empty string');
pgeglob_isnt('', '[^0]', 'glob empty string');
# 22
pir_output_is(<<'CODE', <<'OUT', "Glob, alternate");
.sub _main
load_bytecode "library/PGE.pbc"
load_bytecode "library/PGE/Glob.pir"
.local pmc rule
$P0 = compreg "PGE::Glob"
(rule, $P1, $P2) = $P0("{app,bet,cod}a")
$P1 = rule("appa")
if $P1 goto ok1
print "not "
ok1:
print "ok1\n"
$P1 = rule("coda")
if $P1 goto ok2
print "not "
ok2:
print "ok2\n"
$P1 = rule("beta")
if $P1 goto ok3
print "not "
ok3:
print "ok3\n"
$P1 = rule("bet")
unless $P1 goto ok4
print "not "
ok4:
print "ok4\n"
$P1 = rule("alfa")
unless $P1 goto ok5
print "not "
ok5:
print "ok5\n"
(rule, $P1, $P2) = $P0("*{1,two,three}")
$P1 = rule("1")
if $P1 goto ok6
print "not "
ok6:
print "ok6\n"
$P1 = rule("ptwo")
if $P1 goto ok7
print "not "
ok7:
print "ok7\n"
$P1 = rule("al")
unless $P1 goto ok8
print "not "
ok8:
print "ok8\n"
$P1 = rule("three")
if $P1 goto ok9
print "not "
ok9:
print "ok9\n"
$P1 = rule("twop")
unless $P1 goto ok10
print "not "
ok10:
print "ok10\n"
$P1 = rule("1atwo")
if $P1 goto ok11
print "not "
ok11:
print "ok11\n"
.end
CODE
ok1
ok2
ok3
ok4
ok5
ok6
ok7
ok8
ok9
ok10
ok11
OUT
# remember to change the number of tests :-)
BEGIN { plan tests => 22; }