$GAPversion = "4.5"; # required GAP version for ANUPQ
print "Testing installation of ANUPQ Package (version $ANUPQversion)\n\n", "The first two tests check that the pq C program compiled ok.\n";
$pq = "$pwd/bin/@GAPARCH@/pq"; ### standalone tests ##############################################java.lang.NullPointerException # Test 1
print "Test 1: Testing the pq binary ...";
check("test1.pga", ""); # Test 2
print "Test 2: Testing the pq binary's stack size ...";
check("test2.pga", "");
print "The pq C program compiled ok! We test it's the right one below.\n\n", "The next tests check that you have the right version of GAP\n", "for version $ANUPQversion of the ANUPQ package and that GAP is finding\n", "the right versions of the ANUPQ and AutPGrp packages.\n\n"; ### GAP - ANUPQ package tests ####################################java.lang.NullPointerException # Test GAP
print "Checking GAP ...\n";
$pq_does_not_know_GAP = 0;
$GAP_EXEC = "@GAP_EXEC@"; if ( ($gap = $ENV{ANUPQ_GAP_EXEC}) ne "" ) {
print " Found ANUPQ_GAP_EXEC environment variable set to: $gap\n";
} elsif ($GAP_EXEC ne "") {
chomp($gap = $GAP_EXEC);
print " pq binary made with GAP set to: $gap\n";
} else {
$pq_does_not_know_GAP = 1;
chomp($gap = `which gap4` || `which gap`);
print " Found gap: $gap\n";
}
open( GAPIN, ">$tmpdir/gapinput");
print GAPIN "CompareVersionNumbers(GAPInfo.Version, \"$GAPversion\");\n", "GAPInfo.Version;\n", "SetInfoLevel(InfoWarning, 0); # switch off warning messages\n", "TestPackageAvailability(\"anupq\", \"$ANUPQversion\");\n", "if LoadPackage(\"anupq\", \"$ANUPQversion\") = true then\n", " Print(GAPInfo.PackagesInfo.anupq[1].Version, \"\\n\");\n", " Print(ANUPQData.version, \"\\n\");\n", "fi;\n", "TestPackageAvailability(\"autpgrp\", \"\");\n", "TestPackageAvailability(\"autpgrp\", \"$AutPGrpversion\");\n", "if LoadPackage(\"autpgrp\", \"$AutPGrpversion\") = true then\n", " Print(GAPInfo.PackagesInfo.autpgrp[1].Version);\n", "elif LoadPackage(\"autpgrp\") = true then\n", " Print(GAPInfo.PackagesInfo.autpgrp[1].Version, \"\\n\");\n", "fi;\n";
close GAPIN;
print " Starting GAP to determine version and package availability ...\n";
system("$gap -A -q -r < $tmpdir/gapinput > $tmpdir/gapout"); #print"$tmpdir/gapinput:\n"; #system("more $tmpdir/gapinput"); #print"$tmpdir/gapoutput:\n"; #system("more $tmpdir/gapoutput");
open(GAPOUT, "<$tmpdir/gapout");
$line = <GAPOUT>; while ( $line =~ /^\#W/ ) {
$line = <GAPOUT>;
}
$version = <GAPOUT>; if ( $line !~ /(true|false)/ ) { # the GAP 3case
$version = $line;
}
$version =~ s/"//g;
chomp $version; if ( $line =~ /true/ ) {
print " GAP version ($version) ... OK.\n";
} elsif ( $line =~ /false/ ) {
die " GAP version ($version) ... too old! At least GAP $GAPversion required!\n";
} else {
die " GAP version ($version) ... please install GAP 4,", " at least version $GAPversion required!\n\n", " If you already have a new enough version of GAP 4 installed\n", " then you probably need to compile pq with an", " explicit GAP path, e.g.\n\n", " make GAP=/usr/local/bin/gap4\n";
} if ( ($line = <GAPOUT>) !~ /(fail|#I Error)/ ) { while ( ($line = <GAPOUT>) =~ /^#I/ ) { }
chomp ($ANUPQfoundversion = $line); if ($ANUPQfoundversion == $ANUPQversion) {
print " GAP found ANUPQ package (version $ANUPQfoundversion) ... good.\n";
} else { # $ANUPQfoundversion > $ANUPQversion
print " GAP found ANUPQ package in a more recent version ", "($ANUPQfoundversion) ...\n", " Please check your installation!\n";
}
} else {
die " GAP did not find version $ANUPQversion of ANUPQ package ... \n". " Please check installation instructions for ANUPQ package.\n";
} if ( ($line = <GAPOUT>) !~ /(fail|#I Error)/ ) {
chomp ($pqbinaryfoundversion = $line); if ($pqbinaryversion eq $pqbinaryfoundversion) {
print " GAP found pq binary (version $pqbinaryfoundversion) ... good.\n";
} else {
die " GAP found pq binary (version $pqbinaryfoundversion) ... not current!\n", " ANUPQ $ANUPQversion uses version $pqbinaryversion of ", "the pq program.\n", " It seems an earlier installation has been found?!\n";
}
} else {
die " GAP does not have the appropriate pq program installed ... \n", " ANUPQ $ANUPQversion uses version $pqbinaryversion of \n", " the pq program.\n";
} if ( ($line = <GAPOUT>) !~ /(fail|#I Error)/ ) { if ( ($line = <GAPOUT>) !~ /(fail|#I Error)/ ) {
chomp ($AutPGrpfoundversion = <GAPOUT>);
print " GAP found AutPGrp package (version $AutPGrpfoundversion) ... good.\n";
} else {
chomp ($AutPGrpfoundversion = <GAPOUT>);
die " GAP found AutPGrp package (version $AutPGrpfoundversion) ... too old!\n", " The ANUPQ package requires at least version $AutPGrpversion of ", "the AutPGrp package.\n";
}
} else {
die " GAP does not have the AutPGrp package installed ... \n", " The ANUPQ package requires the AutPGrp package \n", " (at least version $AutPGrpversion) for the computation of \n", " automorphism groups.\n";
}
close GAPOUT;
print " GAP is OK.\n\n"; # Test 3
print "Test 3: Checking the link between the pq binary and GAP ..."; if ( $pq_does_not_know_GAP ) {
print " failed\n";
die " The environment variable: ANUPQ_GAP_EXEC is not set;\n". " and the pq binary was made with: make ... GAP=\"\" ??\n". " Please check the ANUPQ package installation instructions\n". " and either set the environment variable: ANUPQ_GAP_EXEC, or\n". " re-make the pq binary setting GAP to a valid path.\n";
}
check("test3.pga", ""); # Test 4
print "Test 4: Testing the standard presentation part of the pq binary ...";
check("test4.sp", "-i -k "); # Test 5
print "Test 5: Doing p-group generation (final GAP/ANUPQ) test ...";
open( GAPIN, ">$tmpdir/gapinput");
print GAPIN "SetInfoLevel(InfoWarning, 0); LoadPackage( \"anupq\" );;\n", "SetInfoLevel(InfoWarning, 1);\n", "SetInfoLevel(InfoANUPQ, 1);\n", "Test( \"tst/anupga.tst\" );\n";
close GAPIN;
system("$gap -b < $tmpdir/gapinput > $tmpdir/gapout");
open(GAPOUT, "<$tmpdir/gapout");
$seen_gap_prompt = 0; while (<GAPOUT>) {
$seen_gap_prompt = 1if ( /^gap> /);
next if ( !$seen_gap_prompt ); if ( /^((gap> )*(\#I --|[+] |Line|$)|true$)/ ) {
next;
} elsif( /Pcgs\(\[ f1, f2, f3, f4 \]\) -> \[ / ) {
next;
} else {
print " error.\n";
die " Please email the file: $tmpdir/gapout\n", " to Greg.Gamble\@uwa.edu.au\n";
}
}
print " OK.\n", "Tests complete.\n";
system("rm -rf $tmpdir; mkdir $tmpdir");
print "Removed dir: $tmpdir\n", "Enjoy using your functional ANUPQ package!\n";
sub check {
my ($file, $opts) = @_;
(my $outfile = $file) =~ s/[.](pga|sp)/.out/; # run pq over test file and clean out system-dependent stuff
system("( cd $tmpdir; ". " $pq $opts< $tstdir/$file ". # ignore first two lines containing hostname and date information " | tail -n +3 ". " | grep -v seconds | grep -v '#I --' ". # sometimes emitted by gap-dev if a C source file CRC is out-of-date " | grep -v '#W ' ". # sometimes some shell escape sequence is printed " | sed -e 's/.\\[\\?.\\[\\?1034h//' ". # sometimes Info-ed by other packages " | grep -v 'GAPDoc not available' ". " | grep -v '#I default' | grep -v '#I a method' ". " | grep -v '#I underly' | grep -v '#I probably' ". " | grep -v ' g1, g2' | grep -v ' g18, g19, g20' ". " > $outfile )");
# now the only differences with the master copy should be due to pq's banner
my @diff = `diff $tstdir/out/$outfile $tmpdir/$outfile`; if ($diff[0] =~ /^0a1,2/) {
@diff = splice(@diff, 3); #remove first three difference lines
}
if (@diff == 0) {
print " OK.\n";
} else { #print" differences:\n @diff"; if ( $file =~ /3/ ) { if ($ENV{ANUPQ_GAP_EXEC} ne "") {
die " Please check the ANUPQ package installation instructions.\n"
." The setting of the environment variable: ANUPQ_GAP_EXEC\n"
." is not a valid path for GAP.\n";
} else {
die " Please check the ANUPQ package installation instructions.\n"
." Value of <path> when the pq was made with: make ... GAP=<path>\n"
." is not a valid path for GAP.\n";
}
} else { if ( $file =~ /4/ && @diff == 10 &&
!(grep { !/^\d+d\d+$/ && !/^<.*automorphism group/ } @diff) ) { #differences due to not compiling with gmp
print " OK.\n";
} else {
print " error.\n";
die " Please email the file: $tmpdir/$outfile\n", " to Greg.Gamble\@uwa.edu.au\n";
}
}
}
}
Messung V0.5 in Prozent
¤ Dauer der Verarbeitung: 0.9 Sekunden
(vorverarbeitet am 2026-06-18)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.