/** CompositionTest.java. Purpose: Description: History: 4:18:20 PM Dec 3, 2014, Created by jumperchen Copyright (C) 2014 Potix Corporation. All Rights Reserved. */ package org.zkoss.zktest.zats.zuti.mvvm._if; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.zkoss.zats.mimic.ComponentAgent; import org.zkoss.zats.mimic.DesktopAgent; import org.zkoss.zktest.zats.zuti.ZutiBasicTestCase; import org.zkoss.zktest.zats.zuti.verifier.HierarchyVerifier; import org.zkoss.zul.Div; import org.zkoss.zul.Label; /** * @author jumperchen */ public class CompositionTest extends ZutiBasicTestCase { @Test public void testBasic() { DesktopAgent desktop = connect(getTestURL("basic.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(2, getShadowSize(hostAgent)); assertEquals(2, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testNestedHost() { DesktopAgent desktop = connect(getTestURL("nestedHost.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(3, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(1, getShadowSize(next)); assertEquals("background:yellow", next.getFirstChild().as(Div.class) .getStyle()); assertEquals(next.getFirstChild().getOwner().toString(), next .getFirstChild().getFirstChild().as(Label.class).getValue() .trim()); assertEquals("background:green", next.getLastChild().as(Div.class) .getStyle()); assertEquals(next.getLastChild().getOwner().toString(), next .getLastChild().getFirstChild().as(Label.class).getValue() .trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testUpdateNestedHost() { DesktopAgent desktop = connect(getTestURL("nestedHost.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(3, hostAgent.getChildren().size()); hostAgent.getNextSibling().click(); ComponentAgent next = hostAgent.getFirstChild(); assertEquals(1, getShadowSize(hostAgent)); assertEquals(3, hostAgent.getChildren().size()); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(1, getShadowSize(next)); assertEquals("background:green", next.getLastChild().as(Div.class) .getStyle()); assertEquals(next.getLastChild().getOwner().toString(), next .getLastChild().getFirstChild().as(Label.class).getValue() .trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testMultiRoot() { DesktopAgent desktop = connect(getTestURL("multiRoot.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(4, getShadowSize(hostAgent)); assertEquals(8, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**End**", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testUpdateMultiRoot() { DesktopAgent desktop = connect(getTestURL("multiRoot.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(4, getShadowSize(hostAgent)); assertEquals(8, hostAgent.getChildren().size()); hostAgent.getNextSibling().click(); assertEquals(4, getShadowSize(hostAgent)); assertEquals(6, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**End**", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testMultiNestedHost() { DesktopAgent desktop = connect(getTestURL("multiNestedHost.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(2, getShadowSize(hostAgent)); assertEquals(8, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(2, getShadowSize(next)); assertEquals("**Nested Start**", next.getFirstChild().as(Label.class) .getValue().trim()); assertEquals("background:yellow", next.getChild(1).as(Div.class) .getStyle()); assertEquals(next.getChild(1).getOwner().toString(), next.getChild(1) .getFirstChild().as(Label.class).getValue().trim()); assertEquals("background:green", next.getChild(2).as(Div.class) .getStyle()); assertEquals(next.getChild(2).getOwner().toString(), next.getChild(2) .getFirstChild().as(Label.class).getValue().trim()); assertEquals("**Nested End**", next.getLastChild().as(Label.class) .getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(2, getShadowSize(next)); assertEquals("**Nested Start**", next.getFirstChild().as(Label.class) .getValue().trim()); assertEquals("background:yellow", next.getChild(1).as(Div.class) .getStyle()); assertEquals(next.getChild(1).getOwner().toString(), next.getChild(1) .getFirstChild().as(Label.class).getValue().trim()); assertEquals("background:green", next.getChild(2).as(Div.class) .getStyle()); assertEquals(next.getChild(2).getOwner().toString(), next.getChild(2) .getFirstChild().as(Label.class).getValue().trim()); assertEquals("**Nested End**", next.getLastChild().as(Label.class) .getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testBasicMerge() { DesktopAgent desktop = connect(getTestURL("basicMerge.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(2, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testBasicMerge2() { DesktopAgent desktop = connect(getTestURL("basicMerge2.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(2, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testBasicMerge3() { DesktopAgent desktop = connect(getTestURL("basicMerge3.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(1, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testNestedMerge() { DesktopAgent desktop = connect(getTestURL("nestedMerge.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(1, getShadowSize(hostAgent)); assertEquals(2, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); // nested shadow next = next.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getParent().getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); } @Test public void testMultiNestedMerge() { DesktopAgent desktop = connect(getTestURL("multiNestedMerge.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(2, getShadowSize(hostAgent)); assertEquals(6, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:yellow", next.as(Div.class).getStyle()); // nested shadow next = next.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getParent().getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); // nested shadow next = next.getNextSibling(); assertEquals("background:yellow", next.as(Div.class).getStyle()); next = next.getFirstChild(); assertEquals("background:yellow", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getParent().getNextSibling(); assertEquals("**End**", next.as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); } @Test public void testUpdateMultiNestedHost() { DesktopAgent desktop = connect(getTestURL("multiNestedHost.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(2, getShadowSize(hostAgent)); assertEquals(8, hostAgent.getChildren().size()); hostAgent.getNextSibling().click(); assertEquals(2, getShadowSize(hostAgent)); assertEquals(8, hostAgent.getChildren().size()); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(2, getShadowSize(next)); //nested shadow next = next.getFirstChild(); assertEquals("**Nested Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class) .getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Nested End**", next.as(Label.class) .getValue().trim()); next = next.getParent(); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("1. First", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals(2, getShadowSize(next)); //nested shadow next = next.getFirstChild(); assertEquals("**Nested Start**", next.as(Label.class) .getValue().trim()); next = next.getNextSibling(); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); assertEquals("background:green", next.as(Div.class) .getStyle()); next = next.getNextSibling(); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); assertEquals("background:green", next.as(Div.class) .getStyle()); next = next.getNextSibling(); assertEquals("**Nested End**", next.as(Label.class) .getValue().trim()); next = next.getParent(); checkVerifier(next.getOwner(), HierarchyVerifier.class); next = next.getNextSibling(); assertEquals("3. Last", next.as(Label.class).getValue().trim()); checkVerifier(hostAgent.getOwner(), HierarchyVerifier.class); } @Test public void testUpdateMultiNestedMerge() { DesktopAgent desktop = connect(getTestURL("multiNestedMerge.zul")); ComponentAgent hostAgent = desktop.query("#host"); assertEquals(2, getShadowSize(hostAgent)); assertEquals(6, hostAgent.getChildren().size()); hostAgent.getNextSibling().click(); ComponentAgent next = hostAgent.getFirstChild(); assertEquals("**Start**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("background:green", next.as(Div.class).getStyle()); assertEquals(next.getOwner().toString(), next.getFirstChild().as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**Middle**", next.as(Label.class).getValue().trim()); next = next.getNextSibling(); assertEquals("**End**", next.as(Label.class).getValue().trim()); checkVerifier(next.getOwner(), HierarchyVerifier.class); } }