|
From: <et...@us...> - 2011-09-16 11:35:55
|
Revision: 4443
http://mxquery.svn.sourceforge.net/mxquery/?rev=4443&view=rev
Author: etterth
Date: 2011-09-16 11:35:48 +0000 (Fri, 16 Sep 2011)
Log Message:
-----------
- Added more Tests for the XQIB-specific features
- Bugfixes for the cookie functions
Modified Paths:
--------------
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/RemoveCookie.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/SetCookie.java
trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/Timer.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/JsApi.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/testsuite/XQueryTestBase.java
Added Paths:
-----------
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Classes.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Cookies.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/EventListeners.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Timer.java
trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/UrlManipulation.java
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/JsEval.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -53,7 +53,7 @@
}
protected native JavaScriptObject eval(String script)/*-{
- return eval(script);
+ return $wnd.eval(script);
}-*/;
}
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/RemoveCookie.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/RemoveCookie.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/RemoveCookie.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -5,6 +5,7 @@
import com.google.gwt.user.client.Cookies;
import ch.ethz.mxquery.contextConfig.Context;
+import ch.ethz.mxquery.datamodel.xdm.Token;
import ch.ethz.mxquery.datamodel.xdm.TokenInterface;
import ch.ethz.mxquery.datamodel.xdm.UntypedAtomicToken;
import ch.ethz.mxquery.exceptions.ErrorCodes;
@@ -17,6 +18,9 @@
@Override
protected void init() throws MXQueryException {
+
+ this.currentToken = Token.END_SEQUENCE_TOKEN;
+
TokenInterface tok = subIters[0].next();
String name = tok.getValueAsString();
if (name == null){
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/SetCookie.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/SetCookie.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/SetCookie.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -6,6 +6,7 @@
import ch.ethz.mxquery.contextConfig.Context;
import ch.ethz.mxquery.datamodel.MXQueryDateTime;
+import ch.ethz.mxquery.datamodel.xdm.Token;
import ch.ethz.mxquery.datamodel.xdm.TokenInterface;
import ch.ethz.mxquery.exceptions.ErrorCodes;
import ch.ethz.mxquery.exceptions.MXQueryException;
@@ -17,6 +18,7 @@
@Override
protected void init() throws MXQueryException {
+ this.currentToken = Token.END_SEQUENCE_TOKEN;
TokenInterface tok = subIters[0].next();
String name = tok.getValueAsString();
if (name == null) {
@@ -35,6 +37,7 @@
Cookies.setCookie(name, value);
return;
}
+ tok = subIters[2].next();
MXQueryDateTime expires = tok.getDateTime();
if (expires == null) {
throw new TypeException(ErrorCodes.E0004_TYPE_INAPPROPRIATE_TYPE,
Modified: trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/Timer.java
===================================================================
--- trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/Timer.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/MXQuery/xqib_src/ch/ethz/mxquery/functions/b/Timer.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -16,6 +16,12 @@
import ch.ethz.mxquery.util.LogLevel;
import ch.ethz.mxquery.util.Logger;
+/**
+ * Provides the timer($milliseconds as xs:integer, $handler as function()) function which
+ * creates timer which fires once
+ * @author etterth
+ *
+ */
public class Timer extends TokenBasedIterator {
FunctionItemToken fi;
Added: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Classes.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Classes.java (rev 0)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Classes.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -0,0 +1,46 @@
+package ch.ethz.mxquery.browsertests;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import ch.ethz.mxquery.testsuite.XQueryTestBase;
+
+public class Classes extends XQueryTestBase {
+
+
+ @Test
+ /**
+ * test the b:addClass function
+ */
+ public void class_addclass() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <p/> as first into b:dom()//body");
+ executeNewScript("b:addClass(b:dom()//p,'class1')");
+ String value = executeNewScript("b:getClasses(b:dom()//p) = 'class1'");
+ Assert.assertEquals("true", value);
+ }
+
+ @Test
+ /**
+ * test the b:removeClass function
+ */
+ public void class_removeclass() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <p/> as first into b:dom()//body");
+ executeNewScript("b:addClass(b:dom()//p,'class1')");
+ executeNewScript("b:addClass(b:dom()//p,'class2')");
+ executeNewScript("b:removeClass(b:dom()//p,'class1')");
+ String value = executeNewScript("b:getClasses(b:dom()//p)");
+ Assert.assertEquals("class2", value);
+ }
+
+
+
+
+
+}
Added: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Cookies.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Cookies.java (rev 0)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Cookies.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -0,0 +1,86 @@
+package ch.ethz.mxquery.browsertests;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import ch.ethz.mxquery.testsuite.XQueryTestBase;
+
+public class Cookies extends XQueryTestBase {
+
+
+ @Test
+ /**
+ * test the b:setCookie and b:getCookie functions
+ *
+ */
+ public void cookie_set_and_test() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("b:setCookie('cookie-01','cookie-value-01')");
+ String value = executeNewScript("b:getCookie('cookie-01')");
+ Assert.assertEquals("cookie-value-01", value);
+ }
+
+
+ @Test
+ /**
+ * test the b:setCookie with expiration after one second
+ * and b:getCookie functions
+ *
+ */
+ public void cookie_with_time() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("b:setCookie('cookie-02', 'cookie-value-02', fn:current-dateTime()+xs:dayTimeDuration('PT2S'))");
+ String value = executeNewScript("b:getCookie('cookie-02')");
+ Assert.assertEquals( "cookie-value-02",value);
+
+ Thread.sleep(500);
+ value = executeNewScript("b:getCookie('cookie-02')");
+ Assert.assertEquals( "cookie-value-02",value);
+
+ Thread.sleep(2000);
+ value = executeNewScript("b:getCookie('cookie-02')");
+ Assert.assertEquals("",value);
+ }
+
+ @Test
+ /**
+ * test the b:setCookie and b:removeCookie functions
+ *
+ */
+ public void cookie_remove() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("b:setCookie('cookie-01','cookie-value-01')");
+ String value = executeNewScript("b:getCookie('cookie-01')");
+ Assert.assertEquals("cookie-value-01", value);
+
+ //remove the cookie
+ executeNewScript("b:removeCookie('cookie-01')");
+
+ value = executeNewScript("b:getCookie('cookie-01')");
+ Assert.assertEquals("", value);
+ }
+
+ @Test
+ /**
+ * test the b:getCookieNames function
+ *
+ */
+ public void cookie_getCookies() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("b:setCookie('cookie-01','cookie-value-01')");
+ String value = executeNewScript("b:getCookieNames() = 'cookie-01'");
+ Assert.assertEquals("true", value);
+
+ value = executeNewScript("b:getCookieNames() = 'non-existing-cookie'");
+ Assert.assertEquals("false", value);
+
+ }
+
+
+
+}
Added: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/EventListeners.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/EventListeners.java (rev 0)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/EventListeners.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -0,0 +1,103 @@
+package ch.ethz.mxquery.browsertests;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import ch.ethz.mxquery.testsuite.XQueryTestBase;
+
+public class EventListeners extends XQueryTestBase {
+
+
+ @Test
+ /**
+ * test the b:addEventListener function
+ */
+ public void event_add_listener() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <input type='button'/> as first into b:dom()//body");
+ executeNewScript("declare updating function local:onclick($loc, $evtObj) {\n" +
+ " insert node <p/> as last into b:dom()//body\n" +
+ "};\n" +
+ "b:addEventListener(b:dom()//input, \"onclick\", local:onclick#2)");
+
+ WebElement button = driver.findElementByTagName("input");
+ button.click();
+ button.click();
+
+ Assert.assertEquals(2,driver.findElementsByTagName("p").size());
+ }
+
+
+ @Test
+ /**
+ * test b:removeEventListener
+ * the click should only trigger an insert once
+ */
+ public void event_remove_listener() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <input type='button'/> as first into b:dom()//body");
+ executeNewScript("declare updating function local:onclick($loc, $evtObj) {\n" +
+ " b:removeEventListener(b:dom()//input, \"onclick\", local:onclick#2)," +
+ " insert node <p/> as last into b:dom()//body\n" +
+ "};\n" +
+ "b:addEventListener(b:dom()//input, \"onclick\", local:onclick#2)");
+
+ WebElement button = driver.findElementByTagName("input");
+ button.click();
+ button.click();
+
+ Assert.assertEquals(1,driver.findElementsByTagName("p").size());
+ }
+
+
+ @Test
+ /**
+ * test b:addEventListener with an anonymous function
+ */
+ public void event_add_anonymous() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <input type='button'/> as first into b:dom()//body");
+ executeNewScript(
+ "b:addEventListener(b:dom()//input, \"onclick\", "+
+ "%updating function ($loc, $evtObj) {\n" +
+ " insert node <p/> as last into b:dom()//body\n" +
+ "})\n" );
+
+ WebElement button = driver.findElementByTagName("input");
+ button.click();
+ button.click();
+
+ Assert.assertEquals(2,driver.findElementsByTagName("p").size());
+ }
+
+
+ @Test
+ /**
+ * test b:removeAnonymousEventListeners
+ * the click should only trigger an insert once
+ */
+ public void event_remove_anonymous() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("insert node <input type='button'/> as first into b:dom()//body");
+ executeNewScript(
+ "b:addEventListener(b:dom()//input, \"onclick\", "+
+ "%updating function ($loc, $evtObj) {\n" +
+ " b:removeAnonymousEventListeners(b:dom()//input, \"onclick\")," +
+ " insert node <p/> as last into b:dom()//body\n" +
+ "})\n" );
+
+ WebElement button = driver.findElementByTagName("input");
+ button.click();
+ button.click();
+
+ Assert.assertEquals(1,driver.findElementsByTagName("p").size());
+ }
+
+
+
+}
Modified: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/JsApi.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/JsApi.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/JsApi.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -38,9 +38,18 @@
Assert.assertEquals(result.size(), 2);
Assert.assertEquals(result.get(0).getText(),"div generated by XQIB with \"Some Text\" which was passed from JS");
Assert.assertEquals(result.get(1).getText(),"div generated by XQIB with \"Some more text\" which was passed from JS");
-
-
+
+ };
- };
+
+ @Test
+ /**
+ * tests the js-eval function
+ */
+ public void js_eval() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ executeNewScript("b:js-eval('document.title = \"js-eval\"')");
+ Assert.assertEquals("js-eval", driver.getTitle());
+ }
}
Added: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Timer.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Timer.java (rev 0)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/Timer.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -0,0 +1,37 @@
+package ch.ethz.mxquery.browsertests;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import ch.ethz.mxquery.testsuite.XQueryTestBase;
+
+public class Timer extends XQueryTestBase {
+
+
+ @Test
+ /**
+ * test the b:timer function
+ */
+ public void timer_test01() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ final String script = " declare sequential function local:listener($loc, $evtObj) {\n" +
+ " b:js-eval('document.title = \"timer-test01\"')\n" +
+ " };\n" +
+ "b:timer(1000,local:listener#2)";
+ executeNewScript(script);
+ Assert.assertNotSame("timer-test01", driver.getTitle());
+ Thread.sleep(500);
+ Assert.assertNotSame("timer-test01", driver.getTitle());
+ Thread.sleep(1000);
+ Assert.assertEquals("timer-test01", driver.getTitle());
+
+ }
+
+
+
+}
Added: trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/UrlManipulation.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/UrlManipulation.java (rev 0)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/browsertests/UrlManipulation.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -0,0 +1,51 @@
+package ch.ethz.mxquery.browsertests;
+
+import java.util.List;
+import java.util.NoSuchElementException;
+
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.openqa.selenium.WebElement;
+
+import ch.ethz.mxquery.testsuite.XQueryTestBase;
+
+public class UrlManipulation extends XQueryTestBase {
+
+
+ @Test
+ /**
+ * test the b:pageURI function
+ */
+ public void url_pageuri() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ String value = executeNewScript("b:pageURI()");
+ Assert.assertEquals("http://127.0.0.1:8090/test/test.html", value);
+ }
+
+ @Test
+ /**
+ * test the b:setHref function
+ */
+ public void url_setHref() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ String newurl = "http://127.0.0.1:8090/test/test.html#some_stuff";
+ String value = executeNewScript("b:setHref('" + newurl + "')");
+ Assert.assertEquals(newurl, driver.getCurrentUrl());
+ }
+
+ @Test
+ /**
+ * tests if the b:getLocation function returns the hash correctly
+ */
+ public void url_getLocation() throws Exception {
+ driver.get("http://127.0.0.1:8090/test/test.html");
+ String newurl = "http://127.0.0.1:8090/test/test.html#some_stuff";
+ executeNewScript("b:setHref('" + newurl + "')");
+ String value = executeNewScript("b:getLocation()/b:hash/text()");
+ Assert.assertEquals("#some_stuff", value);
+ }
+
+
+
+}
Modified: trunk/XQIB_Testing/src/ch/ethz/mxquery/testsuite/XQueryTestBase.java
===================================================================
--- trunk/XQIB_Testing/src/ch/ethz/mxquery/testsuite/XQueryTestBase.java 2011-09-15 13:44:40 UTC (rev 4442)
+++ trunk/XQIB_Testing/src/ch/ethz/mxquery/testsuite/XQueryTestBase.java 2011-09-16 11:35:48 UTC (rev 4443)
@@ -49,6 +49,10 @@
}
return new FirefoxDriver();
}
+
+ protected static String executeNewScript(String script) {
+ return (String) driver.executeScript("return xqib.executeNewScript(arguments[0])", new Object[] {script});
+ }
@AfterClass
public static void tearDown() throws Exception {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|