/* BasicAgentTest.java
Purpose:
Description:
History:
Mar 27, 2012 Created by pao
Copyright (C) 2011 Potix Corporation. All Rights Reserved.
*/
package org.zkoss.zats.testcase.ext7;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.FileOutputStream;
import java.util.List;
import org.eclipse.jetty.util.TypeUtil;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import org.zkoss.zats.mimic.ComponentAgent;
import org.zkoss.zats.mimic.DesktopAgent;
import org.zkoss.zats.mimic.Zats;
import org.zkoss.zats.mimic.operation.ClickAgent;
import org.zkoss.zats.mimic.operation.OpenAgent;
import org.zkoss.zats.mimic.operation.SelectAgent;
import org.zkoss.zats.mimic.operation.SelectByIndexAgent;
import org.zkoss.zats.mimic.operation.UploadAgent;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zul.Label;
import org.zkoss.zul.Toolbarbutton;
import org.zkoss.zul.Vbox;
/**
* @author pao
*
*/
public class BasicAgentTest {
@BeforeClass
public static void init() {
Zats.init(".");
}
@AfterClass
public static void end() {
Zats.end();
}
@After
public void after() {
Zats.cleanup();
}
@Test
public void testToolbarButtonCheck() {
DesktopAgent desktop = Zats.newClient().connect("/~./basic/toolbar.zul");
for (int i = 1; i <= 6; ++i)
assertEquals("tbb" + i, desktop.query("#tbb" + i).as(Toolbarbutton.class).getLabel());
Label clicked = desktop.query("#clicked").as(Label.class);
assertEquals("", clicked.getValue());
for (int i = 1; i <= 6; ++i) {
desktop.query("#tbb" + i).click();
assertEquals("tbb" + i, clicked.getValue());
}
Label checked = desktop.query("#checked").as(Label.class);
assertEquals("", checked.getValue());
String[] values = { "tbb4 ", "tbb4 tbb5 ", "tbb4 tbb5 tbb6 ", "tbb4 tbb6 " };
for (int i = 4; i <= 6; ++i) {
desktop.query("#tbb" + i).check(true);
assertEquals(values[i - 4], checked.getValue());
assertEquals("tbb6", clicked.getValue()); // "check" should not perform "click"
}
desktop.query("#tbb5").check(false);
assertEquals(values[3], checked.getValue());
}
@Test
public void testOpenAgent() {
DesktopAgent desktop = Zats.newClient().connect("/~./basic/open-ext7.zul");
Label open = desktop.query("#open").as(Label.class);
Label close = desktop.query("#close").as(Label.class);
assertEquals("", open.getValue());
assertEquals("", close.getValue());
String values[] = { "", "" };
// combobutton
String id = "#aCombobutton";
values[0] = id.substring(1);
desktop.query(id).as(OpenAgent.class).open(true);
assertEquals(values[0], open.getValue());
assertEquals(values[1], close.getValue());
values[1] = id.substring(1);
desktop.query(id).as(OpenAgent.class).open(false);
assertEquals(values[0], open.getValue());
assertEquals(values[1], close.getValue());
}
@Test
public void testSelectByIndexAgent() {
DesktopAgent desktop = Zats.newClient().connect("/~./basic/selectbox.zul");
Label msg = desktop.query("#msg").as(Label.class);
assertEquals("", msg.getValue());
SelectByIndexAgent sb = desktop.query("#sb").as(SelectByIndexAgent.class);
for (int i = 3; i >= 1; --i) {
sb.select(i - 1);
assertEquals("item" + i, msg.getValue());
}
}
@Test
public void testClickAll() {
DesktopAgent desktop = Zats.newClient().connect("/~./basic/click-ext7.zul");
Label target = desktop.query("#target").as(Label.class);
Label event = desktop.query("#eventName").as(Label.class);
assertEquals("", target.getValue());
assertEquals("", event.getValue());
ComponentAgent comps = desktop.query("#comps");
assertNotNull(comps);
String[] names = { "combobutton", "idspace" };
for (String name : names) {
ClickAgent agent = comps.query(name).as(ClickAgent.class);
agent.click();
assertEquals(name, target.getValue());
assertEquals(Events.ON_CLICK, event.getValue());
agent.doubleClick();
assertEquals(name, target.getValue());
assertEquals(Events.ON_DOUBLE_CLICK, event.getValue());
agent.rightClick();
assertEquals(name, target.getValue());
assertEquals(Events.ON_RIGHT_CLICK, event.getValue());
}
}
@Test
public void testMultipleFilesInSingleUpload() throws Exception {
DesktopAgent desktop = Zats.newClient().connect("/~./basic/upload-ext7.zul");
Vbox results = desktop.query("#results").as(Vbox.class);
Assert.assertEquals(0, results.getChildren().size());
// prepare files for testing
File textFile = File.createTempFile("zats-upload-text-", ".tmp");
textFile.deleteOnExit();
String text = "Hello! World!\r\nHello! ZK!\r\n";
byte[] textRaw = text.getBytes("ISO-8859-1");
String textBinary = TypeUtil.toHexString(textRaw).toUpperCase();
FileOutputStream fos = new FileOutputStream(textFile);
fos.write(textRaw);
fos.close();
File imageFile = File.createTempFile("zats-upload-image-", ".png");
imageFile.deleteOnExit();
byte[] imageRaw = new byte[] { -119, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 10, 0,
0, 0, 10, 8, 2, 0, 0, 0, 2, 80, 88, -22, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, -79, -113, 11, -4, 97, 5,
0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 18, 116, 0, 0, 18, 116, 1, -34, 102, 31, 120, 0, 0, 0, 39, 73, 68,
65, 84, 40, 83, 99, 124, 43, -93, -62, -128, 4, 76, -89, 106, 32, 115, -103, -112, 57, -104, 108, -102,
74, 51, 42, 109, -12, 65, -74, 82, 118, 122, -61, 96, 113, 26, 0, -35, -38, 4, -123, -73, -75, -2, 83,
0, 0, 0, 0, 73, 69, 78, 68, -82, 66, 96, -126 };
String imageBinary = TypeUtil.toHexString(imageRaw).toUpperCase();
fos = new FileOutputStream(imageFile);
fos.write(imageRaw);
fos.close();
for (int i = 0; i < 4; ++i) {
// clean
desktop.query("#clean").click();
Assert.assertEquals(0, desktop.query("#results").getChildren().size());
// upload 3 files
UploadAgent agent = desktop.query("#btn" + i).as(UploadAgent.class);
agent.upload(textFile, "text/plain");
agent.upload(textFile, "application/octet-stream");
agent.upload(imageFile, "image/png");
agent.finish();
Assert.assertEquals(3, desktop.query("#results").getChildren().size());
// text
Assert.assertEquals(textFile.getName(), desktop.query("#file0 .name").as(Label.class).getValue());
Assert.assertEquals("text/plain", desktop.query("#file0 .contentType").as(Label.class).getValue());
Assert.assertEquals("txt", desktop.query("#file0 .format").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file0 .binary").as(Label.class).getValue());
Assert.assertEquals(text, desktop.query("#file0 .text").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file0 .width").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file0 .height").as(Label.class).getValue());
// binary
Assert.assertEquals(textFile.getName(), desktop.query("#file1 .name").as(Label.class).getValue());
Assert.assertEquals("application/octet-stream", desktop.query("#file1 .contentType").as(Label.class)
.getValue());
Assert.assertEquals("octet-stream", desktop.query("#file1 .format").as(Label.class).getValue());
Assert.assertEquals(textBinary, desktop.query("#file1 .binary").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file1 .text").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file1 .width").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file1 .height").as(Label.class).getValue());
// image
Assert.assertEquals(imageFile.getName(), desktop.query("#file2 .name").as(Label.class).getValue());
Assert.assertEquals("image/png", desktop.query("#file2 .contentType").as(Label.class).getValue());
Assert.assertEquals("png", desktop.query("#file2 .format").as(Label.class).getValue());
Assert.assertEquals(imageBinary, desktop.query("#file2 .binary").as(Label.class).getValue());
Assert.assertEquals("", desktop.query("#file2 .text").as(Label.class).getValue());
Assert.assertEquals("10px", desktop.query("#file2 .width").as(Label.class).getValue());
Assert.assertEquals("10px", desktop.query("#file2 .height").as(Label.class).getValue());
}
// can't multiple upload
try {
UploadAgent agent = desktop.query("#btn4").as(UploadAgent.class);
agent.upload(textFile, "text/plain");
agent.upload(textFile, "application/octet-stream");
fail("should throw exception");
} catch (Exception e) {
System.out.println(e.getMessage());
}
try {
UploadAgent agent = desktop.query("#btn5").as(UploadAgent.class);
agent.upload(textFile, "text/plain");
agent.upload(textFile, "application/octet-stream");
fail("should throw exception");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}