#!/usr/bin/perl use DBI; use warnings; use strict; my $dbname = shift or die; my ($dbh, $stm); $dbh = DBI->connect("dbi:Pg:dbname=$dbname", "", "") or die $!; $dbh->do(<do(<'); check_box_point('>>'); check_box_point('@>'); check_box_point('&<|'); check_box_point('<<|'); check_box_point('|>>'); check_box_point('|&>'); check_point_box('<<'); check_point_box('&<'); check_point_box('&&'); check_point_box('&>'); check_point_box('>>'); check_point_box('<@'); check_point_box('&<|'); check_point_box('<<|'); check_point_box('|>>'); check_point_box('|&>'); #-------------------------------------------------------------------------- # Check 'box OP point' against 'box OP box(point,point)' #-------------------------------------------------------------------------- sub check_box_point { my $op = shift; print "box $op point\n"; $stm = $dbh->prepare(<execute() or die $!; open FH, ">a.out"; while( my $ref = $stm->fetchrow_hashref() ) { my $x = $ref->{x}; my $y = $ref->{y}; print FH "$x,$y\n"; } close FH; $stm = $dbh->prepare(<execute() or die $!; open FH, ">b.out"; while( my $ref = $stm->fetchrow_hashref() ) { my $x = $ref->{x}; my $y = $ref->{y}; print FH "$x,$y\n"; } close FH; system( "tkdiff a.out b.out >/dev/null 2>&1" ); } #-------------------------------------------------------------------------- # Check 'point OP box' against 'box(point,point) OP box' #-------------------------------------------------------------------------- sub check_point_box { my $op = shift; print "point $op box\n"; $stm = $dbh->prepare(<execute() or die $!; open FH, ">a.out"; while( my $ref = $stm->fetchrow_hashref() ) { my $x = $ref->{x}; my $y = $ref->{y}; print FH "$x,$y\n"; } close FH; $stm = $dbh->prepare(<execute() or die $!; open FH, ">b.out"; while( my $ref = $stm->fetchrow_hashref() ) { my $x = $ref->{x}; my $y = $ref->{y}; print FH "$x,$y\n"; } close FH; system( "tkdiff a.out b.out >/dev/null 2>&1" ); }