# New Ticket Created by "Brad Gilbert"
# Please include the string: [perl #53362]
# in the subject line of all future correspondence about this issue.
# http://rt.perl.org/rt3/Ticket/Display.html?id=53362 >
I added a test for the sysinfo op. The main reason I decided to work
on it is so that we can figure out what system were running on,
especially if it's not the one we were compiled on.
parrot/CREDITS: Added my information
parrot/MANIFEST: Added t/op/sysinfo.t
parrot/t/op/sysinfo.t: Added
Index: CREDITS
===
--- CREDITS (revision 27163)
+++ CREDITS (working copy)
@@ -116,6 +116,10 @@
D: Numerous document typos.
E: [EMAIL PROTECTED]
+N: Brad Gilbert
+D: Add test for sysinfo op.
+E: [EMAIL PROTECTED]
+
N: Bram Geron
D: IMCC documentation update
E: [EMAIL PROTECTED]
Index: MANIFEST
===
--- MANIFEST (revision 27163)
+++ MANIFEST (working copy)
@@ -3233,6 +3233,7 @@
t/op/string_cclass.t[]
t/op/string_cs.t[]
t/op/stringu.t []
+t/op/sysinfo.t []
t/op/time.t []
t/op/trans.t[]
t/op/types.t[]
Index: t/op/sysinfo.t
===
--- t/op/sysinfo.t (revision 0)
+++ t/op/sysinfo.t (revision 0)
@@ -0,0 +1,141 @@
+#!perl
+# Copyright (C) 2001-2008, The Perl Foundation.
+# $Id$
+
+# initial work by Brad Gilbert b2gills gmail com
+
+use strict;
+use warnings;
+use lib qw( . lib ../lib ../../lib );
+use Test::More;
+use Parrot::Test tests => 8;
+use Parrot::Config;
+
+use Data::Dump 'dump';
+
+use Config;
+
+=head1 NAME
+
+t/op/sys_ops.t - System Ops
+
+=head1 SYNOPSIS
+
+% prove t/op/sys_ops.t
+
+=head1 DESCRIPTION
+
+Tests basic string and branching operations.
+
+=item 1 The size of a platform integer
+=item 2 The size of a platform float
+=item 3 The size of a platform pointer. (Largest possible data pointer)
+=item 4 The OS name
+=item 5 The OS version string
+=item 6 The OS version number string
+=item 7 The CPU architecture
+=item 8 The CPU model
+
+=cut
+
+
+
+pasm_output_is( <<'CODE', $PConfig{intsize}, "sysinfo integer size" );
+ sysinfo_i_ic I1, 1
+ print I1
+ end
+CODE
+
+# XXX is 'doublesize' the right thing to use?
+pasm_output_is( <<'CODE', $PConfig{doublesize}, "sysinfo float size" );
+ sysinfo_i_ic I1, 2
+ print I1
+ end
+CODE
+
+pasm_output_is( <<'CODE', $PConfig{ptrsize}, "sysinfo pointer size" );
+ sysinfo_i_ic I1, 3
+ print I1
+ end
+CODE
+
+pasm_output_is( <<'CODE', $PConfig{osname}, "sysinfo osname" );
+ sysinfo_s_ic S1, 4
+print S1
+end
+CODE
+
+# 5
+if( $PConfig{osname} eq 'MSWin32' ){
+ eval{ require Win32; };
+ SKIP: {
+ skip "requires package Win32 for these tests", 2;
+
+ # specifically don't use $Config{osvers}
+ # because it probably was the system perl was compiled on
+ # and we can do much better than that
+
+ my $osname = Win32::GetOSName();
+ $osname = 'WinXP' if $osname ~~ /^WinXP/;
+ TODO: {
+ local $TODO = "Not Currently Implemented";
+pasm_output_is( <<'CODE', $osname, "sysinfo OS version string" );
+ sysinfo_s_ic S1, 5
+ print S1
+ end
+CODE
+
+ my($osvername,$major,$minor,$id) = Win32::GetOSVersion();
+
+pasm_output_is( <<'CODE', "$major.$minor", "sysinfo OS version number string" );
+ sysinfo_s_ic S1, 6
+ print S1
+ end
+CODE
+ }
+ }
+
+}else{
+
+# XXX I know this is wrong on Win32 but is it correct on any others?
+# XXX also should it be %Config or %PConfig
+TODO: {
+ local $TODO = "Not Currently Implemented";
+
+pasm_output_is( <<'CODE', $Config{osvers}, "sysinfo OS version string" );
+ sysinfo_s_ic S1, 5
+ print S1
+ end
+CODE
+
+pasm_output_is( <<'CODE', $Config{osvers}, "sysinfo OS version number string" );
+ sysinfo_s_ic S1, 6
+ print S1
+ end
+CODE
+ }
+
+}
+
+# Common
+
+TODO: {
+ local $TODO = "Not Currently Implemented";
+
+pasm_output_is( <<'CODE', $PConfig{cpuarch}, "sysinfo CPU Arch Family" );
+ sysinfo_s_ic S1, 7
+ print S1
+ end
+CODE
+}
+
+SKIP: {
+ skip "Requires a lot of work to find out the correct answer", 1;
+
+pasm_output_is( <<'CODE', $PConfig{archname}, "sysinfo CPU Model" );
+ sysinfo_s_ic S1, 8
+ print S1
+ end
+CODE
+}
+