package cn.com.jautoitx;
import org.junit.Assert;
import org.junit.Test;
import cn.com.jautoitx.TitleBuilder.By;
public class TitleBuilderTest extends BaseTest {
@Test
public void by() {
Assert.assertEquals("[]", TitleBuilder.by());
// by title
Assert.assertEquals("[TITLE:]", TitleBuilder.by(By.title(null)));
Assert.assertEquals("[TITLE:]", TitleBuilder.by(By.title("")));
Assert.assertEquals("[TITLE:JAutoItX]",
TitleBuilder.by(By.title("JAutoItX")));
Assert.assertEquals("[TITLE:JAutoItX;;]",
TitleBuilder.by(By.title("JAutoItX;")));
Assert.assertEquals("[TITLE:]", TitleBuilder.byTitle(null));
Assert.assertEquals("[TITLE:]", TitleBuilder.byTitle(""));
Assert.assertEquals("[TITLE:JAutoItX]",
TitleBuilder.byTitle("JAutoItX"));
Assert.assertEquals("[TITLE:JAutoItX;;]",
TitleBuilder.byTitle("JAutoItX;"));
// by classname
Assert.assertEquals("[CLASS:]", TitleBuilder.by(By.className(null)));
Assert.assertEquals("[CLASS:]", TitleBuilder.by(By.className("")));
Assert.assertEquals("[CLASS:window]",
TitleBuilder.by(By.className("window")));
Assert.assertEquals("[CLASS:window;;]",
TitleBuilder.by(By.className("window;")));
Assert.assertEquals("[CLASS:]", TitleBuilder.byClassName(null));
Assert.assertEquals("[CLASS:]", TitleBuilder.byClassName(""));
Assert.assertEquals("[CLASS:window]",
TitleBuilder.byClassName("window"));
Assert.assertEquals("[CLASS:window;;]",
TitleBuilder.byClassName("window;"));
// by regexp title
Assert.assertEquals("[REGEXPTITLE:]",
TitleBuilder.by(By.regexpTitle(null)));
Assert.assertEquals("[REGEXPTITLE:]",
TitleBuilder.by(By.regexpTitle("")));
Assert.assertEquals("[REGEXPTITLE:^JAutoItX$]",
TitleBuilder.by(By.regexpTitle("^JAutoItX$")));
Assert.assertEquals("[REGEXPTITLE:^JAutoItX;;]",
TitleBuilder.by(By.regexpTitle("^JAutoItX;")));
Assert.assertEquals("[REGEXPTITLE:]", TitleBuilder.byRegexpTitle(null));
Assert.assertEquals("[REGEXPTITLE:]", TitleBuilder.byRegexpTitle(""));
Assert.assertEquals("[REGEXPTITLE:^JAutoItX$]",
TitleBuilder.byRegexpTitle("^JAutoItX$"));
Assert.assertEquals("[REGEXPTITLE:^JAutoItX;;]",
TitleBuilder.byRegexpTitle("^JAutoItX;"));
// by regexp classname
Assert.assertEquals("[REGEXPCLASS:]",
TitleBuilder.by(By.regexpClassName(null)));
Assert.assertEquals("[REGEXPCLASS:]",
TitleBuilder.by(By.regexpClassName("")));
Assert.assertEquals("[REGEXPCLASS:^window$]",
TitleBuilder.by(By.regexpClassName("^window$")));
Assert.assertEquals("[REGEXPCLASS:^window;;]",
TitleBuilder.by(By.regexpClassName("^window;")));
Assert.assertEquals("[REGEXPCLASS:]",
TitleBuilder.byRegexpClassName(null));
Assert.assertEquals("[REGEXPCLASS:]",
TitleBuilder.byRegexpClassName(""));
Assert.assertEquals("[REGEXPCLASS:^window$]",
TitleBuilder.byRegexpClassName("^window$"));
Assert.assertEquals("[REGEXPCLASS:^window;;]",
TitleBuilder.byRegexpClassName("^window;"));
// by last window
Assert.assertEquals("[LAST]", TitleBuilder.by(By.lastWindow()));
Assert.assertEquals("[LAST]", TitleBuilder.byLastWindow());
// by currently active window
Assert.assertEquals("[ACTIVE]", TitleBuilder.by(By.activeWindow()));
Assert.assertEquals("[ACTIVE]", TitleBuilder.byActiveWindow());
// by window position
Assert.assertEquals("[X:10\\Y:20]",
TitleBuilder.by(By.position(10, 20)));
Assert.assertEquals("[Y:20]", TitleBuilder.by(By.position(null, 20)));
Assert.assertEquals("[X:10]", TitleBuilder.by(By.position(10, null)));
Assert.assertEquals("[]", TitleBuilder.by(By.position(null, null)));
Assert.assertEquals("[X:10\\Y:20]", TitleBuilder.byPosition(10, 20));
Assert.assertEquals("[Y:20]", TitleBuilder.byPosition(null, 20));
Assert.assertEquals("[X:10]", TitleBuilder.byPosition(10, null));
Assert.assertEquals("[]", TitleBuilder.byPosition(null, null));
// by window size
Assert.assertEquals("[W:400\\H:300]",
TitleBuilder.by(By.size(400, 300)));
Assert.assertEquals("[H:300]", TitleBuilder.by(By.size(null, 300)));
Assert.assertEquals("[W:400]", TitleBuilder.by(By.size(400, null)));
Assert.assertEquals("[]", TitleBuilder.by(By.size(null, null)));
Assert.assertEquals("[W:400\\H:300]", TitleBuilder.bySize(400, 300));
Assert.assertEquals("[H:300]", TitleBuilder.bySize(null, 300));
Assert.assertEquals("[W:400]", TitleBuilder.bySize(400, null));
Assert.assertEquals("[]", TitleBuilder.bySize(null, null));
// by window bounds
Assert.assertEquals("[X:10\\Y:20\\W:400\\H:300]",
TitleBuilder.by(By.bounds(10, 20, 400, 300)));
Assert.assertEquals("[Y:20\\W:400\\H:300]",
TitleBuilder.by(By.bounds(null, 20, 400, 300)));
Assert.assertEquals("[X:10\\W:400\\H:300]",
TitleBuilder.by(By.bounds(10, null, 400, 300)));
Assert.assertEquals("[X:10\\Y:20\\H:300]",
TitleBuilder.by(By.bounds(10, 20, null, 300)));
Assert.assertEquals("[X:10\\Y:20\\W:400]",
TitleBuilder.by(By.bounds(10, 20, 400, null)));
Assert.assertEquals("[X:10\\H:300]",
TitleBuilder.by(By.bounds(10, null, null, 300)));
Assert.assertEquals("[X:10]",
TitleBuilder.by(By.bounds(10, null, null, null)));
Assert.assertEquals("[]",
TitleBuilder.by(By.bounds(null, null, null, null)));
Assert.assertEquals("[X:10\\Y:20\\W:400\\H:300]",
TitleBuilder.byBounds(10, 20, 400, 300));
Assert.assertEquals("[Y:20\\W:400\\H:300]",
TitleBuilder.byBounds(null, 20, 400, 300));
Assert.assertEquals("[X:10\\W:400\\H:300]",
TitleBuilder.byBounds(10, null, 400, 300));
Assert.assertEquals("[X:10\\Y:20\\H:300]",
TitleBuilder.byBounds(10, 20, null, 300));
Assert.assertEquals("[X:10\\Y:20\\W:400]",
TitleBuilder.byBounds(10, 20, 400, null));
Assert.assertEquals("[X:10\\H:300]",
TitleBuilder.byBounds(10, null, null, 300));
Assert.assertEquals("[X:10]",
TitleBuilder.byBounds(10, null, null, null));
Assert.assertEquals("[]", TitleBuilder.byBounds(null, null, null, null));
// by 1-based instance when all given properties match
Assert.assertEquals("[INSTANCE:-1]", TitleBuilder.by(By.instance(-1)));
Assert.assertEquals("[INSTANCE:0]", TitleBuilder.by(By.instance(0)));
Assert.assertEquals("[INSTANCE:1]", TitleBuilder.by(By.instance(1)));
Assert.assertEquals("[INSTANCE:2]", TitleBuilder.by(By.instance(2)));
Assert.assertEquals("[INSTANCE:-1]", TitleBuilder.byInstance(-1));
Assert.assertEquals("[INSTANCE:0]", TitleBuilder.byInstance(0));
Assert.assertEquals("[INSTANCE:1]", TitleBuilder.byInstance(1));
Assert.assertEquals("[INSTANCE:2]", TitleBuilder.byInstance(2));
// by handle
Assert.assertEquals("[HANDLE:]",
TitleBuilder.by(By.handle((String) null)));
Assert.assertEquals("[HANDLE:]", TitleBuilder.by(By.handle("")));
Assert.assertEquals("[HANDLE:012345]",
TitleBuilder.by(By.handle("012345")));
Assert.assertEquals("[HANDLE:012345;;]",
TitleBuilder.by(By.handle("012345;")));
Assert.assertEquals("[HANDLE:]", TitleBuilder.byHandle((String) null));
Assert.assertEquals("[HANDLE:]", TitleBuilder.byHandle(""));
Assert.assertEquals("[HANDLE:012345]", TitleBuilder.byHandle("012345"));
Assert.assertEquals("[HANDLE:012345;;]",
TitleBuilder.byHandle("012345;"));
Assert.assertEquals(
"[CLASS:class; TITLE:tit;;le;;; ACTIVE; LAST; HANDLE:handle]",
TitleBuilder.by(By.className("class"), By.title("tit;le;"),
By.activeWindow(), By.lastWindow(), By.handle("handle")));
// run notepad
int pid = runNotepad();
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE))));
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.bounds(Win.getPosX(NOTEPAD_TITLE),
Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertFalse(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.bounds(Win.getPosX(NOTEPAD_TITLE) + 1,
Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.handle(Win.getHandle(NOTEPAD_TITLE)), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertFalse(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.handle(Win.getHandle(NOTEPAD_TITLE) + "x"), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.className(Win.getClassName(NOTEPAD_TITLE)), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertFalse(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.className(Win.getClassName(NOTEPAD_TITLE) + 'x'), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.className(Win.getClassName(NOTEPAD_TITLE)), By.handle(Win
.getHandle((String) null)), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertTrue(Win.active(TitleBuilder.by(By.title(NOTEPAD_TITLE),
By.className(Win.getClassName(NOTEPAD_TITLE)), By.handle(Win
.getHandle(NOTEPAD_TITLE)), By.bounds(
Win.getPosX(NOTEPAD_TITLE), Win.getPosY(NOTEPAD_TITLE),
Win.getWidth(NOTEPAD_TITLE),
Win.getHeight(NOTEPAD_TITLE)))));
Assert.assertTrue(Win.active(TitleBuilder.by(
By.title(NOTEPAD_TITLE + 'x'),
By.className(Win.getClassName(NOTEPAD_TITLE) + 'x'),
By.handle(Win.getHandle(NOTEPAD_TITLE)),
By.bounds(Win.getPosX(NOTEPAD_TITLE) + 1,
Win.getPosY(NOTEPAD_TITLE) + 1,
Win.getWidth(NOTEPAD_TITLE) + 1,
Win.getHeight(NOTEPAD_TITLE) + 1))));
// close notepad
Process.close(pid);
sleep(500);
Assert.assertFalse(Process.exists(pid));
}
}