#! perl # Copyright (C) 2001-2005, The Perl Foundation. # $Id: /local/t/compilers/pge/pge_util.t 13079 2006-07-01T02:48:47.459799Z mdiep $ 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_util.t - Parrot Grammar Engine tests of utility rules =head1 SYNOPSIS % prove -Ilib t/library/pge_util.t =cut my $str = "How will this\nstring choose\nto explode?\n\nTest"; p6rule_like($str, 'expl ', qr/^kaboom at line 3, near "ode\?\\n\\n/, "die"); pir_output_is(<<'CODE', <<'OUT', "split /\\:+/, 'Foo::Bar::baz'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:+') $P0 = split(regex, "Foo::Bar::baz") $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo Bar baz OUT pir_output_is(<<'CODE', <<'OUT', "split /\\:+/, 'Foo::'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:+') $P0 = split(regex, "Foo::") $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo OUT pir_output_is(<<'CODE', <<'OUT', "split /\\:+/, '::Foo'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:+') $P0 = split(regex, "::Foo") $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo OUT pir_output_is(<<'CODE', <<'OUT', "split /\\:+/, 'Foo'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:+') $P0 = split(regex, "Foo") $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo OUT pir_output_is(<<'CODE', <<'OUT', "split /\\:/, 'Foo::Bar'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:') $P0 = split(regex, "Foo::Bar") $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo Bar OUT pir_output_is(<<'CODE', <<'OUT', "split /\\:/, 'Foo::Bar::Baz', 2"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('\:+') $P0 = split(regex, "Foo::Bar::Baz", 2) $S0 = join "\n", $P0 print $S0 print "\n" .end CODE Foo Bar::Baz OUT pir_output_is(<<'CODE', <<'OUT', "split /(a)(b)/, 'abracadabra'"); .sub main :main load_bytecode 'PGE.pbc' load_bytecode 'PGE/Util.pir' .local pmc split, p6rule, regex split = find_global 'PGE::Util', 'split' p6rule = compreg 'PGE::P6Regex' regex = p6rule('(a)(b)') $P0 = split(regex, "abracadabra") $S0 = join "-", $P0 print $S0 print "\n" .end CODE -a-b-racad-a-b-ra OUT BEGIN { plan tests => 8; }