1 /*
2 * Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
113 assertEquals(DEFAULT_INTERPOLATOR, t1.interpolatorProperty().get());
114 assertNull(t1.onFinishedProperty().get());
115
116 // duration and node
117 final FadeTransition t2 = new FadeTransition(TWO_SECS, node);
118 assertEquals(TWO_SECS, t2.durationProperty().get());
119 assertTrue(Double.isNaN(t2.fromValueProperty().get()));
120 assertTrue(Double.isNaN(t2.toValueProperty().get()));
121 assertEquals(0.0, t2.byValueProperty().get(), EPSILON);
122 assertEquals(node, t2.nodeProperty().get());
123 assertEquals(DEFAULT_INTERPOLATOR, t2.interpolatorProperty().get());
124 assertNull(t2.onFinishedProperty().get());
125 }
126
127 @Test
128 public void testInterpolate() {
129 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
130 t0.setFromValue(0.5);
131 t0.setToValue(1.0);
132
133 assertTrue(AnimationShim.impl_startable(t0,true));
134 AnimationShim.impl_start(t0,true);
135 TransitionShim.interpolate(t0,0.0);
136 assertEquals(0.5, node.getOpacity(), EPSILON);
137 TransitionShim.interpolate(t0,0.4);
138 assertEquals(0.7, node.getOpacity(), EPSILON);
139 TransitionShim.interpolate(t0,1.0);
140 assertEquals(1.0, node.getOpacity(), EPSILON);
141 AnimationShim.impl_finished(t0);
142 }
143
144 @Test
145 public void testValueCombinations() {
146 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
147 final double originalValue = 0.6;
148 final double fromValue = 0.4;
149 final double toValue = 0.9;
150 final double byValue = -0.2;
151
152 // no value set
153 node.setOpacity(originalValue);
154 t0.setFromValue(Double.NaN);
155 t0.setToValue(Double.NaN);
156 t0.setByValue(0.0);
157 assertTrue(AnimationShim.impl_startable(t0,true));
158 AnimationShim.impl_start(t0,true);
159 TransitionShim.interpolate(t0,0.0);
160 assertEquals(originalValue, node.getOpacity(), EPSILON);
161 TransitionShim.interpolate(t0,1.0);
162 assertEquals(originalValue, node.getOpacity(), EPSILON);
163 AnimationShim.impl_finished(t0);
164
165 // only from-value set
166 node.setOpacity(originalValue);
167 t0.setFromValue(fromValue);
168 t0.setToValue(Double.NaN);
169 t0.setByValue(0.0);
170 assertTrue(AnimationShim.impl_startable(t0,true));
171 AnimationShim.impl_start(t0,true);
172 TransitionShim.interpolate(t0,0.0);
173 assertEquals(fromValue, node.getOpacity(), EPSILON);
174 TransitionShim.interpolate(t0,1.0);
175 assertEquals(fromValue, node.getOpacity(), EPSILON);
176 AnimationShim.impl_finished(t0);
177
178 // only to-value set
179 node.setOpacity(originalValue);
180 t0.setFromValue(Double.NaN);
181 t0.setToValue(toValue);
182 t0.setByValue(0.0);
183 assertTrue(AnimationShim.impl_startable(t0,true));
184 AnimationShim.impl_start(t0,true);
185 TransitionShim.interpolate(t0,0.0);
186 assertEquals(originalValue, node.getOpacity(), EPSILON);
187 TransitionShim.interpolate(t0,1.0);
188 assertEquals(toValue, node.getOpacity(), EPSILON);
189 AnimationShim.impl_finished(t0);
190
191 // only by-value set
192 node.setOpacity(originalValue);
193 t0.setFromValue(Double.NaN);
194 t0.setToValue(Double.NaN);
195 t0.setByValue(byValue);
196 assertTrue(AnimationShim.impl_startable(t0,true));
197 AnimationShim.impl_start(t0,true);
198 TransitionShim.interpolate(t0,0.0);
199 assertEquals(originalValue, node.getOpacity(), EPSILON);
200 TransitionShim.interpolate(t0,1.0);
201 assertEquals(originalValue + byValue, node.getOpacity(), EPSILON);
202 AnimationShim.impl_finished(t0);
203
204 // from- and to-values set
205 node.setOpacity(originalValue);
206 t0.setFromValue(fromValue);
207 t0.setToValue(toValue);
208 t0.setByValue(0.0);
209 assertTrue(AnimationShim.impl_startable(t0,true));
210 AnimationShim.impl_start(t0,true);
211 TransitionShim.interpolate(t0,0.0);
212 assertEquals(fromValue, node.getOpacity(), EPSILON);
213 TransitionShim.interpolate(t0,1.0);
214 assertEquals(toValue, node.getOpacity(), EPSILON);
215 AnimationShim.impl_finished(t0);
216
217 // from- and by-values set
218 node.setOpacity(originalValue);
219 t0.setFromValue(fromValue);
220 t0.setToValue(Double.NaN);
221 t0.setByValue(byValue);
222 assertTrue(AnimationShim.impl_startable(t0,true));
223 AnimationShim.impl_start(t0,true);
224 TransitionShim.interpolate(t0,0.0);
225 assertEquals(fromValue, node.getOpacity(), EPSILON);
226 TransitionShim.interpolate(t0,1.0);
227 assertEquals(fromValue + byValue, node.getOpacity(), EPSILON);
228 AnimationShim.impl_finished(t0);
229
230 // to- and by-values set
231 node.setOpacity(originalValue);
232 t0.setFromValue(Double.NaN);
233 t0.setToValue(toValue);
234 t0.setByValue(byValue);
235 assertTrue(AnimationShim.impl_startable(t0,true));
236 AnimationShim.impl_start(t0,true);
237 TransitionShim.interpolate(t0,0.0);
238 assertEquals(originalValue, node.getOpacity(), EPSILON);
239 TransitionShim.interpolate(t0,1.0);
240 assertEquals(toValue, node.getOpacity(), EPSILON);
241 AnimationShim.impl_finished(t0);
242
243 // all values set
244 node.setOpacity(originalValue);
245 t0.setFromValue(fromValue);
246 t0.setToValue(toValue);
247 t0.setByValue(byValue);
248 assertTrue(AnimationShim.impl_startable(t0,true));
249 AnimationShim.impl_start(t0,true);
250 TransitionShim.interpolate(t0,0.0);
251 assertEquals(fromValue, node.getOpacity(), EPSILON);
252 TransitionShim.interpolate(t0,1.0);
253 assertEquals(toValue, node.getOpacity(), EPSILON);
254 AnimationShim.impl_finished(t0);
255 }
256
257 @Test
258 public void testOutOfBoundValues() {
259 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
260 t0.setInterpolator(Interpolator.LINEAR);
261
262 // start < 0.0
263 t0.setFromValue(-0.4);
264 t0.setToValue(0.6);
265 assertTrue(AnimationShim.impl_startable(t0,true));
266 AnimationShim.impl_start(t0,true);
267 TransitionShim.interpolate(t0,0.0);
268 assertEquals(0.0, node.getOpacity(), EPSILON);
269 TransitionShim.interpolate(t0,0.5);
270 assertEquals(0.3, node.getOpacity(), EPSILON);
271 TransitionShim.interpolate(t0,1.0);
272 assertEquals(0.6, node.getOpacity(), EPSILON);
273 AnimationShim.impl_finished(t0);
274
275 // start > 1.0
276 t0.setFromValue(1.3);
277 t0.setToValue(0.3);
278 assertTrue(AnimationShim.impl_startable(t0,true));
279 AnimationShim.impl_start(t0,true);
280 TransitionShim.interpolate(t0,0.0);
281 assertEquals(1.0, node.getOpacity(), EPSILON);
282 TransitionShim.interpolate(t0,0.5);
283 assertEquals(0.65, node.getOpacity(), EPSILON);
284 TransitionShim.interpolate(t0,1.0);
285 assertEquals(0.3, node.getOpacity(), EPSILON);
286 AnimationShim.impl_finished(t0);
287
288 // end < 0.0
289 t0.setFromValue(0.2);
290 t0.setToValue(-1.2);
291 assertTrue(AnimationShim.impl_startable(t0,true));
292 AnimationShim.impl_start(t0,true);
293 TransitionShim.interpolate(t0,0.0);
294 assertEquals(0.2, node.getOpacity(), EPSILON);
295 TransitionShim.interpolate(t0,0.5);
296 assertEquals(0.1, node.getOpacity(), EPSILON);
297 TransitionShim.interpolate(t0,1.0);
298 assertEquals(0.0, node.getOpacity(), EPSILON);
299 AnimationShim.impl_finished(t0);
300
301 // end > 1.0
302 t0.setFromValue(0.9);
303 t0.setToValue(1.9);
304 assertTrue(AnimationShim.impl_startable(t0,true));
305 AnimationShim.impl_start(t0,true);
306 TransitionShim.interpolate(t0,0.0);
307 assertEquals(0.9, node.getOpacity(), EPSILON);
308 TransitionShim.interpolate(t0,0.5);
309 assertEquals(0.95, node.getOpacity(), EPSILON);
310 TransitionShim.interpolate(t0,1.0);
311 assertEquals(1.0, node.getOpacity(), EPSILON);
312 AnimationShim.impl_finished(t0);
313 }
314
315 @Test
316 public void testGetTargetNode() {
317 final FadeTransition ft = new FadeTransition(ONE_SEC, node);
318 ft.setInterpolator(Interpolator.LINEAR);
319 ft.setFromValue(0.5);
320 ft.setToValue(1.0);
321 final Rectangle node2 = new Rectangle();
322 final ParallelTransition pt = new ParallelTransition();
323 pt.getChildren().add(ft);
324 pt.setNode(node2);
325
326 // node set, parent set
327 assertTrue(AnimationShim.impl_startable(ft,true));
328 AnimationShim.impl_start(ft,true);
329 TransitionShim.interpolate(ft,0.5);
330 assertEquals(0.75, node.getOpacity(), EPSILON);
331 assertEquals(1.0, node2.getOpacity(), EPSILON);
332 AnimationShim.impl_finished(ft);
333
334 // node null, parent set
335 ft.setNode(null);
336 assertTrue(AnimationShim.impl_startable(ft,true));
337 AnimationShim.impl_start(ft,true);
338 TransitionShim.interpolate(ft,0.4);
339 assertEquals(0.75, node.getOpacity(), EPSILON);
340 assertEquals(0.7, node2.getOpacity(), EPSILON);
341 AnimationShim.impl_finished(ft);
342
343 // node null, parent null
344 pt.setNode(null);
345 assertFalse(AnimationShim.impl_startable(ft,true));
346 }
347
348 @Test
349 public void testCachedValues() {
350 final FadeTransition ft = new FadeTransition(ONE_SEC, node);
351 ft.setInterpolator(Interpolator.LINEAR);
352 ft.setFromValue(0.5);
353 ft.setToValue(1.0);
354
355 // start
356 assertTrue(AnimationShim.impl_startable(ft,true));
357 AnimationShim.impl_start(ft,true);
358 ft.setFromValue(0.0);
359 TransitionShim.interpolate(ft,0.5);
360 assertEquals(0.75, node.getOpacity(), EPSILON);
361 AnimationShim.impl_finished(ft);
362 ft.setFromValue(0.5);
363
364 // end
365 assertTrue(AnimationShim.impl_startable(ft,true));
366 AnimationShim.impl_start(ft,true);
367 ft.setToValue(0.0);
368 TransitionShim.interpolate(ft,0.2);
369 assertEquals(0.6, node.getOpacity(), EPSILON);
370 AnimationShim.impl_finished(ft);
371 ft.setToValue(1.0);
372
373 // node
374 assertTrue(AnimationShim.impl_startable(ft,true));
375 AnimationShim.impl_start(ft,true);
376 ft.setNode(null);
377 TransitionShim.interpolate(ft,0.7);
378 assertEquals(0.85, node.getOpacity(), EPSILON);
379 AnimationShim.impl_finished(ft);
380 ft.setNode(node);
381
382 // interpolator
383 assertTrue(AnimationShim.impl_startable(ft,true));
384 AnimationShim.impl_start(ft,true);
385 ft.setInterpolator(null);
386 TransitionShim.interpolate(ft,0.1);
387 assertEquals(0.55, node.getOpacity(), EPSILON);
388 AnimationShim.impl_finished(ft);
389 ft.setInterpolator(Interpolator.LINEAR);
390 }
391
392 @Test
393 public void testStartable() {
394 final FadeTransition t0 = new FadeTransition(Duration.ONE, node);
395 assertTrue(AnimationShim.impl_startable(t0,true));
396
397 // duration is 0
398 t0.setDuration(Duration.ZERO);
399 assertFalse(AnimationShim.impl_startable(t0,true));
400 t0.setDuration(Duration.ONE);
401 assertTrue(AnimationShim.impl_startable(t0,true));
402
403 // node is null
404 t0.setNode(null);
405 assertFalse(AnimationShim.impl_startable(t0,true));
406 t0.setNode(node);
407 assertTrue(AnimationShim.impl_startable(t0,true));
408
409 // interpolator is null
410 t0.setInterpolator(null);
411 assertFalse(AnimationShim.impl_startable(t0,true));
412 t0.setInterpolator(Interpolator.LINEAR);
413 assertTrue(AnimationShim.impl_startable(t0,true));
414 }
415
416 @Test
417 public void testEvaluateStartValue() {
418 final FadeTransition t0 = new FadeTransition(Duration.INDEFINITE, node);
419
420 // first run
421 node.setOpacity(0.6);
422 assertTrue(AnimationShim.impl_startable(t0,true));
423 AnimationShim.impl_start(t0,true);
424 node.setOpacity(0.8);
425 TransitionShim.interpolate(t0,0.0);
426 assertEquals(0.6, node.getOpacity(), EPSILON);
427 AnimationShim.impl_finished(t0);
428
429 // second run
430 node.setOpacity(0.2);
431 assertTrue(AnimationShim.impl_startable(t0,true));
432 AnimationShim.impl_start(t0,true);
433 node.setOpacity(0.8);
434 TransitionShim.interpolate(t0,0.0);
435 assertEquals(0.2, node.getOpacity(), EPSILON);
436 AnimationShim.impl_finished(t0);
437 }
438
439 }
|
1 /*
2 * Copyright (c) 2011, 2016, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
113 assertEquals(DEFAULT_INTERPOLATOR, t1.interpolatorProperty().get());
114 assertNull(t1.onFinishedProperty().get());
115
116 // duration and node
117 final FadeTransition t2 = new FadeTransition(TWO_SECS, node);
118 assertEquals(TWO_SECS, t2.durationProperty().get());
119 assertTrue(Double.isNaN(t2.fromValueProperty().get()));
120 assertTrue(Double.isNaN(t2.toValueProperty().get()));
121 assertEquals(0.0, t2.byValueProperty().get(), EPSILON);
122 assertEquals(node, t2.nodeProperty().get());
123 assertEquals(DEFAULT_INTERPOLATOR, t2.interpolatorProperty().get());
124 assertNull(t2.onFinishedProperty().get());
125 }
126
127 @Test
128 public void testInterpolate() {
129 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
130 t0.setFromValue(0.5);
131 t0.setToValue(1.0);
132
133 assertTrue(AnimationShim.startable(t0,true));
134 AnimationShim.doStart(t0,true);
135 TransitionShim.interpolate(t0,0.0);
136 assertEquals(0.5, node.getOpacity(), EPSILON);
137 TransitionShim.interpolate(t0,0.4);
138 assertEquals(0.7, node.getOpacity(), EPSILON);
139 TransitionShim.interpolate(t0,1.0);
140 assertEquals(1.0, node.getOpacity(), EPSILON);
141 AnimationShim.finished(t0);
142 }
143
144 @Test
145 public void testValueCombinations() {
146 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
147 final double originalValue = 0.6;
148 final double fromValue = 0.4;
149 final double toValue = 0.9;
150 final double byValue = -0.2;
151
152 // no value set
153 node.setOpacity(originalValue);
154 t0.setFromValue(Double.NaN);
155 t0.setToValue(Double.NaN);
156 t0.setByValue(0.0);
157 assertTrue(AnimationShim.startable(t0,true));
158 AnimationShim.doStart(t0,true);
159 TransitionShim.interpolate(t0,0.0);
160 assertEquals(originalValue, node.getOpacity(), EPSILON);
161 TransitionShim.interpolate(t0,1.0);
162 assertEquals(originalValue, node.getOpacity(), EPSILON);
163 AnimationShim.finished(t0);
164
165 // only from-value set
166 node.setOpacity(originalValue);
167 t0.setFromValue(fromValue);
168 t0.setToValue(Double.NaN);
169 t0.setByValue(0.0);
170 assertTrue(AnimationShim.startable(t0,true));
171 AnimationShim.doStart(t0,true);
172 TransitionShim.interpolate(t0,0.0);
173 assertEquals(fromValue, node.getOpacity(), EPSILON);
174 TransitionShim.interpolate(t0,1.0);
175 assertEquals(fromValue, node.getOpacity(), EPSILON);
176 AnimationShim.finished(t0);
177
178 // only to-value set
179 node.setOpacity(originalValue);
180 t0.setFromValue(Double.NaN);
181 t0.setToValue(toValue);
182 t0.setByValue(0.0);
183 assertTrue(AnimationShim.startable(t0,true));
184 AnimationShim.doStart(t0,true);
185 TransitionShim.interpolate(t0,0.0);
186 assertEquals(originalValue, node.getOpacity(), EPSILON);
187 TransitionShim.interpolate(t0,1.0);
188 assertEquals(toValue, node.getOpacity(), EPSILON);
189 AnimationShim.finished(t0);
190
191 // only by-value set
192 node.setOpacity(originalValue);
193 t0.setFromValue(Double.NaN);
194 t0.setToValue(Double.NaN);
195 t0.setByValue(byValue);
196 assertTrue(AnimationShim.startable(t0,true));
197 AnimationShim.doStart(t0,true);
198 TransitionShim.interpolate(t0,0.0);
199 assertEquals(originalValue, node.getOpacity(), EPSILON);
200 TransitionShim.interpolate(t0,1.0);
201 assertEquals(originalValue + byValue, node.getOpacity(), EPSILON);
202 AnimationShim.finished(t0);
203
204 // from- and to-values set
205 node.setOpacity(originalValue);
206 t0.setFromValue(fromValue);
207 t0.setToValue(toValue);
208 t0.setByValue(0.0);
209 assertTrue(AnimationShim.startable(t0,true));
210 AnimationShim.doStart(t0,true);
211 TransitionShim.interpolate(t0,0.0);
212 assertEquals(fromValue, node.getOpacity(), EPSILON);
213 TransitionShim.interpolate(t0,1.0);
214 assertEquals(toValue, node.getOpacity(), EPSILON);
215 AnimationShim.finished(t0);
216
217 // from- and by-values set
218 node.setOpacity(originalValue);
219 t0.setFromValue(fromValue);
220 t0.setToValue(Double.NaN);
221 t0.setByValue(byValue);
222 assertTrue(AnimationShim.startable(t0,true));
223 AnimationShim.doStart(t0,true);
224 TransitionShim.interpolate(t0,0.0);
225 assertEquals(fromValue, node.getOpacity(), EPSILON);
226 TransitionShim.interpolate(t0,1.0);
227 assertEquals(fromValue + byValue, node.getOpacity(), EPSILON);
228 AnimationShim.finished(t0);
229
230 // to- and by-values set
231 node.setOpacity(originalValue);
232 t0.setFromValue(Double.NaN);
233 t0.setToValue(toValue);
234 t0.setByValue(byValue);
235 assertTrue(AnimationShim.startable(t0,true));
236 AnimationShim.doStart(t0,true);
237 TransitionShim.interpolate(t0,0.0);
238 assertEquals(originalValue, node.getOpacity(), EPSILON);
239 TransitionShim.interpolate(t0,1.0);
240 assertEquals(toValue, node.getOpacity(), EPSILON);
241 AnimationShim.finished(t0);
242
243 // all values set
244 node.setOpacity(originalValue);
245 t0.setFromValue(fromValue);
246 t0.setToValue(toValue);
247 t0.setByValue(byValue);
248 assertTrue(AnimationShim.startable(t0,true));
249 AnimationShim.doStart(t0,true);
250 TransitionShim.interpolate(t0,0.0);
251 assertEquals(fromValue, node.getOpacity(), EPSILON);
252 TransitionShim.interpolate(t0,1.0);
253 assertEquals(toValue, node.getOpacity(), EPSILON);
254 AnimationShim.finished(t0);
255 }
256
257 @Test
258 public void testOutOfBoundValues() {
259 final FadeTransition t0 = new FadeTransition(ONE_SEC, node);
260 t0.setInterpolator(Interpolator.LINEAR);
261
262 // start < 0.0
263 t0.setFromValue(-0.4);
264 t0.setToValue(0.6);
265 assertTrue(AnimationShim.startable(t0,true));
266 AnimationShim.doStart(t0,true);
267 TransitionShim.interpolate(t0,0.0);
268 assertEquals(0.0, node.getOpacity(), EPSILON);
269 TransitionShim.interpolate(t0,0.5);
270 assertEquals(0.3, node.getOpacity(), EPSILON);
271 TransitionShim.interpolate(t0,1.0);
272 assertEquals(0.6, node.getOpacity(), EPSILON);
273 AnimationShim.finished(t0);
274
275 // start > 1.0
276 t0.setFromValue(1.3);
277 t0.setToValue(0.3);
278 assertTrue(AnimationShim.startable(t0,true));
279 AnimationShim.doStart(t0,true);
280 TransitionShim.interpolate(t0,0.0);
281 assertEquals(1.0, node.getOpacity(), EPSILON);
282 TransitionShim.interpolate(t0,0.5);
283 assertEquals(0.65, node.getOpacity(), EPSILON);
284 TransitionShim.interpolate(t0,1.0);
285 assertEquals(0.3, node.getOpacity(), EPSILON);
286 AnimationShim.finished(t0);
287
288 // end < 0.0
289 t0.setFromValue(0.2);
290 t0.setToValue(-1.2);
291 assertTrue(AnimationShim.startable(t0,true));
292 AnimationShim.doStart(t0,true);
293 TransitionShim.interpolate(t0,0.0);
294 assertEquals(0.2, node.getOpacity(), EPSILON);
295 TransitionShim.interpolate(t0,0.5);
296 assertEquals(0.1, node.getOpacity(), EPSILON);
297 TransitionShim.interpolate(t0,1.0);
298 assertEquals(0.0, node.getOpacity(), EPSILON);
299 AnimationShim.finished(t0);
300
301 // end > 1.0
302 t0.setFromValue(0.9);
303 t0.setToValue(1.9);
304 assertTrue(AnimationShim.startable(t0,true));
305 AnimationShim.doStart(t0,true);
306 TransitionShim.interpolate(t0,0.0);
307 assertEquals(0.9, node.getOpacity(), EPSILON);
308 TransitionShim.interpolate(t0,0.5);
309 assertEquals(0.95, node.getOpacity(), EPSILON);
310 TransitionShim.interpolate(t0,1.0);
311 assertEquals(1.0, node.getOpacity(), EPSILON);
312 AnimationShim.finished(t0);
313 }
314
315 @Test
316 public void testGetTargetNode() {
317 final FadeTransition ft = new FadeTransition(ONE_SEC, node);
318 ft.setInterpolator(Interpolator.LINEAR);
319 ft.setFromValue(0.5);
320 ft.setToValue(1.0);
321 final Rectangle node2 = new Rectangle();
322 final ParallelTransition pt = new ParallelTransition();
323 pt.getChildren().add(ft);
324 pt.setNode(node2);
325
326 // node set, parent set
327 assertTrue(AnimationShim.startable(ft,true));
328 AnimationShim.doStart(ft,true);
329 TransitionShim.interpolate(ft,0.5);
330 assertEquals(0.75, node.getOpacity(), EPSILON);
331 assertEquals(1.0, node2.getOpacity(), EPSILON);
332 AnimationShim.finished(ft);
333
334 // node null, parent set
335 ft.setNode(null);
336 assertTrue(AnimationShim.startable(ft,true));
337 AnimationShim.doStart(ft,true);
338 TransitionShim.interpolate(ft,0.4);
339 assertEquals(0.75, node.getOpacity(), EPSILON);
340 assertEquals(0.7, node2.getOpacity(), EPSILON);
341 AnimationShim.finished(ft);
342
343 // node null, parent null
344 pt.setNode(null);
345 assertFalse(AnimationShim.startable(ft,true));
346 }
347
348 @Test
349 public void testCachedValues() {
350 final FadeTransition ft = new FadeTransition(ONE_SEC, node);
351 ft.setInterpolator(Interpolator.LINEAR);
352 ft.setFromValue(0.5);
353 ft.setToValue(1.0);
354
355 // start
356 assertTrue(AnimationShim.startable(ft,true));
357 AnimationShim.doStart(ft,true);
358 ft.setFromValue(0.0);
359 TransitionShim.interpolate(ft,0.5);
360 assertEquals(0.75, node.getOpacity(), EPSILON);
361 AnimationShim.finished(ft);
362 ft.setFromValue(0.5);
363
364 // end
365 assertTrue(AnimationShim.startable(ft,true));
366 AnimationShim.doStart(ft,true);
367 ft.setToValue(0.0);
368 TransitionShim.interpolate(ft,0.2);
369 assertEquals(0.6, node.getOpacity(), EPSILON);
370 AnimationShim.finished(ft);
371 ft.setToValue(1.0);
372
373 // node
374 assertTrue(AnimationShim.startable(ft,true));
375 AnimationShim.doStart(ft,true);
376 ft.setNode(null);
377 TransitionShim.interpolate(ft,0.7);
378 assertEquals(0.85, node.getOpacity(), EPSILON);
379 AnimationShim.finished(ft);
380 ft.setNode(node);
381
382 // interpolator
383 assertTrue(AnimationShim.startable(ft,true));
384 AnimationShim.doStart(ft,true);
385 ft.setInterpolator(null);
386 TransitionShim.interpolate(ft,0.1);
387 assertEquals(0.55, node.getOpacity(), EPSILON);
388 AnimationShim.finished(ft);
389 ft.setInterpolator(Interpolator.LINEAR);
390 }
391
392 @Test
393 public void testStartable() {
394 final FadeTransition t0 = new FadeTransition(Duration.ONE, node);
395 assertTrue(AnimationShim.startable(t0,true));
396
397 // duration is 0
398 t0.setDuration(Duration.ZERO);
399 assertFalse(AnimationShim.startable(t0,true));
400 t0.setDuration(Duration.ONE);
401 assertTrue(AnimationShim.startable(t0,true));
402
403 // node is null
404 t0.setNode(null);
405 assertFalse(AnimationShim.startable(t0,true));
406 t0.setNode(node);
407 assertTrue(AnimationShim.startable(t0,true));
408
409 // interpolator is null
410 t0.setInterpolator(null);
411 assertFalse(AnimationShim.startable(t0,true));
412 t0.setInterpolator(Interpolator.LINEAR);
413 assertTrue(AnimationShim.startable(t0,true));
414 }
415
416 @Test
417 public void testEvaluateStartValue() {
418 final FadeTransition t0 = new FadeTransition(Duration.INDEFINITE, node);
419
420 // first run
421 node.setOpacity(0.6);
422 assertTrue(AnimationShim.startable(t0,true));
423 AnimationShim.doStart(t0,true);
424 node.setOpacity(0.8);
425 TransitionShim.interpolate(t0,0.0);
426 assertEquals(0.6, node.getOpacity(), EPSILON);
427 AnimationShim.finished(t0);
428
429 // second run
430 node.setOpacity(0.2);
431 assertTrue(AnimationShim.startable(t0,true));
432 AnimationShim.doStart(t0,true);
433 node.setOpacity(0.8);
434 TransitionShim.interpolate(t0,0.0);
435 assertEquals(0.2, node.getOpacity(), EPSILON);
436 AnimationShim.finished(t0);
437 }
438
439 }
|