summaryrefslogtreecommitdiff
path: root/ext/B
diff options
context:
space:
mode:
authorMichael G. Schwern <schwern@pobox.com>2001-12-14 14:36:12 -0500
committerJarkko Hietaniemi <jhi@iki.fi>2001-12-15 17:11:32 +0000
commit9dfdc05faed89bb4c359b3472c6541a069ad50a6 (patch)
tree543e55f71956c8de669ecd56d34474ee5d7b0c59 /ext/B
parent4162ffa63cd9bb737fd37f3450c9013ca1729fc2 (diff)
downloadperl-9dfdc05faed89bb4c359b3472c6541a069ad50a6.tar.gz
B::Asmdata test
Message-ID: <20011215003611.GA28596@blackrider> p4raw-id: //depot/perl@13696
Diffstat (limited to 'ext/B')
-rw-r--r--ext/B/t/asmdata.t44
1 files changed, 44 insertions, 0 deletions
diff --git a/ext/B/t/asmdata.t b/ext/B/t/asmdata.t
new file mode 100644
index 0000000000..5730ccab8c
--- /dev/null
+++ b/ext/B/t/asmdata.t
@@ -0,0 +1,44 @@
+#!./perl -Tw
+
+BEGIN {
+ chdir 't';
+ @INC = '../lib';
+}
+
+use Test::More tests => 13;
+
+use_ok('B::Asmdata', qw(%insn_data @insn_name @optype @specialsv_name));
+
+# check we got something.
+isnt( keys %insn_data, 0, '%insn_data exported and populated' );
+isnt( @insn_name, 0, ' @insn_name' );
+isnt( @optype, 0, ' @optype' );
+isnt( @specialsv_name, 0, ' @specialsv_name' );
+
+# pick an op that's not likely to go away in the future
+my @data = values %insn_data;
+is( (grep { ref eq 'ARRAY' } @data), @data, '%insn_data contains arrays' );
+
+# pick one at random to test with.
+my $opname = (keys %insn_data)[rand @data];
+my $data = $insn_data{$opname};
+like( $data->[0], qr/^\d+$/, ' op number' );
+is( ref $data->[1], 'CODE', ' PUT code ref' );
+ok( !ref $data->[2], ' GET method' );
+
+is( $insn_name[$data->[0]], $opname, '@insn_name maps correctly' );
+
+
+# I'm going to assume that op types will all be named /OP$/.
+# If this changes in the future, change this test.
+is( grep(/OP$/, @optype), @optype, '@optype is all /OP$/' );
+
+
+# comment in bytecode.pl says "Nullsv *must come first so that the
+# condition ($$sv == 0) can continue to be used to test (sv == Nullsv)."
+is( $specialsv_name[0], 'Nullsv', 'Nullsv come first in @special_sv_name' );
+
+# other than that, we can't really say much more about @specialsv_name
+# than it has to contain strings (on the off chance &PL_sv_undef gets
+# flubbed)
+is( grep(!ref, @specialsv_name), @specialsv_name, ' contains all strings' );