package com.google.gwt.query.client;\r
\r
import static com.google.gwt.query.client.GQuery.$;\r
-import static com.google.gwt.query.client.GQuery.document;\r
\r
import com.google.gwt.core.client.EntryPoint;\r
-import com.google.gwt.core.client.GWT;\r
-import com.google.gwt.dom.client.Document;\r
-import com.google.gwt.dom.client.Element;\r
-import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.event.dom.client.ClickEvent;\r
-import com.google.gwt.event.dom.client.ClickHandler;\r
import com.google.gwt.event.dom.client.FocusHandler;\r
import com.google.gwt.event.shared.GwtEvent;\r
import com.google.gwt.event.shared.HandlerRegistration;\r
-import com.google.gwt.query.client.impl.SelectorEngineImpl;\r
-import com.google.gwt.query.client.plugins.Events;\r
-import com.google.gwt.query.client.plugins.Widgets;\r
-import com.google.gwt.user.client.Event;\r
+import com.google.gwt.query.client.js.JsUtils;\r
+import com.google.gwt.query.client.plugins.effects.PropertiesAnimation;\r
+import com.google.gwt.query.client.plugins.effects.PropertiesAnimation.Easing;\r
import com.google.gwt.user.client.Timer;\r
-import com.google.gwt.user.client.ui.Button;\r
-import com.google.gwt.user.client.ui.FlowPanel;\r
-import com.google.gwt.user.client.ui.Label;\r
-import com.google.gwt.user.client.ui.RootPanel;\r
-import com.google.gwt.user.client.ui.SimplePanel;\r
-import com.google.gwt.user.client.ui.Widget;\r
\r
/**\r
* This module is thought to emulate a test environment similar to\r
public void onModuleLoad() {\r
try {\r
gwtSetUp();\r
- testEventsPlugin();\r
+ testPropertiesAnimationComputeEffects();\r
} catch (Exception ex) {\r
ex.printStackTrace();\r
$(e).html("").after("<div>ERROR: " + ex.getMessage() + "</div>");\r
}\r
}\r
\r
- public void testEventsPlugin() {\r
- $(e).html("<p>Content</p>");\r
-\r
- // click\r
- $("p", e).click(new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("color", "red");\r
- }\r
- }, new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("background", "green");\r
- }\r
- });\r
- $("p", e, Events.Events).trigger(Event.ONCLICK);\r
- assertEquals("red", $("p", e).css("color"));\r
- assertEquals("green", $("p", e).css("background-color"));\r
-\r
- // unbind\r
- $("p", e).css("color", "white");\r
- $("p", e).unbind(Event.ONCLICK);\r
- $("p", e).click();\r
- assertEquals("white", $("p", e).css("color"));\r
-\r
- // toggle\r
- $("p", e).unbind(Event.ONCLICK);\r
- $("p", e).toggle(new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("color", "red");\r
- }\r
- }, new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("color", "blue");\r
- }\r
- });\r
- $("p", e).click();\r
- assertEquals("red", $("p", e).css("color"));\r
- $("p", e).click();\r
- assertEquals("blue", $("p", e).css("color"));\r
-\r
- // one\r
- $("p", e).unbind(Event.ONCLICK);\r
- $("p", e).one(Event.ONCLICK, null, new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("color", "red");\r
- }\r
- });\r
- $("p", e).click();\r
- assertEquals("red", $("p", e).css("color"));\r
- $("p", e).css("color", "white");\r
- $("p", e).click();\r
- assertEquals("white", $("p", e).css("color"));\r
-\r
- // hover (mouseover, mouseout)\r
- $("p", e).hover(new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("background-color", "yellow");\r
- }\r
- }, new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("background-color", "white");\r
- }\r
- });\r
- $("p", e).trigger(Event.ONMOUSEOVER);\r
- assertEquals("yellow", $("p", e).css("background-color"));\r
- $("p", e).trigger(Event.ONMOUSEOUT);\r
- assertEquals("white", $("p", e).css("background-color"));\r
-\r
- // focus\r
- $("p", e).focus(new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("border", "1px dotted black");\r
- }\r
- });\r
- $("p", e).focus();\r
- assertEquals("black", $("p", e).css("border-top-color"));\r
- assertEquals("dotted", $("p", e).css("border-top-style"));\r
- assertEquals("1px", $("p", e).css("border-top-width"));\r
+ public void testPropertiesAnimationComputeEffects() {\r
+ $(e)\r
+ .html(\r
+ "<div id='parent' style='background-color: yellow; width: 100px; height: 200px; top:130px; position: absolute; left: 130px'><p id='child' style='background-color: pink; width: 100px; height: 100px; position: absolute; padding: 5px; margin: 0px'>Content 1</p></div>");\r
+ GQuery g = $("#child");\r
+ Properties prop1;\r
\r
- // blur\r
- $("p", e).blur(new Function() {\r
- public void f(Element elem) {\r
- $(elem).css("border", "");\r
- }\r
- });\r
- $("p", e).blur();\r
- assertEquals("", $("p", e).css("border"));\r
+ assertEquals("attr=marginTop value=-110px start=0 end=-110 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginTop", "-110px",\r
+ false).toString());\r
+ assertEquals("attr=marginLeft value=-110px start=0 end=-110 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginLeft", "-110px",\r
+ false).toString());\r
+ assertEquals("attr=top value=50% start=0 end=50 unit=%",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "top", "50%", false)\r
+ .toString());\r
+ assertEquals("attr=left value=50% start=0 end=50 unit=%",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "left", "50%", false)\r
+ .toString());\r
+ assertEquals("attr=width value=174px start=100 end=174 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "width", "174px", false)\r
+ .toString());\r
+ assertEquals("attr=height value=174px start=100 end=174 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "height", "174px", false)\r
+ .toString());\r
+ assertEquals("attr=padding value=20px start=5 end=20 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "padding", "20px", false)\r
+ .toString());\r
\r
- // key events\r
- $(e).html("<input type='text'/>");\r
- Function keyEventAction = new Function() {\r
- public boolean f(Event evnt) {\r
- GQuery gq = $(evnt);\r
- gq.val(gq.val() + Character.toString((char) evnt.getKeyCode()));\r
- return false;\r
- }\r
- };\r
- $("input", e).keypress(keyEventAction);\r
- $("input", e).keydown(keyEventAction);\r
- $("input", e).keyup(keyEventAction);\r
- $("input", e).focus();\r
- $("input", e).keydown('a');\r
- $("input", e).keypress('b');\r
- $("input", e).keyup('c');\r
- assertEquals("abc", $("input", e).val());\r
- }\r
- \r
- public void testUnbindMultipleEvents() {\r
- String content = "<p>content</p>";\r
- $(e).html(content);\r
- $(document).bind(Event.ONMOUSEMOVE, null, new Function() {\r
- public void f(Element e){\r
- $("p").css("color", "red");\r
- }\r
- });\r
- $(document).bind(Event.ONMOUSEUP, null, new Function(){\r
- public void f(Element e){\r
- $("p").css("color", "yellow");\r
- }\r
- });\r
- $(document).trigger(Event.ONMOUSEMOVE);\r
- assertEquals("red", $("p").css("color"));\r
- $(document).trigger(Event.ONMOUSEUP);\r
- assertEquals("yellow", $("p").css("color"));\r
- $("p").css("color", "black");\r
- $(document).unbind(Event.ONMOUSEUP|Event.ONMOUSEMOVE);\r
- $(document).trigger(Event.ONMOUSEMOVE);\r
- assertEquals("black", $("p").css("color"));\r
- $(document).trigger(Event.ONMOUSEUP);\r
- assertEquals("black", $("p").css("color"));\r
- }\r
- \r
- public void testGWTQueryCoreWidgets() {\r
- final FlowPanel p = new FlowPanel();\r
- Button b = new Button("test");\r
- RootPanel.get().add(b);\r
- RootPanel.get().add(p);\r
- \r
- int nitems = 4;\r
- final String label1 = "I'm the label ";\r
- final String label2 = "Finally I'm just a simple label";\r
- \r
- for (int i = 0; i < nitems; i++) {\r
- Label l = new Label(label1 + i);\r
- p.add(l);\r
- }\r
- $("<div>whatever</div").appendTo($(p));\r
- \r
- b.addClickHandler(new ClickHandler() {\r
- public void onClick(ClickEvent event) {\r
- $(".gwt-Label", p).each(new Function() {\r
- @Override\r
- public void f(Widget w) {\r
- Label l = (Label) w;\r
- l.setText(label2);\r
- }\r
- });\r
- }\r
- });\r
- \r
- $(".gwt-Label", p).each(new Function() {\r
- @Override\r
- public Object f(Widget w, int i) {\r
- assertEquals(label1 + i, ((Label)w).getText());\r
- return null;\r
- }\r
- });\r
- \r
- $(b).click();\r
-\r
- $(".gwt-Label", p).each(new Function() {\r
- public void f(Element e) {\r
- assertEquals(label2, $(e).text());\r
- }\r
- });\r
- \r
- $("div", p).each(new Function() {\r
- public void f(Element e) {\r
- // Just to avoid the exception when non-widget elements match\r
- }\r
- public void f(Widget w) {\r
- if (w instanceof Label) {\r
- assertEquals(label2, $(e).text());\r
- }\r
- }\r
- });\r
- \r
- p.removeFromParent();\r
- b.removeFromParent();\r
- }\r
- \r
- public void testGQueryWidgets() {\r
- final Button b1 = new Button("click-me");\r
- RootPanel.get().add(b1);\r
- GQuery g = $(b1);\r
- Button b2 = (Button) g.as(Widgets.Widgets).widget();\r
- assertEquals(b1, b2);\r
- \r
- \r
- b2 = (Button)$("<button>Click-me</button>").appendTo(document).asWidget();\r
- b2.addClickHandler(new ClickHandler() {\r
- public void onClick(ClickEvent event) {\r
- $(b1).css("color", "red");\r
- }\r
- });\r
- \r
- b2.click();\r
- assertEquals("red", $(b1).css("color"));\r
- }\r
- \r
- public void testSiblings() {\r
- String content = "<table><tr ><td class='r1'>1</td><td>2</td></tr><tr><td>1</td><td>2</td></tr></table>";\r
- $(e).html(content);\r
- $(".r1").css("background", "red");\r
- \r
- $(".r1").hover(new Function() {\r
- public void f(Element e) {\r
- $(e).add($(e).siblings()).text("A");\r
- }\r
- },new Function() {\r
- public void f(Element e) {\r
- $(e).add($(e).siblings()).text("B");\r
- }\r
- });\r
- }\r
- \r
- \r
- public void testNamedBinding() {\r
- $(e).html("<p>Content</p>");\r
+ prop1 = GQuery.$$("marginTop: '-110px', marginLeft: '-110px', top: '50%', left: '50%', width: '174px', height: '174px', padding: '20px'");\r
+ PropertiesAnimation an = new PropertiesAnimation(Easing.SWING, g.get(0), prop1);\r
+ an.onStart();\r
+ an.onComplete();\r
\r
- $("p", e, Events.Events).bind("click.first.namespace", null, new Function() {; \r
- public void f(Element elem) {\r
- $(elem).css("color", "red");\r
- }\r
- });\r
- $("p", e, Events.Events).bind("click.second.namespace", null, new Function() {; \r
- public void f(Element elem) {\r
- $(elem).css("background", "green");\r
- }\r
- });\r
- $("p", e, Events.Events).bind("click", null, new Function() {; \r
- public void f(Element elem) {\r
- $(elem).css("fontSize", "24px");\r
- }\r
- });\r
- $("p", e, Events.Events).trigger(Event.ONCLICK);\r
- assertEquals("red", $("p", e).css("color"));\r
- assertEquals("green", $("p", e).css("background-color"));\r
- assertEquals(24.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));\r
- \r
- $("p", e).css("color","").css("background-color","").css("fontSize", "12px");\r
- assertFalse("red".equalsIgnoreCase($("p", e).css("color")));\r
- assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));\r
- assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));\r
+ assertEquals("attr=marginTop value=0 start=-110 end=0 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginTop", "0", false)\r
+ .toString());\r
+ assertEquals("attr=marginLeft value=0 start=-110 end=0 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginLeft", "0", false)\r
+ .toString());\r
+ assertEquals("attr=top value=0% start=50 end=0 unit=%", PropertiesAnimation\r
+ .computeFxProp(g.get(0), "top", "0%", false).toString());\r
+ assertEquals("attr=left value=0% start=50 end=0 unit=%",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "left", "0%", false)\r
+ .toString());\r
+ assertEquals("attr=width value=100px start=174 end=100 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "width", "100px", false)\r
+ .toString());\r
+ assertEquals("attr=height value=100px start=174 end=100 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "height", "100px", false)\r
+ .toString());\r
+ assertEquals("attr=padding value=5px start=20 end=5 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "padding", "5px", false)\r
+ .toString());\r
\r
- $("p", e, Events.Events).unbind("click.first.namespace");\r
- $("p", e, Events.Events).trigger(Event.ONCLICK);\r
- assertFalse("red".equalsIgnoreCase($("p", e).css("color")));\r
- assertEquals("green", $("p", e).css("background-color"));\r
- assertEquals(24.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));\r
- \r
- \r
- $("p", e).css("color","").css("background-color","").css("fontSize", "12px");\r
- assertFalse("red".equalsIgnoreCase($("p", e).css("color")));\r
- assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));\r
- assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));\r
+ prop1 = GQuery.$$("marginTop: '0', marginLeft: '0', top: '0%', left: '0%', width: '100px', height: '100px', padding: '5px'");\r
+ an = new PropertiesAnimation(Easing.SWING, g.get(0), prop1);\r
+ an.onStart();\r
+ an.onComplete();\r
\r
- $("p", e, Events.Events).unbind("click");\r
- $("p", e, Events.Events).trigger(Event.ONCLICK);\r
- assertFalse("red".equalsIgnoreCase($("p", e).css("color")));\r
- assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));\r
- assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));\r
- }\r
- \r
- public void testSelectorEngineNative() {\r
- SelectorEngineImpl selEng = GWT.create(SelectorEngineImpl.class);\r
- executeSelectorEngineTests(selEng);\r
+ assertEquals("attr=marginTop value=-110px start=0 end=-110 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginTop", "-110px",\r
+ false).toString());\r
+ assertEquals("attr=marginLeft value=-110px start=0 end=-110 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "marginLeft", "-110px",\r
+ false).toString());\r
+ assertEquals("attr=top value=50% start=0 end=50 unit=%",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "top", "50%", false)\r
+ .toString());\r
+ assertEquals("attr=left value=50% start=0 end=50 unit=%",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "left", "50%", false)\r
+ .toString());\r
+ assertEquals("attr=width value=174px start=100 end=174 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "width", "174px", false)\r
+ .toString());\r
+ assertEquals("attr=height value=174px start=100 end=174 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "height", "174px", false)\r
+ .toString());\r
+ assertEquals("attr=padding value=20px start=5 end=20 unit=px",\r
+ PropertiesAnimation.computeFxProp(g.get(0), "padding", "20px", false)\r
+ .toString());\r
}\r
\r
+ \r
public void runTestJQuery() {\r
- GQUtils.loadScript("jquery-1.3.1.js", "jq");\r
+ JsUtils.loadScript("jquery-1.3.1.js", "jq");\r
new Timer(){\r
private int cont = 0;\r
private native boolean loaded(String func) /*-{\r
}-*/;\r
public void run() {\r
if (cont++ > 10 || loaded("$")) {\r
- testPropertiesAnimationComputeEffects();\r
+ testCompare();\r
} else {\r
schedule(100);\r
}\r
}\r
public void validateCurBoth(String selector, String... attrs) {\r
for (String attr: attrs) {\r
- String gs = Double.toString(GQUtils.cur($(selector).get(0), attr, true)).replaceFirst("\\.\\d+$", "");\r
+ String gs = Double.toString($(selector).cur(attr, true)).replaceFirst("\\.\\d+$", "");\r
String js = evalJQurey("$.cur($('" + selector + "').get(0), '" + attr + "', true)");\r
System.out.println(selector + " " + attr + " " + gs + " " + js + " " + (gs.equals(js)));\r
assertEquals(gs, js);\r
}\r
}\r
\r
- public void testPropertiesAnimationComputeEffects() {\r
+ public void testCompare() {\r
$(e).html("<div id='parent' style='background-color: yellow; width: 100px; height: 200px; top:130px; position: absolute; left: 130px'><p id='child' style='background-color: pink; width: 100px; height: 100px; position: absolute; padding: 5px'>Content 1</p></div>");\r
- \r
GQuery g = $("#child");\r
Properties prop1;\r
\r
prop1 = GQuery.$$("marginTop: '0', marginLeft: '0', top: '0%', left: '0%', width: '100px', height: '100px', padding: '5px'");\r
g.css(prop1);\r
validateCurBoth("#child", prop1.keys());\r
- \r
}\r
\r
\r
- protected interface AllSelectors extends Selectors {\r
- // @Selector("h1[id]:contains(Selectors)")\r
- // NodeList<Element> h1IdContainsSelectors();\r
- // @Selector("*:first")\r
- // NodeList<Element> allFirst();\r
- // @Selector("div[class!=madeup]")\r
- // NodeList<Element> divWithClassNotContainsMadeup();\r
- // @Selector("div, p a")\r
- // NodeList<Element> divCommaPA();\r
- // @Selector("p:contains(selectors)")\r
- // NodeList<Element> pContainsSelectors();\r
- @Selector("a[href][lang][class]")\r
- NodeList<Element> aHrefLangClass();\r
- @Selector("*:checked")\r
- NodeList<Element> allChecked();\r
- @Selector("body")\r
- NodeList<Element> body();\r
- @Selector("body div")\r
- NodeList<Element> bodyDiv();\r
- @Selector("div .example")\r
- NodeList<Element> divExample();\r
- @Selector("div > div")\r
- NodeList<Element> divGtP();\r
- @Selector("div:not(.example)")\r
- NodeList<Element> divNotExample();\r
- @Selector("div p")\r
- NodeList<Element> divP();\r
- @Selector("div p a")\r
- NodeList<Element> divPA();\r
- @Selector("div + p")\r
- NodeList<Element> divPlusP();\r
- @Selector("div[class^=exa][class$=mple]")\r
- NodeList<Element> divPrefixExaSuffixMple();\r
- @Selector("div #title")\r
- NodeList<Element> divSpaceTitle();\r
- @Selector("div ~ p")\r
- NodeList<Element> divTildeP();\r
- @Selector("div[class]")\r
- NodeList<Element> divWithClass();\r
- @Selector("div[class~=dialog]")\r
- NodeList<Element> divWithClassContainsDialog();\r
- @Selector("div[class*=e]")\r
- NodeList<Element> divWithClassContainsE();\r
- @Selector("div[class=example]")\r
- NodeList<Element> divWithClassExample();\r
- @Selector("div[class~=dialog]")\r
- NodeList<Element> divWithClassListContainsDialog();\r
- @Selector("div[class^=exa]")\r
- NodeList<Element> divWithClassPrefixExa();\r
- @Selector("div[class$=mple]")\r
- NodeList<Element> divWithClassSuffixMple();\r
- @Selector("p:first-child")\r
- NodeList<Element> firstChild();\r
- @Selector("h1#title")\r
- NodeList<Element> h1Title();\r
- @Selector("h1#title + em > span")\r
- NodeList<Element> h1TitlePlusEmGtSpan();\r
- @Selector("p:last-child")\r
- NodeList<Element> lastChild();\r
- @Selector(".note")\r
- NodeList<Element> note();\r
- @Selector("p:nth-child(n)")\r
- NodeList<Element> nthChild();\r
- @Selector("p:nth-child(2n)")\r
- NodeList<Element> nThChild2n();\r
- @Selector("p:nth-child(2n+1)")\r
- NodeList<Element> nThChild2nPlus1();\r
- @Selector("p:nth-child(even)")\r
- NodeList<Element> nThChildEven();\r
- @Selector("p:nth-child(odd)")\r
- NodeList<Element> nThChildOdd();\r
- @Selector("p:only-child")\r
- NodeList<Element> onlyChild();\r
- @Selector("#title")\r
- NodeList<Element> title();\r
- @Selector("#title,h1#title")\r
- NodeList<Element> titleAndh1Title();\r
- @Selector("ul .tocline2")\r
- NodeList<Element> ulTocline2();\r
- @Selector("ul.toc li.tocline2")\r
- NodeList<Element> ulTocLiTocLine2();\r
- }\r
- \r
- public void testCompiledSelectors() {\r
- final AllSelectors sel = GWT.create(AllSelectors.class);\r
- $(e).html(getTestContent());\r
-\r
- // TODO: fix these selectors\r
- // sel.h1IdContainsSelectors().getLength()\r
- // sel.allFirst().getLength()\r
- // sel.divWithClassNotContainsMadeup().getLength()\r
- // sel.divCommaPA().getLength()\r
- // sel.pContainsSelectors().getLength()\r
- // assertArrayContains(sel.title().getLength(), 1);\r
-\r
- assertEquals(1, sel.body().getLength());\r
- assertArrayContains(sel.bodyDiv().getLength(), 53, 54, 55);\r
- sel.setRoot(e);\r
- assertArrayContains(sel.aHrefLangClass().getLength(), 0, 1);\r
- assertArrayContains(sel.allChecked().getLength(), 1);\r
- assertArrayContains(sel.divExample().getLength(), 43);\r
- assertArrayContains(sel.divGtP().getLength(), 51, 52);\r
- assertArrayContains(sel.divNotExample().getLength(), 9, 10);\r
- assertArrayContains(sel.divP().getLength(), 324);\r
- assertArrayContains(sel.divPA().getLength(), 84);\r
- assertArrayContains(sel.divPlusP().getLength(), 22);\r
- assertArrayContains(sel.divPrefixExaSuffixMple().getLength(), 43);\r
- assertArrayContains(sel.divSpaceTitle().getLength(), 1);\r
- assertArrayContains(sel.divTildeP().getLength(), 183);\r
- assertArrayContains(sel.divWithClass().getLength(), 51, 52);\r
- assertArrayContains(sel.divWithClassContainsDialog().getLength(), 1);\r
- assertArrayContains(sel.divWithClassContainsE().getLength(), 50);\r
- assertArrayContains(sel.divWithClassExample().getLength(), 43);\r
- assertArrayContains(sel.divWithClassListContainsDialog().getLength(), 1);\r
- assertArrayContains(sel.divWithClassPrefixExa().getLength(), 43);\r
- assertArrayContains(sel.divWithClassSuffixMple().getLength(), 43);\r
- assertArrayContains(sel.firstChild().getLength(), 54);\r
- assertArrayContains(sel.h1Title().getLength(), 1);\r
- assertArrayContains(sel.h1TitlePlusEmGtSpan().getLength(), 1);\r
- assertArrayContains(sel.lastChild().getLength(), 19);\r
- assertArrayContains(sel.note().getLength(), 14);\r
- assertArrayContains(sel.nthChild().getLength(), 324);\r
- assertArrayContains(sel.nThChild2n().getLength(), 159);\r
- assertArrayContains(sel.nThChild2nPlus1().getLength(), 165);\r
- assertArrayContains(sel.nThChildEven().getLength(), 159);\r
- assertArrayContains(sel.nThChildOdd().getLength(), 165);\r
- assertArrayContains(sel.onlyChild().getLength(), 3);\r
- assertArrayContains(sel.titleAndh1Title().getLength(), 0, 1);\r
- assertArrayContains(sel.ulTocline2().getLength(), 12);\r
- assertArrayContains(sel.ulTocLiTocLine2().getLength(), 12);\r
- } \r
- private void executeSelectorEngineTests(SelectorEngineImpl selEng) {\r
- $(e).html(getTestContent());\r
-\r
- assertArrayContains(selEng.select("body", Document.get()).getLength(), 1);\r
- assertArrayContains(selEng.select("body div", Document.get()).getLength(), 53, 54, 55);\r
-\r
- assertArrayContains(selEng.select("h1[id]:contains(Selectors)", e).getLength(), 1);\r
- assertArrayContains(selEng.select("div[class!=madeup]", e).getLength(), 52, 53);\r
- assertArrayContains(selEng.select("div, p a", e).getLength(), 136, 137, 138);\r
- assertArrayContains(selEng.select("p:contains(selectors)", e).getLength(), 54, 55);\r
- assertArrayContains(selEng.select("a[href][lang][class]", e).getLength(), 1);\r
- assertArrayContains(selEng.select("*:checked", e).getLength(), 1);\r
- assertArrayContains(selEng.select("div .example", e).getLength(), 43);\r
- assertArrayContains(selEng.select("div > div", e).getLength(), 51, 52);\r
- assertArrayContains(selEng.select("div:not(.example)", e).getLength(), 9, 10);\r
- assertArrayContains(selEng.select("div p", e).getLength(), 324);\r
- assertArrayContains(selEng.select("div p a", e).getLength(), 85, 84);\r
- assertArrayContains(selEng.select("div + p", e).getLength(), 22);\r
- assertArrayContains(selEng.select("div[class^=exa][class$=mple]", e).getLength(), 43);\r
- assertArrayContains(selEng.select("div #title", e).getLength(), 1);\r
- assertArrayContains(selEng.select("div ~ p", e).getLength(), 183);\r
- assertArrayContains(selEng.select("div[class]", e).getLength(), 51, 52);\r
- assertArrayContains(selEng.select("div[class~=dialog]", e).getLength(), 1);\r
- assertArrayContains(selEng.select("div[class*=e]", e).getLength(), 50);\r
- assertArrayContains(selEng.select("div[class=example]", e).getLength(), 43);\r
- assertArrayContains(selEng.select("div[class~=dialog]", e).getLength(), 1);\r
- assertArrayContains(selEng.select("div[class^=exa]", e).getLength(), 43);\r
- assertArrayContains(selEng.select("div[class$=mple]", e).getLength(), 43);\r
- assertArrayContains(selEng.select("p:first-child", e).getLength(), 54);\r
- assertArrayContains(selEng.select("h1#title", e).getLength(), 1);\r
- assertArrayContains(selEng.select("h1#title + em > span", e).getLength(), 1);\r
- assertArrayContains(selEng.select("p:last-child", e).getLength(), 19, 22);\r
- assertArrayContains(selEng.select(".note", e).getLength(), 14);\r
- assertArrayContains(selEng.select("p:nth-child(n)", e).getLength(), 324);\r
- assertArrayContains(selEng.select("p:nth-child(2n)", e).getLength(), 159);\r
- assertArrayContains(selEng.select("p:nth-child(2n+1)", e).getLength(), 165);\r
- assertArrayContains(selEng.select("p:nth-child(even)", e).getLength(), 159);\r
- assertArrayContains(selEng.select("p:nth-child(odd)", e).getLength(), 165);\r
- assertArrayContains(selEng.select("p:only-child", e).getLength(), 3);\r
- assertArrayContains(selEng.select("#title", e).getLength(), 1);\r
- assertArrayContains(selEng.select("#title, h1#title", e).getLength(), 1);\r
- assertArrayContains(selEng.select("ul.toc li.tocline2", e).getLength(), 12); \r
- assertArrayContains(selEng.select("h1[id]:contains(Selectors)", e).getLength(), 1);\r
- }\r
-\r
// This method is used to initialize a huge html String, because\r
// java 1.5 has a limitation in the size of static strings.\r
private String getTestContent() {\r