Author: michiel
Date: 2010-03-22 17:25:54 +0100 (Mon, 22 Mar 2010)
New Revision: 41562
Added:
mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
mmbase/trunk/core/src/test/java/org/mmbase/util/xml/BuilderReaderTest.java
Modified:
mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
mmbase/trunk/core/src/test/java/org/mmbase/datatypes/DataTypesTest.java
Log:
test case for CloneUtil
Copied:
mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java (from
rev 41561,
mmbase/branches/MMBase-1_9/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java)
===================================================================
--- mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
(rev 0)
+++ mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/CloneUtilTest.java
2010-03-22 16:25:54 UTC (rev 41562)
@@ -0,0 +1,92 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+
+package org.mmbase.bridge.util;
+
+import org.mmbase.bridge.*;
+import org.mmbase.bridge.mock.*;
+import org.mmbase.datatypes.*;
+import org.mmbase.storage.search.*;
+import java.util.*;
+import org.junit.*;
+import static org.junit.Assert.*;
+import static org.junit.Assume.*;
+
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @version $Id: QueriesTest.java 40323 2010-01-04 13:43:05Z michiel $
+ */
+public class CloneUtilTest {
+
+ private static final String REMOTE_URI =
"rmi://127.0.0.1:1111/exampleremotecontext";
+ private static Cloud remoteCloud;
+
+
+ @BeforeClass
+ public static void setup() throws Exception {
+ //MockCloudContext.getInstance().addCore();
+
//MockCloudContext.getInstance().addNodeManagers(MockBuilderReader.getBuilderLoader().getChildResourceLoader("mynews"));
+ try {
+ CloudContext c = ContextProvider.getCloudContext(REMOTE_URI);
+ remoteCloud = c.getCloud("mmbase", "class", null);
+ System.out.println("Found remote cloud " + remoteCloud);
+ } catch (Exception e) {
+ System.err.println("Cannot get RemoteCloud. (" + e.getMessage() +
"). Some tests will be skipped. (but reported as succes: see
http://jira.codehaus.org/browse/SUREFIRE-542)");
+ System.err.println("You can start up a test-environment for remote
tests: trunk/example-webapp$ mvn jetty:run");
+ remoteCloud = null;
+ }
+ }
+
+
+
+
+ @Test
+ public void cloneRelation() {
+ assumeNotNull(remoteCloud);
+ Node mag = remoteCloud.getNode("default.mags");
+
+ {
+ Relation rel = mag.getRelations("posrel", "news").get(0);
+ Node news = rel.getDestination();
+ assertEquals("news", news.getNodeManager().getName());
+
+ Node clone = CloneUtil.cloneNode(news);
+ assertEquals("news", clone.getNodeManager().getName());
+ clone.commit();
+ int number = clone.getNumber();
+ System.out.println("Created " + number);
+ assertTrue(number > 0);
+ Relation relClone = CloneUtil.cloneRelation(rel);
+ relClone.setDestination(clone);
+ assertEquals(number, relClone.getDestination().getNumber());
+ relClone.commit();
+ assertEquals(number, relClone.getDestination().getNumber());
+ }
+ {
+ Node clone = CloneUtil.cloneNode(mag);
+ clone.setValue("title", "clone of " + mag.getStringValue("title"));
+ clone.commit();
+ System.out.println("Created " + clone.getNumber());
+ RelationIterator news = mag.getRelations("posrel",
remoteCloud.getNodeManager("news"), "destination").relationIterator();
+ while (news.hasNext()) {
+ Relation rel = news.nextRelation();
+ Relation relclone = CloneUtil.cloneRelation(rel);
+ relclone.setSource(clone);
+ assertEquals(relclone.getIntValue("snumber"),
clone.getNumber());
+ relclone.commit();
+ assertEquals(relclone.getIntValue("snumber"),
clone.getNumber());
+ System.out.println("Created " +
relclone.getFunctionValue("gui", null));
+ }
+ assertEquals(mag.countRelations(), clone.countRelations());
+ }
+ }
+}
Modified:
mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
===================================================================
--- mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
2010-03-22 16:25:06 UTC (rev 41561)
+++ mmbase/trunk/core/src/test/java/org/mmbase/bridge/util/QueriesTest.java
2010-03-22 16:25:54 UTC (rev 41562)
@@ -205,6 +205,7 @@
NodeQuery q = Queries.createRelatedNodesQuery(node,
cloud.getNodeManager("news"), "posrel", "destination");
String before = q.toSql();
List<SortOrder> sos = Queries.addSortOrders(q, "posrel.pos,number",
"UP");
+ Queries.sortUniquely(q);
assertEquals(q.toSql() + sos, 2, sos.size());
assertEquals("" + node.getNumber(),
Queries.getSortOrderFieldValue(node, sos.get(1)).toString());
@@ -292,7 +293,7 @@
if (pref1 != null) n1 = n1.getNodeValue(pref1 + ".number");
if (pref2 != null) n2 = n2.getNodeValue(pref2 + ".number");
- assertEquals(n1, n2);
+ assertEquals(n1.getNumber(), n2.getNumber());
}
}
@@ -308,7 +309,8 @@
// implementation based on NodeQuery
NodeQuery q = Queries.createRelatedNodesQuery(node,
cloud.getNodeManager("news"), "posrel", "destination");
- Queries.addSortOrders(q, "posrel.pos,number", "DOWN");
+ Queries.addSortOrders(q, "posrel.pos", "DOWN");
+ Queries.sortUniquely(q);
List<Node> relatedNodes2 = Queries.getRelatedNodesInTransaction(node,
q); // outside a transaction it works too
System.out.println(toString(relatedNodes, "news") + " =? " +
toString(relatedNodes2, null));
Modified:
mmbase/trunk/core/src/test/java/org/mmbase/datatypes/DataTypesTest.java
===================================================================
--- mmbase/trunk/core/src/test/java/org/mmbase/datatypes/DataTypesTest.java
2010-03-22 16:25:06 UTC (rev 41561)
+++ mmbase/trunk/core/src/test/java/org/mmbase/datatypes/DataTypesTest.java
2010-03-22 16:25:54 UTC (rev 41562)
@@ -431,6 +431,8 @@
CloudThreadLocal.unbind();
}
+
+
@Test
public void lengthEnforce() throws DependencyException {
String xml = "<datatype base='string'><length value='6'
enforce='always' /></datatype>";
Added:
mmbase/trunk/core/src/test/java/org/mmbase/util/xml/BuilderReaderTest.java
===================================================================
--- mmbase/trunk/core/src/test/java/org/mmbase/util/xml/BuilderReaderTest.java
(rev 0)
+++ mmbase/trunk/core/src/test/java/org/mmbase/util/xml/BuilderReaderTest.java
2010-03-22 16:25:54 UTC (rev 41562)
@@ -0,0 +1,139 @@
+/*
+
+This software is OSI Certified Open Source Software.
+OSI Certified is a certification mark of the Open Source Initiative.
+
+The license (Mozilla version 1.0) can be read at the MMBase site.
+See http://www.MMBase.org/license
+
+*/
+package org.mmbase.util.xml;
+
+import org.xml.sax.*;
+import org.w3c.dom.*;
+import java.io.*;
+
+import org.junit.*;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Michiel Meeuwissen
+ * @verion $Id: DocumentReaderTest.java 38306 2009-09-01 15:58:19Z michiel $
+ */
+public class BuilderReaderTest {
+
+
+ private Element getElement(String s) {
+ DocumentReader reader = new DocumentReader(new InputSource(new
StringReader(s)), false);
+ return reader.getRootElement();
+ }
+
+ @Test
+ public void appendChild() {
+ Element parent = getElement("<a />");
+ {
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res + " != <a/>", res, "<a/>");
+ }
+
+ Element b = parent.getOwnerDocument().createElement("b");
+ DocumentReader.appendChild(parent, b, "b");
+ {
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/></a>");
+ }
+ }
+ @Test
+ public void appendChild2() {
+ Element parent = getElement("<a><b /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b,c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><c/></a>");
+ }
+ @Test
+ public void appendChild3() {
+ Element parent = getElement("<a></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b,c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><c/></a>");
+ }
+ @Test
+ public void appendChild4() {
+ Element parent = getElement("<a><b /><b /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b,c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><b/><c/></a>");
+ }
+ @Test
+ public void appendChild5() {
+ Element parent = getElement("<a><b /><b /><d /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b,c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><b/><c/><d/></a>");
+ }
+ @Test
+ public void appendChild6() {
+ Element parent = getElement("<a><b /><b /><d /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><b/><c/><d/></a>");
+ }
+ @Test
+ public void appendChild7() {
+ Element parent = getElement("<a><b /><b /><c id='t' /><d /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><b/><c/><c id=\"t\"/><d/></a>");
+ }
+ @Test
+ public void appendChild8() {
+ Element parent = getElement("<a><b /><b /><c id='t' /><d /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "b,c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><b/><b/><c id=\"t\"/><c/><d/></a>");
+ }
+ @Test
+ public void appendChild9() {
+ Element parent = getElement("<a><x /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "(x|y),c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><x/><c/></a>");
+ }
+ @Test
+ public void appendChild10() {
+ Element parent = getElement("<a><q /></a>");
+ Element c = parent.getOwnerDocument().createElement("c");
+ DocumentReader.appendChild(parent, c, "(x|y),c");
+ String res = XMLWriter.write(parent, false, true);
+ assertEquals(res, res, "<a><c/><q/></a>");
+ }
+
+ private void testToDocument(String s) {
+ Element parent1 = getElement(s);
+ Element parent2 =
DocumentReader.toDocument(parent1).getDocumentElement();
+ String res1 = XMLWriter.write(parent1, false, true);
+ String res2 = XMLWriter.write(parent2, false, true);
+ assertTrue(res1 + "!=" + res2, res1.equals(res2));
+ }
+ @Test
+ public void toDocument() {
+ String[] cases = { "<a><b /></a>",
+ "<a xml:lang='nl'><b /></a>",
+ "<a xml:lang='nl' c='d'><b /></a>",
+ "<a xml:lang='nl' c='d'><b /><b /></a>",
+ "<a xml:lang='nl' c='d'><b /><!-- hoi --><b /></a>",
+ "<a xml:lang='nl'><b>abc</b><b
c='d'>hoi<c/></b></a>"};
+ for (String element : cases) {
+ testToDocument(element);
+ }
+ }
+}
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs