1 /* 2 * Copyright (c) 2007, 2017 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 23 * questions. 24 */ 25 package org.jemmy.animation; 26 27 import org.jemmy.env.Environment; 28 import org.jemmy.timing.TimedCriteria; 29 import org.jemmy.timing.Timeline; 30 import org.testng.annotations.AfterClass; 31 import org.testng.annotations.AfterMethod; 32 import org.testng.annotations.BeforeClass; 33 import org.testng.annotations.BeforeMethod; 34 import org.testng.annotations.Test; 35 36 import static org.testng.Assert.assertTrue; 37 38 39 /** 40 * 41 * @author shura 42 */ 43 public class TimelineTest { 44 45 public TimelineTest() { 46 } 47 48 @BeforeClass 49 public static void setUpClass() throws Exception { 50 } 51 52 @AfterClass 53 public static void tearDownClass() throws Exception { 54 } 55 56 @BeforeMethod 57 public void setUp() { 58 } 59 60 @AfterMethod 61 public void tearDown() { 62 } 63 64 @Test 65 public void single() { 66 TestFrame one = new TestFrame(1000, 0) {}; 67 new Timeline(Environment.getEnvironment(), null).schedule(1000, one).start(); 68 } 69 70 @Test 71 public void multiple() { 72 TestFrame many = new TestFrame(1000, 1000) {}; 73 new Timeline(Environment.getEnvironment(), null).schedule(1000, 10000, 1000, many).start(); 74 } 75 76 @Test 77 public void delayed() { 78 TestFrame one = new TestFrame(1000, 1000) {}; 79 long before = System.currentTimeMillis(); 80 System.out.println("Before: " + before); 81 new Timeline(1000, Environment.getEnvironment(), null).schedule(1000, one).start(); 82 assertTrue(one.actualTime >= before + 2000); 83 } 84 85 private static class TestFrame implements TimedCriteria<Long> { 86 87 private int count = 0; 88 private long start = 0; 89 private long interval = 0; 90 private long actualTime = 0; 91 92 public TestFrame(long start, long interval) { 93 this.start = start; 94 this.interval = interval; 95 } 96 97 public boolean check(Long t, long when) { 98 actualTime = System.currentTimeMillis(); 99 System.out.println(count + "'s executed on " + when + ", " + actualTime + " actual"); 100 assertTrue(when >= start + count*interval); 101 assertTrue(when <= start + count*interval + 20); 102 count++; 103 return true; 104 } 105 } 106 }