/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Eclipse Public License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.eclipse.org/org/documents/epl-v10.php * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.ide.eclipse.adt.internal.editors.layout.gre; import com.android.ide.common.api.INode; import com.android.ide.common.api.Rect; import com.android.ide.common.rendering.api.ViewInfo; import com.android.ide.eclipse.adt.internal.editors.layout.descriptors.ViewElementDescriptor; import com.android.ide.eclipse.adt.internal.editors.layout.gle2.CanvasViewInfo; import com.android.ide.eclipse.adt.internal.editors.layout.uimodel.UiViewElementNode; import java.util.Arrays; import junit.framework.TestCase; public class NodeFactoryTest extends TestCase { private NodeFactory m; @Override protected void setUp() throws Exception { super.setUp(); m = new NodeFactory(); } @Override protected void tearDown() throws Exception { super.tearDown(); m = null; } public final void testCreateCanvasViewInfo() { ViewElementDescriptor ved = new ViewElementDescriptor("xml", "com.example.MyJavaClass"); UiViewElementNode uiv = new UiViewElementNode(ved); ViewInfo lvi = new ViewInfo("name", uiv, 10, 12, 110, 120); CanvasViewInfo cvi = CanvasViewInfo.create(lvi).getFirst(); // Create a NodeProxy. NodeProxy proxy = m.create(cvi); // getNode() is our only internal implementation method. assertNotNull(proxy); assertSame(uiv, proxy.getNode()); // Groovy scripts only see the INode interface so we want to primarily test that. INode inode = proxy; assertEquals(new Rect(10, 12, 110-10-1, 120-12-1), inode.getBounds()); assertTrue(Arrays.equals(new INode[0], inode.getChildren())); assertEquals("com.example.MyJavaClass", inode.getFqcn()); assertNull(inode.getParent()); assertSame(inode, inode.getRoot()); } public final void testCreateUiViewElementNode() { ViewElementDescriptor ved = new ViewElementDescriptor("xml", "com.example.MyJavaClass"); UiViewElementNode uiv = new UiViewElementNode(ved); // Create a NodeProxy. NodeProxy proxy = m.create(uiv); // getNode() is our only internal implementation method. assertNotNull(proxy); assertSame(uiv, proxy.getNode()); // Groovy scripts only see the INode interface so we want to primarily test that. INode inode = proxy; // Nodes constructed using this create() method do not have valid bounds. // There should be one invalid bound rectangle. assertNotNull(inode.getBounds()); assertFalse(inode.getBounds().isValid()); // All the other properties should be set correctly. assertTrue(Arrays.equals(new INode[0], inode.getChildren())); assertEquals("com.example.MyJavaClass", inode.getFqcn()); assertNull(inode.getParent()); assertSame(inode, inode.getRoot()); } public final void testCreateDup() { ViewElementDescriptor ved = new ViewElementDescriptor("xml", "com.example.MyJavaClass"); UiViewElementNode uiv = new UiViewElementNode(ved); ViewInfo lvi = new ViewInfo("name", uiv, 10, 12, 110, 120); CanvasViewInfo cvi = CanvasViewInfo.create(lvi).getFirst(); // NodeProxies are cached. Creating the same one twice returns the same proxy. NodeProxy proxy1 = m.create(cvi); NodeProxy proxy2 = m.create(cvi); assertSame(proxy2, proxy1); } public final void testClear() { ViewElementDescriptor ved = new ViewElementDescriptor("xml", "com.example.MyJavaClass"); UiViewElementNode uiv = new UiViewElementNode(ved); ViewInfo lvi = new ViewInfo("name", uiv, 10, 12, 110, 120); CanvasViewInfo cvi = CanvasViewInfo.create(lvi).getFirst(); // NodeProxies are cached. Creating the same one twice returns the same proxy. NodeProxy proxy1 = m.create(cvi); NodeProxy proxy2 = m.create(cvi); assertSame(proxy2, proxy1); // Clearing the cache will force it create a new proxy. m.clear(); NodeProxy proxy3 = m.create(cvi); assertNotSame(proxy1, proxy3); } }