summaryrefslogtreecommitdiff
path: root/src/perl/PMDA/test.pl
diff options
context:
space:
mode:
Diffstat (limited to 'src/perl/PMDA/test.pl')
-rw-r--r--src/perl/PMDA/test.pl93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/perl/PMDA/test.pl b/src/perl/PMDA/test.pl
new file mode 100644
index 0000000..a40443d
--- /dev/null
+++ b/src/perl/PMDA/test.pl
@@ -0,0 +1,93 @@
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl test.pl'
+#
+# Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by the
+# Free Software Foundation; either version 2 of the License, or (at your
+# option) any later version.
+#
+# This program is distributed in the hope that it will be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+# for more details.
+#
+
+######################### We start with some black magic to print on failure.
+
+BEGIN { $| = 1; print "1..4\n"; }
+END {print "not ok 1\n" unless $loaded;}
+use PCP::PMDA;
+$loaded = 1;
+print "ok 1\n";
+
+######################### End of black magic.
+
+use vars qw( $cvalue $perlvalue $failed $cases );
+
+`make -f Makefile cvalue`;
+
+# verify constants are defined and match their C counterparts
+# - assuming here that the header file matches our PMDA.pm
+# (d==define)
+#
+$failed = 0;
+$cases = 0;
+open(TEST, './cvalue d |') || die "cannot run test program 'cvalue'";
+while (<TEST>) {
+ /^(\w+)=(.*)$/;
+ $cvalue = $2;
+ $perlvalue = &$1;
+ unless ($perlvalue == $cvalue) {
+ print "$1: $perlvalue != $cvalue\n";
+ $failed++;
+ }
+ $cases++;
+}
+close TEST;
+if ($failed != 0) { print "not ok 2 (failed $failed of $cases cases)\n"; }
+else { print "ok 2\n"; }
+
+#########################
+
+# test data initialisation via the pmda_pmid macro (i==id)
+#
+$failed = 0;
+$cases = 0;
+open(TEST, './cvalue i |') || die "cannot run test program 'cvalue'";
+while (<TEST>) {
+ /^PMDA_PMID: (\d+),(\d+) = (.*)$/;
+ $cvalue = $3;
+ $perlvalue = pmda_pmid($1, $2);
+ unless ($perlvalue == $cvalue) {
+ print "$1,$2: $perlvalue != $cvalue\n";
+ $failed++;
+ }
+ $cases++;
+}
+close TEST;
+if ($failed != 0) { print "not ok 3 (failed $failed of $cases cases)\n"; }
+else { print "ok 3\n"; }
+
+# test data initialisation via the pmda_units macro (u==units)
+#
+$failed=0;
+$cases = 0;
+open(TEST, './cvalue u |') || die "cannot run test program 'cvalue'";
+while (<TEST>) {
+ /^pmUnits: {(\d+),}5(\d) = (.*)$/;
+ $cvalue = $7;
+ $perlvalue = pmda_units($1, $2, $3, $4, $5, $6);
+ unless ($perlvalue == $cvalue) {
+ print "$1,$2,$3,$4,$5,$6: $perlvalue != $cvalue\n";
+ $failed++;
+ }
+ $cases++;
+}
+close TEST;
+if ($failed != 0) { print "not ok 4 (failed $failed of $cases cases)\n"; }
+else { print "ok 4\n"; }
+
+
+#########################