* src/pmc/scalar.pmc:
[parrot.git] / t / op / hacks.t
blob9ed87181e4922fca8a505dd46d1b3dd57d9cbcd9
1 #!perl
2 # Copyright (C) 2001-2005, The Perl Foundation.
3 # $Id$
5 use strict;
6 use warnings;
7 use lib qw( . lib ../lib ../../lib );
8 use Test::More;
9 use Parrot::Test tests => 2;
10 use Parrot::Config;
11 use Config;
13 =head1 NAME
15 t/op/hacks.t - IO Ops
17 =head1 SYNOPSIS
19         % prove t/op/hacks.t
21 =head1 DESCRIPTION
23 Tests basic file IO operations.
25 =cut
27 sub has_signal {
28     my $sig = shift;
29     foreach my $name ( split( ' ', $Config{sig_name} ) ) {
30         return 1 if ( "SIG$name" eq $sig );
31     }
32     return 0;
35 SKIP: {
36     skip( "no universal SIGFPE handling", 2 );
38     pasm_output_is( <<'CODE', <<OUT, "catch a SIGFPE" );
39     push_eh _handler
40     div I10, 0
41     print "not reached\n"
42     end
43 _handler:
44     print "catched it\n"
45     set I0, P5["_type"]
46     print "error "
47     print I0
48     print "\n"
49     set I0, P5["_severity"]
50     print "severity "
51     print I0
52     print "\n"
53     end
54 # SIGFPE = 8
55 CODE
56 catched it
57 error -8
58 severity 0
59 OUT
61     pasm_output_is( <<'CODE', <<OUT, "catch a SIGFPE 2" );
62     push_eh _handler
63     div I10, 0
64     print "not reached\n"
65     end
66 _handler:
67 .include "signal.pasm"
68     print "catched it\n"
69     set I0, P5["_type"]
70     neg I0, I0
71     ne I0, .SIGFPE, nok
72     print "ok\n"
73 nok:
74     end
75 CODE
76 catched it
78 OUT
81 # Local Variables:
82 #   mode: cperl
83 #   cperl-indent-level: 4
84 #   fill-column: 100
85 # End:
86 # vim: expandtab shiftwidth=4: