-
Notifications
You must be signed in to change notification settings - Fork 28
/
sdlgamerect.t
154 lines (136 loc) · 5.3 KB
/
sdlgamerect.t
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
use Test::More tests => 87;
use strict;
use SDL;
use_ok('SDLx::Rect');
can_ok(
'SDLx::Rect', qw/
new
x
y
width
height
w
h
top
left
centerx
centery
/
);
my $rect = SDLx::Rect->new( 0, 0, 0, 0 );
isa_ok( $rect, 'SDLx::Rect', 'new went ok' );
foreach my $attr (
qw(x y top left width height
w h bottom right centerx centery)
)
{
is( $rect->$attr, 0, "$attr is 0" );
}
# set and get at the same time (and testing method aliases)
is( $rect->left(15), 15, 'left is now 15' );
is( $rect->x, 15, 'x and left point to the same place' );
is( $rect->x(12), 12, 'x is now 12' );
is( $rect->left, 12, 'left is an alias to x' );
is( $rect->top(132), 132, 'top is now 132' );
is( $rect->y, 132, 'y and top point to the same place' );
is( $rect->y(123), 123, 'y is now 123' );
is( $rect->top, 123, 'top is an alias to y' );
is( $rect->w(54), 54, 'w is now 54' );
is( $rect->width, 54, 'w and width point to the same place' );
is( $rect->width(45), 45, 'w is now 45' );
is( $rect->w, 45, 'w is an alias to width' );
is( $rect->h(76), 76, 'h is now 76' );
is( $rect->height, 76, 'h and height point to the same place' );
is( $rect->height(67), 67, 'h is now 67' );
is( $rect->h, 67, 'h is an alias to height' );
# get alone
is( $rect->x(), 12, 'x is 12' );
is( $rect->left(), 12, 'left is 12' );
is( $rect->y(), 123, 'y is 123' );
is( $rect->top(), 123, 'top is 123' );
is( $rect->width(), 45, 'width is 45' );
is( $rect->w(), 45, 'w is 45' );
is( $rect->height(), 67, 'height is 67' );
is( $rect->h(), 67, 'h is 67' );
# other helpers
is( $rect->bottom, 190, 'bottom should be relative to heigth and top' );
is( $rect->bottom(189), 189, 'changing bottom value' );
is( $rect->bottom, 189, 'checking bottom value again' );
is( $rect->top, 122, 'top value should have been updated after bottom change' );
is( $rect->height, 67, 'height should have stayed the same' );
is( $rect->centery, 155, 'checking vertical center' );
is( $rect->centery(154), 154, 'changing centery value' );
is( $rect->centery, 154, 'checking centery value again' );
is( $rect->top, 121,
'top value should have been updated after centery change'
);
is( $rect->height, 67, 'height should have stayed the same' );
is( $rect->right, 57, 'right should be relative to width and left' );
is( $rect->right(56), 56, 'changing right value' );
is( $rect->right, 56, 'checking right value again' );
is( $rect->left, 11,
'left value should have been updated after bottom change'
);
is( $rect->width, 45, 'width should have stayed the same' );
is( $rect->centerx, 33, 'checking horizontal center' );
is( $rect->centerx(32), 32, 'changing centerx value' );
is( $rect->centerx, 32, 'checking centerx value again' );
is( $rect->left, 10,
'left value should have been updated after bottom change'
);
is( $rect->width, 45, 'width should have stayed the same' );
# checking two-valued accessors
can_ok(
'SDLx::Rect', qw/
size
center
topleft
midleft
bottomleft
topright
midright
bottomright
midtop
midbottom
/
);
is_deeply( [ $rect->center ], [ 32, 154 ], 'checking center pair' );
$rect->center( undef, undef );
is( $rect->centerx, 32, 'center() does nothing when passed undef' );
is( $rect->centery, 154, 'center() does nothing when passed undef' );
$rect->center( undef, 200 );
is( $rect->centerx, 32, 'center() does nothing for X when passed undef' );
is( $rect->centery, 200, 'center() works on one-parameter (y)' );
$rect->center( 7, undef );
is( $rect->centerx, 7, 'center() works on one-parameter (x)' );
is( $rect->centery, 200, 'center() does nothing for Y when passed undef' );
$rect->center( 32, 154 );
is( $rect->centerx, 32, 'center() can be used as an acessor for x' );
is( $rect->centery, 154, 'center() can be used as an acessor for y' );
is_deeply( [ $rect->topleft ], [ 121, 10 ], 'checking topleft pair' );
$rect->topleft( undef, undef );
is( $rect->top, 121, 'topleft() does nothing when passed undef' );
is( $rect->left, 10, 'topleft() does nothing when passed undef' );
$rect->topleft( undef, 200 );
is( $rect->top, 121, 'topleft() does nothing for Y when passed undef' );
is( $rect->left, 200, 'topleft() works on one-parameter (x)' );
$rect->topleft( 7, undef );
is( $rect->top, 7, 'topleft() works on one-parameter (y)' );
is( $rect->left, 200, 'topleft() does nothing for X when passed undef' );
$rect->topleft( 121, 10 );
is( $rect->top, 121, 'topleft() can be used as an acessor for y' );
is( $rect->left, 10, 'topleft() can be used as an acessor for x' );
is_deeply( [ $rect->midleft ], [ 154, 10 ], 'checking midleft pair' );
$rect->midleft( undef, undef );
is( $rect->centery, 154, 'midleft() does nothing when passed undef' );
is( $rect->left, 10, 'midleft() does nothing when passed undef' );
$rect->midleft( undef, 200 );
is( $rect->centery, 154, 'midleft() does nothing for Y when passed undef' );
is( $rect->left, 200, 'midleft() works on one-parameter (x)' );
$rect->midleft( 7, undef );
is( $rect->centery, 7, 'midleft() works on one-parameter (y)' );
is( $rect->left, 200, 'midleft() does nothing for X when passed undef' );
$rect->midleft( 154, 10 );
is( $rect->centery, 154, 'midleft() can be used as an acessor for y' );
is( $rect->left, 10, 'midleft() can be used as an acessor for x' );
sleep(2);