#!perl # Copyright (C) 2006, The Perl Foundation. # $Id: /local/t/compilers/pge/01-codestring.t 12838 2006-05-30T14:19:10.150135Z coke $ use strict; use warnings; use lib qw( . lib ../lib ../../lib ); use Test::More; use Parrot::Test; =head1 NAME t/compilers/pge/pge_codestring.t - test the CodeString class =head1 SYNOPSIS % prove t/compilers/pge/pge_codestring.t =head1 DESCRIPTION Tests the CodeString class directly. =cut pir_output_is(<<'CODE', <<'OUTPUT', 'create a CodeString object'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code = 'ok 1' say code .end CODE ok 1 OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'calls to unique'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' $P1 = code.'unique'('ok ') say $P1 $P1 = code.'unique'() say $P1 $P1 = code.'unique'('$P') say $P1 .end CODE ok 10 11 $P12 OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'basic emit'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code.emit(' label:') code.emit(' say "Hello, World"') code.emit(' $I0 = 1') code.emit(' $N0 = 0.1') print code .end CODE label: say "Hello, World" $I0 = 1 $N0 = 0.1 OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'emit with pos args'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code.emit(' label_%0:', 1234) code.emit(' say "%0, %1"', 'Hello', 'World') code.emit(' %0 = %2', '$I0', 24, 48) print code .end CODE label_1234: say "Hello, World" $I0 = 48 OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'emit with %, args'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code.emit(' label_%0:', 1234) code.emit(' say "%,"', 'Hello') code.emit(' say "%,"', 'Hello', 'World', 'of', 'Parrot') print code .end CODE label_1234: say "Hello" say "Hello, World, of, Parrot" OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'emit with named args'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code.emit(' label_%a:', 'a'=>1234) code.emit(' say "%b, %c"', 'b'=>'Hello', 'c'=>'World') code.emit(' say "%d"', 'b'=>'Hello', 'c'=>'World') print code .end CODE label_1234: say "Hello, World" say "%d" OUTPUT pir_output_is(<<'CODE', <<'OUTPUT', 'emit with pos + named args'); .sub main :main load_bytecode 'compilers/pge/PGE/CodeString.pir' .local pmc code code = new 'PGE::CodeString' code.emit(' label_%a:', 'a'=>1234) code.emit(' %0 "%b, %c"', 'say', 'print', 'b'=>'H', 'c'=>'W') code.emit(' say "%,, %c"', 'alpha', 'beta', 'b'=>'H', 'c'=>'W') print code .end CODE label_1234: say "H, W" say "alpha, beta, W" OUTPUT # remember to change the number of tests :-) BEGIN { plan tests => 7; }