# -*- Mode: Perl -*- # $Basename: basic.t $ # $Revision: 1.11 $ # Author : Ulrich Pfeifer # Created On : Sat Dec 20 17:04:10 1997 # Last Modified By: Ulrich Pfeifer # Last Modified On: Tue Apr 26 16:00:30 2005 # Language : CPerl # Update Count : 118 # Status : Unknown, Use with caution! # # (C) Copyright 1997, Ulrich Pfeifer, all rights reserved. # # { my $test; sub test (& ) { my $arg = shift; my $result = eval {&$arg}; $test++; print "$test: $@\n" if $@; print 'not ' if $@ or not $result; print 'ok ', $test, "\n"; } } BEGIN { my $num_tests = 0; open(SELF, "< $0") or die "Could not open '$0': $!\n"; while (defined ($_ = )) { $num_tests++ if /^test/; } $| = 1; print "1..$num_tests\n"; } use Math::ematica qw(:PACKET :TYPE); my $ml; test {$ml = new Math::ematica '-linklaunch', '-linkname', 'math -mathlink'}; test {$ml->NextPacket == INPUTNAMEPKT}; test {$ml->PutFunction('Sin', 1)}; test {$ml->PutDouble(0)}; test {$ml->EndPacket}; test {$ml->Flush}; test {$ml->NewPacket}; test {$ml->NextPacket == RETURNPKT}; test {my $r = $ml->GetNext; $r == MLTKREAL or $r == MLTKINT}; test {$ml->GetDouble == 0}; test {$ml->PutFunction('Table', 2)}; test {$ml->PutFunction('Sin', 1)}; test {$ml->PutSymbol('x')}; test {$ml->PutFunction('List',4)}; test {$ml->PutSymbol('x')}; test {$ml->PutDouble(0)}; test {$ml->PutDouble(1)}; test {$ml->PutDouble(0.5)}; test {$ml->EndPacket}; test {$ml->Flush}; test {$ml->NewPacket}; test {$ml->NextPacket == RETURNPKT}; test {$ml->GetNext == MLTKFUNC}; test { my ($name, $nargs) = $ml->GetFunction; $$name eq 'List' and $nargs == 3}; test {my $r = $ml->GetNext; $r == MLTKREAL or $r == MLTKINT}; test {$ml->GetNext == MLTKREAL}; test {$ml->GetNext == MLTKREAL}; test {$ml->PutFunction('Table', 2)}; test {$ml->PutFunction('Sin', 1)}; test {$ml->PutSymbol('x')}; test {$ml->PutFunction('List',4)}; test {$ml->PutSymbol('x')}; test {$ml->PutDouble(0)}; test {$ml->PutDouble(1)}; test {$ml->PutDouble(0.5)}; test {$ml->EndPacket}; test {$ml->Flush}; test {$ml->NewPacket}; test {$ml->NextPacket == RETURNPKT}; test {$ml->GetNext == MLTKFUNC}; test { my @t = $ml->GetRealList; @t == 3 }; test { $ml->ErrorMessage =~ /everything \s+ ok/ix }; # ExportString[Plot[Tan[x], {x, -3, 3}],"eps"] test {$ml->PutFunction('ExportString', 2)}; test {$ml->PutFunction('Plot', 2)}; test {$ml->PutFunction('Tan', 1)}; test {$ml->PutSymbol('x')}; test {$ml->PutFunction('List',3)}; test {$ml->PutSymbol('x')}; test {$ml->PutDouble(-3)}; test {$ml->PutDouble(3)}; test {$ml->PutString("eps")}; test {$ml->EndPacket}; test {$ml->Flush}; test {$ml->NewPacket}; test {$ml->NextPacket == DISPLAYPKT}; test {$ml->GetNext == MLTKSTR}; test {length($ml->GetByteString) == 0}; test {$ml->NextPacket == DISPLAYPKT}; test {$ml->GetNext == MLTKSTR}; test {$ml->GetByteString =~ /^%!/};