/*
* (C) Copyright 2006-2008 Nuxeo SA (http://nuxeo.com/) and others.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Contributors:
* Alexandre Russel
*
* $Id$
*/
package org.nuxeo.ecm.platform.annotations.gwt.client.util;
import java.util.List;
import org.nuxeo.ecm.platform.annotations.gwt.client.AbstractDocumentGWTTest;
import com.google.gwt.dom.client.Document;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Node;
import com.google.gwt.dom.client.NodeList;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.user.client.ui.RootPanel;
/**
* @author Alexandre Russel
*/
public class GwtTestXPathUtil extends AbstractDocumentGWTTest {
private final XPathUtil xPathUtil = new XPathUtil();
@SuppressWarnings("static-access")
public void testGetGetXPath() {
createDocument();
NodeList<Element> el = RootPanel.get().getBodyElement().getElementsByTagName("span");
assertNotNull(el);
Node node = el.getItem(0);
assertNotNull(node);
String xpath = xPathUtil.getXPath(node);
assertNotNull(xpath);
assertEquals("/html[0]/body[0]/div[0]/div[0]/div[0]/nobr[0]/span[0]", xpath.toLowerCase());
}
public void testGetNode() {
createDocument();
Node node = xPathUtil.getNode("/html[0]/body[0]/div[0]/div[0]/div[0]/nobr[0]", Document.get()).get(0);
assertNotNull(node);
assertEquals(node.getNodeName().toLowerCase(), "nobr");
List<Node> nodes = xPathUtil.getNode("//img", Document.get());
assertEquals(1, nodes.size());
}
// test fail in mvn, succeed in eclipse ...
public void _testGetXPathDecoratedDocument() {
createDocument();
List<Node> nodes = xPathUtil.getNode("/html[0]/body[0]/div[0]/b[0]/span[1]", Document.get());
assertNotNull(nodes);
Node node = nodes.get(0);
SpanElement span = SpanElement.as(node).cast();
assertNotNull(span);
assertEquals("c", span.getInnerHTML());
node = RootPanel.get("myspan").getElement();
String xpath = xPathUtil.getXPath(node);
assertEquals(xpath.toLowerCase(), "/html[0]/body[0]/div[0]/b[0]/span[1]");
}
public void testGetShortLength() {
assertEquals(xPathUtil.getShortLength("a\nb\n\nc"), 3);
}
@Override
public String getInnerHtml() {
return super.getInnerHtml()
+ "<b><span class=\"decorate decorate1\">a</span><span>b</span><span id=\"myspan\">c</span></b>";
}
}