4
4
var output = $ ( '#qunit-fixture' ) ;
5
5
if ( ! output [ 0 ] )
6
6
output = $ ( 'body' ) ;
7
- var el = $ ( '<span>' ) . appendTo ( output ) . circleProgress ( cfg ) ;
8
- return el . circleProgress ( 'widget' ) ;
7
+ return $ ( '<span>' ) . appendTo ( output ) . circleProgress ( cfg ) ;
9
8
}
10
9
11
10
QUnit . module ( "Layout tests, no animation" ) ;
12
11
13
12
QUnit . test ( "Test circle with value = 0 (without any options)" , function ( assert ) {
14
- var canvas = createCircle ( { value : 0 } ) ,
15
- $canvas = $ ( canvas ) ,
16
- defaultSize = 100 ,
17
- defaultThickness = parseInt ( defaultSize / 14 ) ; // 7
13
+ var canvas = createCircle ( {
14
+ value : 0
15
+ } ) . circleProgress ( 'widget' ) ;
16
+ var $canvas = $ ( canvas ) ;
17
+ var defaultSize = 100 ;
18
+ var defaultThickness = parseInt ( defaultSize / 14 ) ; // 7
18
19
19
20
assert . equal ( $ . circleProgress . defaults . size , defaultSize , "Default circle size: 100 pixels" ) ;
20
21
assert . equal ( $ . circleProgress . defaults . thickness , 'auto' , "Default circle thickness: 'auto' (i.e. 1/14 of size)" ) ;
28
29
29
30
QUnit . test ( "Test circle with value = 0.5 and default fill" , function ( assert ) {
30
31
var canvas = createCircle ( {
31
- value : 0.5 ,
32
- animation : false
33
- } ) ,
34
- size = $ . circleProgress . defaults . size ;
32
+ value : 0.5 ,
33
+ animation : false
34
+ } ) . circleProgress ( 'widget' ) ;
35
+ var size = $ . circleProgress . defaults . size ;
35
36
36
37
assert . pixelCloseHex ( canvas , 1 , size / 2 - 1 , '#3aeabb' ) ;
37
38
assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
44
45
} ) ;
45
46
46
47
QUnit . test ( "Test circle with value = 0.5 and solid fill" , function ( assert ) {
47
- var color = '#ff0000' ,
48
- canvas = createCircle ( {
49
- value : 0.5 ,
50
- fill : { color : color } ,
51
- animation : false
52
- } ) ,
53
- defaultSize = $ . circleProgress . defaults . size ;
48
+ var color = '#ff0000' ;
49
+ var canvas = createCircle ( {
50
+ value : 0.5 ,
51
+ fill : {
52
+ color : color
53
+ } ,
54
+ animation : false
55
+ } ) . circleProgress ( 'widget' ) ;
56
+ var defaultSize = $ . circleProgress . defaults . size ;
54
57
55
58
assert . pixelHex ( canvas , 1 , defaultSize / 2 - 1 , color ) ;
56
59
assert . pixelHex ( canvas , defaultSize - 1 , defaultSize / 2 - 1 , color ) ;
59
62
QUnit . module ( "Layout tests with animation" ) ;
60
63
61
64
QUnit . test ( "Test circle with value = 0.5 and solid fill" , function ( assert ) {
62
- var color = '#00aa55' ,
63
- canvas = createCircle ( {
64
- value : 0.5 ,
65
- fill : { color : color }
66
- } ) ,
67
- size = $ . circleProgress . defaults . size ;
68
-
69
- assert . expect ( 8 ) ;
65
+ var color = '#00aa55' ;
66
+ var circle = createCircle ( {
67
+ value : 0 , // value will be updated dynamically
68
+ animation : false , // initially we draw an empty circle w/o animation
69
+ fill : {
70
+ color : color
71
+ }
72
+ } ) ;
73
+ var canvas = circle . circleProgress ( 'widget' ) ;
74
+ var size = $ . circleProgress . defaults . size ;
70
75
var done = assert . async ( ) ;
71
76
72
- assert . pixelCloseRGBA ( canvas , 1 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
73
- setTimeout ( function ( ) {
74
- assert . pixelHex ( canvas , 1 , size / 2 - 1 , color ) ;
75
- } , 200 ) ;
77
+ assert . expect ( 10 ) ;
76
78
79
+ // Before the animation
80
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
81
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
77
82
assert . pixelCloseRGBA ( canvas , size / 2 + 1 , 1 , 'rgba(0, 0, 0, 0.1)' ) ;
78
- setTimeout ( function ( ) {
79
- assert . pixelHex ( canvas , size / 2 + 1 , 1 , color ) ;
80
- } , 700 ) ;
81
-
82
83
assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
83
- setTimeout ( function ( ) {
84
+ assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
85
+
86
+ // After the animation
87
+ circle . on ( 'circle-animation-end' , function ( ) {
88
+ assert . pixelHex ( canvas , 1 , size / 2 - 1 , color ) ;
89
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
90
+ assert . pixelHex ( canvas , size / 2 + 1 , 1 , color ) ;
84
91
assert . pixelHex ( canvas , size - 2 , size / 2 - 1 , color ) ;
92
+ assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
85
93
done ( ) ;
86
- } , 1300 ) ;
94
+ } ) ;
87
95
88
- assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
89
- assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
96
+ // Start the animation
97
+ circle . circleProgress ( {
98
+ value : 0.5 ,
99
+ animation : {
100
+ duration : 500
101
+ }
102
+ } ) ;
90
103
} ) ;
91
104
92
105
QUnit . test ( "Test circle with value = 0.5, size = 80 and custom gradient" , function ( assert ) {
93
- var canvas = createCircle ( {
94
- value : 0.5 ,
95
- size : 80 ,
96
- fill : {
97
- gradient : [ '#ff327a' , '#fff430' , '#ff8989' ]
98
- }
99
- } ) ,
100
- size = 80 ;
101
-
102
- assert . expect ( 8 ) ;
106
+ var circle = createCircle ( {
107
+ value : 0 , // value will be updated dynamically
108
+ animation : false , // initially we draw an empty circle w/o animation
109
+ size : 80 ,
110
+ fill : {
111
+ gradient : [ '#ff327a' , '#fff430' , '#ff8989' ]
112
+ }
113
+ } ) ;
114
+ var canvas = circle . circleProgress ( 'widget' ) ;
115
+ var size = 80 ;
103
116
var done = assert . async ( ) ;
104
117
105
- assert . pixelCloseRGBA ( canvas , 1 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
106
- setTimeout ( function ( ) {
107
- assert . pixelCloseHex ( canvas , 1 , size / 2 - 1 , '#ff3777' ) ;
108
- } , 200 ) ;
118
+ assert . expect ( 10 ) ;
109
119
120
+ // Before the animation
121
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
122
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
110
123
assert . pixelCloseRGBA ( canvas , size / 2 , 1 , 'rgba(0, 0, 0, 0.1)' ) ;
111
- setTimeout ( function ( ) {
112
- assert . pixelCloseHex ( canvas , size / 2 , 1 , '#fff330' ) ;
113
- } , 700 ) ;
114
-
115
124
assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 - 1 , 'rgba(0, 0, 0, 0.1)' ) ;
116
- setTimeout ( function ( ) {
125
+ assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
126
+
127
+ // After the animation
128
+ circle . on ( 'circle-animation-end' , function ( ) {
129
+ assert . pixelCloseHex ( canvas , 1 , size / 2 - 1 , '#ff3777' ) ;
130
+ assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
131
+ assert . pixelCloseHex ( canvas , size / 2 , 1 , '#fff330' ) ;
117
132
assert . pixelCloseHex ( canvas , size - 2 , size / 2 - 1 , '#ff8c86' ) ;
133
+ assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
118
134
done ( ) ;
119
- } , 1300 ) ;
135
+ } ) ;
120
136
121
- assert . pixelCloseRGBA ( canvas , 1 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
122
- assert . pixelCloseRGBA ( canvas , size - 2 , size / 2 + 1 , 'rgba(0, 0, 0, 0.1)' ) ;
137
+ // Start the animation
138
+ circle . circleProgress ( {
139
+ value : 0.5 ,
140
+ animation : {
141
+ duration : 500
142
+ }
143
+ } ) ;
123
144
} ) ;
124
145
125
146
QUnit . test ( "Test circle with value = 0.75, custom start angle and custom animation start value" , function ( assert ) {
126
- var canvas = createCircle ( {
127
- value : 0.75 ,
147
+ var circle = createCircle ( {
148
+ value : 0 , // value will be updated dynamically
149
+ animation : false , // initially we draw an empty circle w/o animation
128
150
startAngle : - Math . PI / 4 ,
129
151
animationStartValue : 0.25
130
152
} ) ;
131
-
132
- assert . expect ( 8 ) ;
153
+ var canvas = circle . circleProgress ( 'widget' ) ;
133
154
var done = assert . async ( ) ;
134
155
156
+ assert . expect ( 12 ) ;
157
+
158
+ // Before the animation
159
+ assert . pixelCloseRGBA ( canvas , 15 , 20 , 'rgba(0, 0, 0, 0.1)' ) ;
160
+ assert . pixelCloseRGBA ( canvas , 20 , 15 , 'rgba(0, 0, 0, 0.1)' ) ;
135
161
assert . pixelCloseRGBA ( canvas , 80 , 15 , 'rgba(0, 0, 0, 0.1)' ) ;
136
- assert . pixelCloseHex ( canvas , 85 , 20 , '#e0d55f' ) ;
137
- assert . pixelCloseHex ( canvas , 85 , 80 , '#e0d55f' ) ;
138
162
assert . pixelCloseRGBA ( canvas , 80 , 85 , 'rgba(0, 0, 0, 0.1)' ) ;
139
- setTimeout ( function ( ) {
140
- assert . pixelCloseHex ( canvas , 80 , 85 , '#d6d664' ) ;
141
- } , 400 ) ;
163
+ assert . pixelCloseRGBA ( canvas , 85 , 20 , 'rgba(0, 0, 0, 0.1)' ) ;
164
+ assert . pixelCloseRGBA ( canvas , 85 , 80 , 'rgba(0, 0, 0, 0.1)' ) ;
142
165
143
- assert . pixelCloseRGBA ( canvas , 15 , 20 , 'rgba(0, 0, 0, 0.1)' ) ;
144
- setTimeout ( function ( ) {
166
+ // After the animation
167
+ circle . on ( 'circle-animation-end' , function ( ) {
145
168
assert . pixelCloseHex ( canvas , 15 , 20 , '#57e6aa' ) ;
146
169
assert . pixelCloseRGBA ( canvas , 20 , 15 , 'rgba(0, 0, 0, 0.1)' ) ;
170
+ assert . pixelCloseRGBA ( canvas , 80 , 15 , 'rgba(0, 0, 0, 0.1)' ) ;
171
+ assert . pixelCloseHex ( canvas , 80 , 85 , '#d6d664' ) ;
172
+ assert . pixelCloseHex ( canvas , 85 , 20 , '#e0d55f' ) ;
173
+ assert . pixelCloseHex ( canvas , 85 , 80 , '#e0d55f' ) ;
147
174
done ( ) ;
148
- } , 1300 ) ;
175
+ } ) ;
176
+
177
+ // Start the animation
178
+ circle . circleProgress ( {
179
+ value : 0.75 ,
180
+ animation : {
181
+ duration : 500
182
+ }
183
+ } ) ;
149
184
} ) ;
150
185
151
186
QUnit . test ( "Test circle with value = 0.5, image background and reverse" , function ( assert ) {
152
- var urlPrefix = $ ( 'script[src*="tests.js"]' ) . attr ( 'src' ) . replace ( / t e s t s \. j s .* $ / , '' ) ,
153
- imageUrl = urlPrefix + 'images/circle.png' ,
154
- image = new Image ( ) ;
155
-
156
- assert . expect ( 9 ) ;
187
+ var urlPrefix = $ ( 'script[src*="tests.js"]' ) . attr ( 'src' ) . replace ( / t e s t s \. j s .* $ / , '' ) ;
188
+ var imageUrl = urlPrefix + 'images/circle.png' ;
189
+ var image = new Image ( ) ;
157
190
var done = assert . async ( ) ;
191
+
192
+ assert . expect ( 12 ) ;
193
+
194
+ // Start loading the image
158
195
image . src = imageUrl ;
159
196
160
197
$ ( image ) . on ( 'load' , function ( ) {
161
- var canvas = createCircle ( {
162
- value : 0.5 ,
198
+ var circle = createCircle ( {
199
+ value : 0 , // value will be updated dynamically
200
+ animation : false , // initially we draw an empty circle w/o animation
163
201
thickness : 20 ,
164
- fill : { image : image } ,
202
+ fill : {
203
+ image : image
204
+ } ,
165
205
reverse : true
166
206
} ) ;
207
+ var canvas = circle . circleProgress ( 'widget' ) ;
167
208
209
+ // Before the animation
168
210
assert . pixelRGBA ( canvas , 21 , 49 , 'rgba(0, 0, 0, 0)' ) ;
169
211
assert . pixelRGBA ( canvas , 78 , 49 , 'rgba(0, 0, 0, 0)' ) ;
170
212
assert . pixelRGBA ( canvas , 49 , 77 , 'rgba(0, 0, 0, 0)' ) ;
171
-
172
213
assert . pixelCloseRGBA ( canvas , 17 , 51 , 'rgba(0, 0, 0, 0.1)' ) ;
173
- setTimeout ( function ( ) {
174
- assert . pixelCloseHex ( canvas , 17 , 51 , '#00f7ff' ) ;
175
- } , 400 ) ;
176
-
177
214
assert . pixelCloseRGBA ( canvas , 49 , 81 , 'rgba(0, 0, 0, 0.1)' ) ;
178
- setTimeout ( function ( ) {
179
- assert . pixelCloseHex ( canvas , 49 , 81 , '#7700ff' ) ;
180
- } , 700 ) ;
181
-
182
215
assert . pixelCloseRGBA ( canvas , 81 , 51 , 'rgba(0, 0, 0, 0.1)' ) ;
183
- setTimeout ( function ( ) {
216
+
217
+ // After the animation
218
+ circle . on ( 'circle-animation-end' , function ( ) {
219
+ assert . pixelRGBA ( canvas , 21 , 49 , 'rgba(0, 0, 0, 0)' ) ;
220
+ assert . pixelRGBA ( canvas , 78 , 49 , 'rgba(0, 0, 0, 0)' ) ;
221
+ assert . pixelRGBA ( canvas , 49 , 77 , 'rgba(0, 0, 0, 0)' ) ;
222
+ assert . pixelCloseHex ( canvas , 17 , 51 , '#00f7ff' ) ;
223
+ assert . pixelCloseHex ( canvas , 49 , 81 , '#7700ff' ) ;
184
224
assert . pixelCloseHex ( canvas , 81 , 51 , '#ff0008' ) ;
185
225
done ( ) ;
186
- } , 1400 ) ;
226
+ } ) ;
227
+
228
+ // Start the animation
229
+ circle . circleProgress ( {
230
+ value : 0.5 ,
231
+ animation : {
232
+ duration : 500
233
+ }
234
+ } ) ;
187
235
} ) ;
188
236
} ) ;
189
237
196
244
var canvas = createCircle ( {
197
245
value : 0.75 ,
198
246
size : 50
199
- } ) ;
247
+ } ) . circleProgress ( 'widget' ) ;
200
248
201
249
assert . equal ( 50 , $ ( canvas ) . width ( ) ) ;
202
250
assert . equal ( 100 , canvas . width ) ;
211
259
var canvas = createCircle ( {
212
260
value : 0.75 ,
213
261
size : 50
214
- } ) ;
262
+ } ) . circleProgress ( 'widget' ) ;
215
263
216
264
assert . equal ( 50 , $ ( canvas ) . height ( ) ) ;
217
265
assert . equal ( 50 , canvas . width ) ;
218
266
} ) ;
219
- } ) ( ) ;
267
+ } ) ( ) ;
0 commit comments