1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.scenegraph.tests;
\r
14 import static junit.framework.Assert.assertSame;
\r
16 import java.util.ArrayList;
\r
17 import java.util.List;
\r
18 import java.util.UUID;
\r
19 import java.util.concurrent.CyclicBarrier;
\r
20 import java.util.concurrent.Semaphore;
\r
21 import java.util.concurrent.atomic.AtomicBoolean;
\r
23 import org.junit.Test;
\r
24 import org.simantics.scenegraph.INode;
\r
25 import org.simantics.scenegraph.ParentNode;
\r
26 import org.simantics.scenegraph.g2d.G2DParentNode;
\r
27 import org.simantics.scenegraph.g2d.G2DSceneGraph;
\r
28 import org.simantics.scenegraph.g2d.nodes.DataNode;
\r
29 import org.simantics.scenegraph.g2d.nodes.NavigationNode;
\r
30 import org.simantics.scenegraph.utils.NodeUtil;
\r
34 * @author Tuukka Lehtonen
\r
36 public class LookupServiceTests {
\r
38 AtomicBoolean endTest;
\r
39 CyclicBarrier startBarrier;
\r
42 G2DSceneGraph root = new G2DSceneGraph();
\r
43 List<INode> nodes = new ArrayList<INode>();
\r
44 List<String> nodeIds = new ArrayList<String>();
\r
45 List<String> mappedIds = new ArrayList<String>();
\r
47 List<Throwable> errors = new ArrayList<Throwable>();
\r
50 <T extends INode> T addAndMapNode(ParentNode<?> parent, String id, Class<T> clazz) {
\r
51 T node = parent.addNode(id, clazz);
\r
54 NodeUtil.map(node, id);
\r
58 <T extends INode> T addNode(ParentNode<?> parent, String id, Class<T> clazz) {
\r
59 T node = parent.addNode(id, clazz);
\r
65 <T extends INode> T addNode(ParentNode<?> parent, Class<T> clazz) {
\r
66 return addNode(parent, UUID.randomUUID().toString(), clazz);
\r
70 public void testLookup() throws Exception {
\r
71 NavigationNode nav = addAndMapNode(root, "navigation", NavigationNode.class);
\r
72 DataNode data = addAndMapNode(root, "data", DataNode.class);
\r
73 G2DParentNode elements = addAndMapNode(nav, "elements", G2DParentNode.class);
\r
74 @SuppressWarnings("unused")
\r
75 G2DParentNode ghosts = addAndMapNode(nav, "ghosts", G2DParentNode.class);
\r
78 assertSame(nav, root.lookupNode("navigation"));
\r
79 assertSame(data, root.lookupNode("data"));
\r
80 assertSame(nav, NodeUtil.lookup(nav, "navigation"));
\r
81 assertSame(data, NodeUtil.lookup(data, "data"));
\r
83 String id1 = UUID.randomUUID().toString();
\r
84 String id2 = UUID.randomUUID().toString();
\r
85 String id3_1 = UUID.randomUUID().toString();
\r
86 String id3_2 = UUID.randomUUID().toString();
\r
87 String id4 = UUID.randomUUID().toString();
\r
88 G2DParentNode e1 = addAndMapNode(elements, id1, G2DParentNode.class);
\r
89 G2DParentNode e2 = addAndMapNode(elements, id2, G2DParentNode.class);
\r
90 G2DParentNode e3 = addNode(elements, G2DParentNode.class);
\r
91 G2DParentNode e3_1 = addAndMapNode(e3, id3_1, G2DParentNode.class);
\r
92 G2DParentNode e3_2 = addAndMapNode(e3, id3_2, G2DParentNode.class);
\r
93 G2DParentNode e4 = addAndMapNode(elements, id4, G2DParentNode.class);
\r
95 assertSame(e1, NodeUtil.lookup(e1, id1));
\r
96 assertSame(e2, NodeUtil.lookup(e2, id2));
\r
97 assertSame(e3_1, NodeUtil.lookup(e3_1, id3_1));
\r
98 assertSame(e3_2, NodeUtil.lookup(e3_2, id3_2));
\r
99 assertSame(e4, NodeUtil.lookup(e4, id4));
\r