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

Reply via email to