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
26 package com.sun.javafx.scene.traversal;
27
28 import static org.junit.Assert.assertEquals;
29 import static org.junit.Assert.assertSame;
30 import static org.junit.Assert.assertTrue;
31
32 import java.util.Arrays;
33 import java.util.Collection;
34
35 import javafx.geometry.Bounds;
36 import javafx.scene.Group;
37 import javafx.scene.Node;
38 import javafx.scene.Scene;
39 import javafx.scene.shape.Rectangle;
40 import javafx.stage.Stage;
41
42 import org.junit.After;
43 import org.junit.Before;
44 import org.junit.Test;
45 import org.junit.runner.RunWith;
46 import org.junit.runners.Parameterized;
47 import org.junit.runners.Parameterized.Parameters;
48
49 /**
50 * Tests for TraversalEngine with the default ContainerTabOrder algorithm,
51 * tests if using the WeightedClosestCorner algorithm have been
52 * left in comments.
53 */
54 @RunWith(Parameterized.class)
55 public final class TraversalTest {
56 private final int fromNumber;
57 private final Direction direction;
58 private final int toNumber;
59 private final int toNumberTransformed;
60
61 private Stage stage;
62 private Scene scene;
63 /**
64 * 3x3 keypad.
65 * <p>
66 * Untransformed keypad:
67 * <ul>
68 * <li>1 2 3</li>
69 * <li>4 5 6</li>
70 * <li>7 8 9</li>
71 * </ul>
72 * <p>
73 * Transformed keypad:
74 * <ul>
75 * <li>7 4 1</li>
131 //{ 3, Direction.NEXT, 4, 7 }
132
133 // using ContainerTabOrder, target always the same
134 { 8, Direction.PREVIOUS, 7, 7 },
135 { 7, Direction.PREVIOUS, 6, 6 },
136 { 2, Direction.NEXT, 3, 3 },
137 { 3, Direction.NEXT, 4, 4 }
138 });
139 }
140
141 public TraversalTest(final int fromNumber,
142 final Direction direction,
143 final int toNumber,
144 final int toNumberTransformed) {
145 this.fromNumber = fromNumber;
146 this.direction = direction;
147 this.toNumber = toNumber;
148 this.toNumberTransformed = toNumberTransformed;
149 }
150
151 @Before
152 public void setUp() {
153 stage = new Stage();
154 scene = new Scene(new Group(), 500, 500);
155 stage.setScene(scene);
156
157 traversalEngine = new TraversalEngine(scene.getRoot(), true);
158
159 keypadNodes = createKeypadNodesInScene(scene, traversalEngine);
160
161 stage.show();
162 stage.requestFocus();
163 }
164
165 @After
166 public void tearDown() {
167 stage = null;
168 scene = null;
169 keypadNodes = null;
170 traversalEngine = null;
171 }
172
173 @Test
174 public void untransformedTraversalTest() {
175 keypadNodes[fromNumber - 1].requestFocus();
176 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
177 assertTrue(keypadNodes[toNumber - 1].isFocused());
178 }
179
180 @Test
181 public void transformedTraversalTest() {
182 scene.getRoot().setRotate(90);
183 keypadNodes[fromNumber - 1].requestFocus();
184 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
185 assertTrue(keypadNodes[toNumberTransformed - 1].isFocused());
186 }
187
188 @Test
189 public void traverseListenerTest() {
190 final TraverseListenerImpl traverseListener =
191 new TraverseListenerImpl();
192 traversalEngine.addTraverseListener(traverseListener);
193 keypadNodes[fromNumber - 1].requestFocus();
194 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
195 if (fromNumber != toNumber) {
196 assertEquals(1, traverseListener.getCallCounter());
197 assertSame(keypadNodes[toNumber - 1],
|
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
26 package com.sun.javafx.scene.traversal;
27
28 import com.sun.javafx.FXAfter;
29 import com.sun.javafx.FXBefore;
30 import com.sun.javafx.FXTestThread;
31 import com.sun.javafx.FXThread;
32 import com.sun.javafx.FXUnit;
33 import javafx.geometry.Bounds;
34 import javafx.scene.Group;
35 import javafx.scene.Node;
36 import javafx.scene.Scene;
37 import javafx.scene.shape.Rectangle;
38 import javafx.stage.Stage;
39 import org.junit.Rule;
40 import org.junit.Test;
41 import org.junit.runner.RunWith;
42 import org.junit.runners.Parameterized;
43 import org.junit.runners.Parameterized.Parameters;
44
45 import java.util.Arrays;
46 import java.util.Collection;
47
48 import static org.junit.Assert.*;
49
50 /**
51 * Tests for TraversalEngine with the default ContainerTabOrder algorithm,
52 * tests if using the WeightedClosestCorner algorithm have been
53 * left in comments.
54 */
55 @RunWith(Parameterized.class)
56 public final class TraversalTest {
57
58 @Rule
59 public final FXUnit fx = new FXUnit();
60
61 private final int fromNumber;
62 private final Direction direction;
63 private final int toNumber;
64 private final int toNumberTransformed;
65
66 private Stage stage;
67 private Scene scene;
68 /**
69 * 3x3 keypad.
70 * <p>
71 * Untransformed keypad:
72 * <ul>
73 * <li>1 2 3</li>
74 * <li>4 5 6</li>
75 * <li>7 8 9</li>
76 * </ul>
77 * <p>
78 * Transformed keypad:
79 * <ul>
80 * <li>7 4 1</li>
136 //{ 3, Direction.NEXT, 4, 7 }
137
138 // using ContainerTabOrder, target always the same
139 { 8, Direction.PREVIOUS, 7, 7 },
140 { 7, Direction.PREVIOUS, 6, 6 },
141 { 2, Direction.NEXT, 3, 3 },
142 { 3, Direction.NEXT, 4, 4 }
143 });
144 }
145
146 public TraversalTest(final int fromNumber,
147 final Direction direction,
148 final int toNumber,
149 final int toNumberTransformed) {
150 this.fromNumber = fromNumber;
151 this.direction = direction;
152 this.toNumber = toNumber;
153 this.toNumberTransformed = toNumberTransformed;
154 }
155
156 @FXBefore
157 public void setUp() {
158 stage = new Stage();
159 scene = new Scene(new Group(), 500, 500);
160 stage.setScene(scene);
161
162 traversalEngine = new TraversalEngine(scene.getRoot(), true);
163
164 keypadNodes = createKeypadNodesInScene(scene, traversalEngine);
165
166 stage.show();
167 stage.requestFocus();
168 }
169
170 @FXAfter
171 public void tearDown() {
172 stage = null;
173 scene = null;
174 keypadNodes = null;
175 traversalEngine = null;
176 }
177
178 @Test
179 @FXTestThread(FXThread.MAIN)
180 public void untransformedTraversalTest() {
181 fx.invokeAndWait(() -> {
182 keypadNodes[fromNumber - 1].requestFocus();
183 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
184 });
185 fx.waitForNextPulse();
186 fx.invokeAndWait(
187 () -> assertTrue(keypadNodes[toNumber - 1].isFocused()));
188 }
189
190 @Test
191 public void transformedTraversalTest() {
192 scene.getRoot().setRotate(90);
193 keypadNodes[fromNumber - 1].requestFocus();
194 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
195 assertTrue(keypadNodes[toNumberTransformed - 1].isFocused());
196 }
197
198 @Test
199 public void traverseListenerTest() {
200 final TraverseListenerImpl traverseListener =
201 new TraverseListenerImpl();
202 traversalEngine.addTraverseListener(traverseListener);
203 keypadNodes[fromNumber - 1].requestFocus();
204 traversalEngine.trav(keypadNodes[fromNumber - 1], direction);
205 if (fromNumber != toNumber) {
206 assertEquals(1, traverseListener.getCallCounter());
207 assertSame(keypadNodes[toNumber - 1],
|