Ver Fonte

tests: xml

Ranides Atterwim há 10 anos atrás
pai
commit
b3f8e7bd24

+ 2 - 2
assira/src/main/java/net/ranides/assira/xml/impl/W3Element.java

@@ -233,8 +233,8 @@ public class W3Element extends CElement implements XMLElement {
     @Override
     public XMLElements siblings() {
         return new CElements(new CQueryBuilder<Node>()
-            .addIterable(() -> ForwardIterator.produce(node, Node::getPreviousSibling))
-            .addIterable(() -> ForwardIterator.produce(node, Node::getNextSibling))
+            .addIterable(() -> ForwardIterator.produce(node.getPreviousSibling(), Node::getPreviousSibling))
+            .addIterable(() -> ForwardIterator.produce(node.getNextSibling(), Node::getNextSibling))
             .result()
             .map(W3Element::new)
         );

+ 2 - 0
assira/src/test/java/net/ranides/assira/TestFiles.java

@@ -29,6 +29,8 @@ public final class TestFiles {
     
     public static final File XML_4 = new File("src/test/resources/xml/writer4.xml");
     
+    public static final File XML_5 = new File("src/test/resources/xml/writer5.xml");
+    
     public static final File XML_ELEMENTS = new File("src/test/resources/xml/elements.xml");
     
 }

+ 3 - 3
assira/src/test/java/net/ranides/assira/xml/XMLWriterTest.java

@@ -14,7 +14,6 @@ import net.ranides.assira.text.IOStrings;
 import org.junit.Test;
 import static org.junit.Assert.*;
 import static net.ranides.assira.xml.XMLQuery.$;
-import static net.ranides.assira.xml.XMLQuery.$;
 
 /**
  *
@@ -31,7 +30,7 @@ public class XMLWriterTest {
         doc.find("? mail[3]").text("office@c...");
         doc.find("? mail/@type").text("hidden");
         
-        String out1 = new XMLWriter().toString(doc);
+        String out1 = new XMLWriter().indent(0).toString(doc);
         
         String out2 = new XMLWriter()
             .param(XMLOptions.DOCTYPE_PUBLIC, "yes")
@@ -44,7 +43,8 @@ public class XMLWriterTest {
             .param(XMLOptions.DOCTYPE_PUBLIC, "")
             .param(XMLOptions.INDENT, "yes")
             .param(XMLOptions.INDENT_AMOUNT, "2")
-            .write(doc);
+            .write(doc)
+            .close();
         
         String out4 = new XMLWriter()
             .indent(4)

+ 2 - 3
assira/src/test/java/net/ranides/assira/xml/impl/CElementsTest.java

@@ -29,7 +29,6 @@ import org.junit.Test;
 import net.ranides.assira.xml.XMLSelector;
 import net.ranides.assira.xml.XMLWriter;
 import static net.ranides.assira.xml.XMLQuery.$;
-import static net.ranides.assira.xml.XMLQuery.$;
 
 /**
  *
@@ -264,8 +263,8 @@ public class CElementsTest {
     public void testSiblings() {
         XMLElement doc = $(TestFiles.XML_INPUT);
         
-        List<String> exp1 = Arrays.asList("Ranides Atterwim", "", "C2A7B5", "", "ranides", "", "Ranides Atterwim", "", "ranides@ccms.net", "", "contact@ranides.net", "", "undefined", "", "F76A33", "", "admin", "", "undefined", "", "admin@ccms.net", "", "Sarenka", "", "D046A3", "", "saren", "", "Sarenka", "", "saren@ccms.net", "");
-        List<String> exp2 = Arrays.asList("Ranides Atterwim", "C2A7B5", "ranides", "Ranides Atterwim", "ranides@ccms.net", "contact@ranides.net", "undefined", "F76A33", "admin", "undefined", "admin@ccms.net", "Sarenka", "D046A3", "saren", "Sarenka", "saren@ccms.net");
+        List<String> exp1 = Arrays.asList("", "C2A7B5", "", "ranides", "", "", "ranides@ccms.net", "", "contact@ranides.net", "", "", "F76A33", "", "admin", "", "", "admin@ccms.net", "", "", "D046A3", "", "saren", "", "", "saren@ccms.net", "");
+        List<String> exp2 = Arrays.asList("C2A7B5", "ranides", "ranides@ccms.net", "contact@ranides.net", "F76A33", "admin", "admin@ccms.net", "D046A3", "saren", "saren@ccms.net");
         List<String> exp3 = Arrays.asList("ranides@ccms.net", "contact@ranides.net", "admin@ccms.net", "saren@ccms.net");
         List<String> exp4 = Arrays.asList("ranides", "admin", "saren");
         

+ 105 - 0
assira/src/test/java/net/ranides/assira/xml/impl/W3ElementTest.java

@@ -0,0 +1,105 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.xml.impl;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+import net.ranides.assira.TestFiles;
+import net.ranides.assira.reflection.IClass;
+import net.ranides.assira.text.Charsets;
+import net.ranides.assira.text.IOStrings;
+import net.ranides.assira.xml.XMLElement;
+import static net.ranides.assira.xml.XMLQuery.$;
+import net.ranides.assira.xml.XMLSelector;
+import net.ranides.assira.xml.XMLType;
+import net.ranides.assira.xml.XMLWriter;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class W3ElementTest {
+    
+    public W3ElementTest() {
+    }
+
+    @Test
+    public void testWrapper() throws IOException {
+        XMLElement doc = $(TestFiles.XML_INPUT);
+        XMLElement user = doc.find("? //user[1]/@id").first();
+        
+        assertEquals("101", user.get());
+        assertEquals(IClass.typeinfo(String.class), user.type());
+        user.set("10166");
+        
+        assertEquals(IOStrings.read(TestFiles.XML_5, Charsets.UTF8), new XMLWriter().indent(4).toString(user.parent().normalize()));
+    }
+    
+    @Test
+    public void testHas() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        assertTrue(doc.find("user").first().has());
+        assertTrue(doc.find("user login").first().has());
+        assertFalse(doc.find("data item").first().has());
+        
+        assertTrue(doc.find("user").first().has("login"));
+        assertFalse(doc.find("user login").first().has("login"));
+        assertFalse(doc.find("user").first().has("xxxx"));
+    }
+    
+    @Test
+    public void testNext() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        List<String> exp = Arrays.asList("ranides@ccms.net", "contact@ranides.net");
+        
+        assertEquals("password", doc.find("user login").first().next().name());
+        assertEquals(exp, doc.find("user login").first().next("mail").texts());
+    }
+    
+    @Test
+    public void testSiblinngs() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        List<String> exp1 = Arrays.asList("login", "name", "mail", "mail");
+        List<String> exp2 = Arrays.asList("ranides@ccms.net", "contact@ranides.net");
+        
+        System.out.printf("%s%n", doc.find("user password").first().siblings().texts());
+        
+        assertEquals(exp1, doc.find("user password").first().siblings().names());
+        assertEquals(exp2, doc.find("user password").first().siblings("mail").texts());
+    }
+    
+    @Test
+    public void testPrev() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        List<String> exp = Arrays.asList("ranides");
+        
+        assertEquals("password", doc.find("user name").first().prev().name());
+        assertEquals(exp, doc.find("user name").first().prev("login").texts());
+    }
+    
+    @Test
+    public void testParents() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        
+        assertEquals(Arrays.asList("user", "users", "ccms", "#document"), doc.find("user name").first().parents().names());
+        assertEquals(Arrays.asList("user"), doc.find("user name").first().parents("[id]").names());
+        assertEquals(Arrays.asList("ccms"), doc.find("user name").first().parents("ccms").names());
+    }
+    
+    @Test
+    public void testSelectors() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        
+        XMLSelector xs1 = XMLSelector.css("user");
+        XMLSelector xs2 = XMLSelector.xpath("//user");
+        
+        assertEquals(doc.find(xs1).nodes(), doc.find(xs2).nodes());
+    }
+}

+ 32 - 0
assira/src/test/java/net/ranides/assira/xml/impl/W3SelectorsTest.java

@@ -0,0 +1,32 @@
+/*
+ * @author Ranides Atterwim <ranides@gmail.com>
+ * @copyright Ranides Atterwim
+ * @license WTFPL
+ * @url http://ranides.net/projects/assira
+ */
+package net.ranides.assira.xml.impl;
+
+import net.ranides.assira.TestFiles;
+import net.ranides.assira.xml.XMLElement;
+import static net.ranides.assira.xml.XMLQuery.$;
+import net.ranides.assira.xml.XMLSelector;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public class W3SelectorsTest {
+    
+    @Test
+    public void testCompile() {
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize();
+        
+        XMLSelector xs1 = XMLSelector.css("user");
+        XMLSelector xs2 = XMLSelector.xpath("//user");
+        
+        assertEquals(doc.find(xs1).nodes(), doc.find(xs2).nodes());
+    }
+    
+}

+ 8 - 0
assira/src/test/resources/xml/writer5.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user active="true" id="10166" public="true" uid="5461">
+    <login>ranides</login>
+    <password>C2A7B5</password>
+    <name>Ranides Atterwim</name>
+    <mail>ranides@ccms.net</mail>
+    <mail type="private">contact@ranides.net</mail>
+</user>