* src/pmc/scalar.pmc:
[parrot.git] / t / pmc / multisub.t
blobff237b5cbbf4b5c8d9486633cc1b7c6eb4630ceb
1 #!./parrot
2 # Copyright (C) 2001-2007, The Perl Foundation.
3 # $Id$
5 =head1 NAME
7 t/pmc/multisub.t - Multi Sub PMCs
9 =head1 SYNOPSIS
11     % prove t/pmc/multisub.t
13 =head1 DESCRIPTION
15 Tests the creation and invocation of Perl6 multi subs.
17 =cut
20 .sub main :main
21     load_bytecode 'library/Test/More.pir'
23     .local pmc exports, curr_namespace, test_namespace
24     curr_namespace = get_namespace
25     test_namespace = get_namespace [ "Test::More" ]
26     exports = split " ", "plan ok is"
27     test_namespace.export_to(curr_namespace, exports)
29     plan( 6 )
31     $P0 = new .MultiSub
32     $I0 = defined $P0
33     ok($I0, "create PMC")
35     $I0 = elements $P0
36     is($I0, 0, "multisubs start empty")
38     $S0 = foo()
39     is($S0, "testing no arg", "no argument variant")
40     $S0 = foo("hello")
41     is($S0, "testing hello", "single string variant")
42     $S0 = foo(5)
43     is($S0, "testing 5", "single int variant")
44     $S0 = foo(42, "goodbye")
45     is($S0, "testing 42, goodbye", "int and string variant")
47 .end
49 .sub foo :multi()
50     .return ('testing no arg')
51 .end
53 .sub foo :multi(string)
54     .param string bar
55     $S0 = "testing " . bar
56     .return ($S0)
57 .end
59 .sub foo :multi(int)
60     .param int bar
61     $S1 = bar
62     $S0 = "testing " . $S1
63     .return ($S0)
64 .end
66 .sub foo :multi(int, string)
67     .param int bar
68     .param string baz
69     $S1 = bar
70     $S0 = "testing " . $S1
71     $S0 .= ", "
72     $S0 .= baz
73     .return ($S0)
74 .end
76 # Local Variables:
77 #   mode: pir
78 #   fill-column: 70
79 # End:
80 # vim: expandtab shiftwidth=4: