#!/usr/bin/perl -w # # $Id: Coords.t,v 1.7 2005-06-23 15:32:39 mertz Exp $ # Author: Christophe Mertz # # testing all the import BEGIN { if (!eval q{ use Test::More tests => 26; 1; }) { print "# tests only work properly with installed Test::More module\n"; print "1..1\n"; print "ok 1\n"; exit; } if (!eval q{ use Tk::Zinc; 1; }) { print "unable to load Tk::Zinc"; print "1..1\n"; print "ok 1\n"; exit; } if (!eval q{ MainWindow->new(); 1; }) { print "# tests only work properly when it is possible to create a mainwindow in your env\n"; print "1..1\n"; print "ok 1\n"; exit; } } $mw = MainWindow->new(); $zinc = $mw->Zinc(-width => 100, -height => 100); like ($zinc, qr/^Tk::Zinc=HASH/ , "zinc has been created"); my $rect = $zinc->add('rectangle', 1, [10,20,40,50]); is_deeply([ $zinc->coords($rect) ], [ [10,20], [40, 50] ], "coords are list of arrays"); is_deeply([ $zinc->coords($rect,0) ], [ [10,20], [40, 50] ], "coords of first contour is a list of arrays"); is_deeply([ $zinc->coords($rect,0,0) ], [ 10,20 ], "coords of one point of a contour is a list of two numbers"); is_deeply([ $zinc->coords($rect,0,1) ], [ 40,50 ], "coords of one point of a contour is a list of two numbers"); my $curve = $zinc->add('curve', 1, [ [10,20] ,[40,50,'c'], [90,10,'c'], [30,60] ]); is_deeply([ $zinc->coords($curve) ], [ [10,20] ,[40,50,'c'], [90,10,'c'], [30,60] ], "coords of a curve is a list of arrays"); is_deeply([ $zinc->coords($curve,0) ], [ [10,20] ,[40,50,'c'], [90,10,'c'], [30,60] ], "coords of contour 0 of a curve is a list of arrays"); is_deeply([ $zinc->coords($curve,0,0) ], [ 10,20 ], "coords of first point of contour 0 of a curve is list of two numbers"); is_deeply([ $zinc->coords($curve,0,1) ], [ 40,50,'c' ], "coords of a control point of a curve contour is list of three elements"); ## testing empty curves, and adding/removing contours my $emptyCurve = $zinc->add('curve', 1, [ ]); is_deeply([ $zinc->coords($emptyCurve) ], [ ], "coords of an empty curve is an empty list"); # adding a contour $zinc->contour($emptyCurve, 'add', 0, [ [1,1], [100,100], [200,100] ]); is_deeply([ $zinc->coords($emptyCurve) ], [ [1,1], [100,100], [200,100] ], "coords of a no more empty curve"); $zinc->contour($emptyCurve, 'add', 0, [ [80,90], [-100,-100], [-200,100] ]); is_deeply([ $zinc->coords($emptyCurve, 1) ], [ [80,90], [-100,-100], [-200,100] ], "coords of a second contour in a curve"); # removing first contour (which can be the second one!! $zinc->contour($emptyCurve, 'remove', 0); is_deeply([ $zinc->coords($emptyCurve, 0) ], [ [1,1], [100,100], [200,100] ], # contours order is re-organised by tkzinc!! # [ [80,90], [-100,-100], [-200,100] ], "coords of remaining contour in the curve"); # removing the last contour $zinc->contour($emptyCurve, 'remove', 0); is_deeply([ $zinc->coords($emptyCurve, 0) ], [ ], "coords of contour in the curve which is now empty"); my $text = $zinc->add('text', 1, -position => [10,20], -text => 'test'); is_deeply([ $zinc->coords($text) ], [ 10,20 ], "coords of a text"); is_deeply([ $zinc->coords($text,0) ], [ 10,20 ], "coords of text contour"); is_deeply([ $zinc->coords($text,0,0) ], [ 10,20 ], "coords of text contour first point"); my $group = $zinc->add('group', 1); is_deeply([ $zinc->coords($group) ], [ 0,0 ], "coords of a empty group, not moved"); $zinc->translate($group, 23, 45); #my @coords = @{$zinc->coords($group)}[0]; #print "coords = @coords", $coords[0][0], $coords[0][1], "\n"; is_deeply([ $zinc->coords($group) ], [ 23,45 ], "coords of a empty group, translated"); my $track = $zinc->add('track', 1, 0, -position => [56, 78]); is_deeply([ $zinc->coords($track) ], [ 56,78 ], "coords of a track"); my $wpt = $zinc->add('waypoint', 1, 0, -position => [561, 781]); is_deeply([ $zinc->coords($wpt) ], [ 561,781 ], "coords of a waypoint"); my $tab = $zinc->add('tabular', 1, 1, -position => [61, 81]); is_deeply([ $zinc->coords($tab) ], [ 61,81 ], "coords of a empty tabular"); $zinc->itemconfigure($tab, -labelformat => 'x20x18+0+0'); is_deeply([ $zinc->coords($tab) ], [ 61,81 ], "coords of a tabular with a labelformat"); my $arc = $zinc->add('arc', 1, [13,31, 42,24]); is_deeply([ $zinc->coords($arc) ], [ [13,31], [42,24] ], "coords of an arc"); my $tri = $zinc->add('triangles', 1, [ [10,20], [30,40], [50,60], [70,80], [90,99] ]); is_deeply([ $zinc->coords($tri) ], [ [10,20], [30,40], [50,60], [70,80], [90,99] ], "coords of an triangle"); my $photoMickey = $zinc->Photo('mickey.gif', -file => Tk->findINC("demos/images/mickey.gif")); my $icon = $zinc->add('icon', 1, -position => [20,100], -image => $photoMickey); is_deeply([ $zinc->coords($icon) ], [ 20,100 ], "coords of an icon"); diag("############## coords test");