Browse Source

tests: xml

Ranides Atterwim 10 năm trước cách đây
mục cha
commit
e1e442460d

+ 32 - 0
assira/src/test/java/net/ranides/assira/TestFiles.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;
+
+import java.io.File;
+
+/**
+ *
+ * @author Ranides Atterwim <ranides@gmail.com>
+ */
+public final class TestFiles {
+
+    private TestFiles() {
+        /* utility class */
+    }
+    
+    public static final File XML_INPUT = new File("src/test/resources/xml/input.xml");
+    
+    public static final File XML_1 = new File("src/test/resources/xml/writer1.xml");
+    
+    public static final File XML_2 = new File("src/test/resources/xml/writer2.xml");
+    
+    public static final File XML_3 = new File("src/test/resources/xml/writer3.xml");
+    
+    public static final File XML_4 = new File("src/test/resources/xml/writer4.xml");
+    
+}

+ 64 - 42
assira/src/test/java/net/ranides/assira/xml/XMLQueryTest.java

@@ -11,8 +11,10 @@ import java.io.IOException;
 import java.util.Arrays;
 import java.util.List;
 import javax.xml.transform.TransformerConfigurationException;
+import net.ranides.assira.TestFiles;
 import net.ranides.assira.collection.maps.MultiMap;
 import static net.ranides.assira.junit.NewAssert.*;
+import static net.ranides.assira.xml.XMLQuery.$;
 import org.junit.Test;
 
 /**
@@ -24,55 +26,61 @@ public class XMLQueryTest {
     
     @Test
     public void testRoot() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        List<String> root = Arrays.asList("artifactRepository", "configuration", "repository");
-        List<String> body = Arrays.asList("#text", "properties", "#text", "mappings", "#text", "artifacts", "#text");
-        List<String> items = Arrays.asList("properties", "mappings", "artifacts");
+        List<String> root = Arrays.asList("info", "info", "params", "#comment", "ccms");
+        List<String> body = Arrays.asList("#text", "users", "#text", "data", "#text", "configuration", "#text");
+        List<String> items = Arrays.asList("users", "data", "configuration");
         
-        assertEquals(root.subList(0, 3), doc.children().names());
-        assertEquals(root.subList(0, 2), doc.children(XMLType.PROCESSING).names());
-        assertEquals(root.subList(2, 3), doc.children(XMLType.ELEMENT).names());
+        assertEquals(root.subList(0, 5), doc.children().names());
+        assertEquals(root.subList(0, 3), doc.children(XMLType.PROCESSING).names());
+        assertEquals(root.subList(4, 5), doc.children(XMLType.ELEMENT).names());
+        assertEquals(" @author Ranides Atterwim <ranides@gmail.com> ", doc.children(XMLType.COMMENT).text());
         
         assertEquals(body, doc.root().children().names());
         assertEquals(items, doc.root().children(XMLType.ELEMENT).names());
+        assertEquals(items, doc.normalize().root().children().names());
         
-        assertEquals("repository", doc.root().name());
+        assertEquals("ccms", doc.root().name());
     }
     
     @Test
     public void testFindStar() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        assertEquals(3395, doc.find("*").size());
-        assertEquals(3394, doc.root().find("*").size());
+        assertEquals(39, doc.find("*").size());
+        assertEquals(38, doc.root().find("*").size());
         
-        assertEquals(2378, doc.find("artifact *").size());
-        assertEquals(2378, doc.find("artifact").find("*").size());
-        assertEquals(4, doc.find("? //artifact[1]").find("*").size());
+        assertEquals(27, doc.find("users *").size());
+        assertEquals(27, doc.find("users").find("*").size());
+        assertEquals(Arrays.asList("login", "password", "name", "mail", "mail"), doc.find("? //user[1]").find("*").names());
     }
     
     @Test
     public void testXPath() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        List<String> exp1 = Arrays.asList("plugins.jar", "binary.jar", "features.jar");
-        
-        assertEquals(exp1, doc.find("? //mappings/rule/@output").texts());
-        assertEquals(exp1, doc.find("? /repository/mappings/rule/@output").texts());
+        List<String> exp1 = Arrays.asList("101", "102", "103", "104", "105");
+        List<String> exp2 = Arrays.asList();
+
+        assertEquals(exp1, doc.find("? //users/user/@id").texts());
+        assertEquals(exp2, doc.find("? /users/user/@id").texts());
+        assertEquals(exp2, doc.find("? users/user/@id").texts());
+        assertEquals(exp1, doc.find("? ccms/users/user/@id").texts());
+        assertEquals(exp1, doc.find("? /ccms/users/user/@id").texts());
     }
     
     @Test
     public void testCSS() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        XMLElements css = doc.find("artifact property[name='download.size']").attrs("value");
-        
-        assertEquals(1008, css.size());
+        XMLElements css = doc.find("users user[active='true']").attrs("id");
+
+        assertEquals(Arrays.asList("101", "102", "105"), css.texts());
         
-        List<Integer> numbers = Arrays.asList(26817, 159306, 48552, 48832, 731290, 12166, 18032, 150535);
+        List<Integer> numbers = Arrays.asList(101, 105);
         
-        assertEquals(numbers, css.stream(this::$int).filter(v -> 0 == v%7).limit(8).list());
+        assertEquals(numbers, css.stream(this::$int).filter(v -> 1 == v%2).list());
     }
 
     private int $int(XMLElement n) throws NumberFormatException {
@@ -81,38 +89,52 @@ public class XMLQueryTest {
     
     @Test
     public void testChildren() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
         assertFalse(doc.children("xxx").matches());
-        assertFalse(doc.children("mappings").matches());
-        assertFalse(doc.children(" mappings").matches());
-        assertFalse(doc.children("mappings rule").matches());
+        assertFalse(doc.children("users").matches());
+        assertFalse(doc.children(" users").matches());
+        assertFalse(doc.children("users user").matches());
+        
+        assertFalse(doc.root().children("xxx").matches());
+        assertTrue(doc.root().children("users").matches());
+        assertTrue(doc.root().children(" users").matches());
+        assertFalse(doc.root().children("users user").matches());
+        
+        assertEquals(0, doc.root().children("xxx").size());
+        assertEquals(1, doc.root().children("users").size());
+        assertEquals(1, doc.root().children(" users").size());
+        assertEquals(0, doc.root().children("users user").size());
         
         assertEquals(0, doc.find("xxx").size());
-        assertEquals(1, doc.find("mappings").size());
-        assertEquals(1, doc.find(" mappings").size());
-        assertEquals(3, doc.find("mappings rule").size());
+        assertEquals(1, doc.find("users").size());
+        assertEquals(1, doc.find(" users").size());
+        assertEquals(5, doc.find("users user").size());
     }
         
     
     @Test
     public void testAttrMap() throws IOException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
-
-        assertTrue(doc.children("mappings rule").attrs().map().isEmpty());
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        MultiMap<String, String> attr = doc.find("mappings rule").attrs().map();
+        assertTrue(doc.children("xxx").attrs().map().isEmpty());
+        assertTrue(doc.find("users item").attrs().map().isEmpty());
+        assertTrue(doc.find("users user login").attrs().map().isEmpty());
 
-        List<String> exp1 = Arrays.asList("A","B","C");
-        List<String> exp2 = Arrays.asList("plugins.jar", "binary.jar", "features.jar");
-        
-        assertEquivalent(exp1, attr.getAll("filter"));
-        assertEquivalent(exp2, attr.getAll("output"));
+//        assertTrue(doc.children("mappings rule").attrs().map().isEmpty());
+//        
+//        MultiMap<String, String> attr = doc.find("mappings rule").attrs().map();
+//
+//        List<String> exp1 = Arrays.asList("A","B","C");
+//        List<String> exp2 = Arrays.asList("plugins.jar", "binary.jar", "features.jar");
+//        
+//        assertEquivalent(exp1, attr.getAll("filter"));
+//        assertEquivalent(exp2, attr.getAll("output"));
     }
     
     @Test
     public void testAttributes() throws IOException, TransformerConfigurationException {
-        XMLElement doc = XMLQuery.$(new File("src/test/resources/eclipse/artifacts.xml"));
+        XMLElement doc = $(new File("src/test/resources/eclipse/artifacts.xml"));
         
         XMLElement attr1 = doc.find("repository mappings rule").attrs("output").first();
         XMLElement attr2 = doc.find("repository mappings rule").attrs().first("output");

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

@@ -6,13 +6,78 @@
  */
 package net.ranides.assira.xml;
 
+import net.ranides.assira.TestFiles;
 import java.io.File;
 import java.io.IOException;
 import net.ranides.assira.io.StringOutput;
 import net.ranides.assira.text.Charsets;
+import net.ranides.assira.text.StringIO;
 import static net.ranides.assira.xml.XMLQuery.$;
 import org.junit.Test;
 import static org.junit.Assert.*;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
 
 /**
  *
@@ -20,12 +85,14 @@ import static org.junit.Assert.*;
  */
 public class XMLWriterTest {
     
-    private static final File INPUT = new File("src/test/resources/eclipse/artifacts.xml");
-
     @Test
     public void testWriter() throws IOException {
-        XMLElement doc = $(INPUT).normalize().find("? //repository/mappings").first();
-        doc.find("? //rule[2]/@output").first().content("under");
+        XMLElement doc = $(TestFiles.XML_INPUT).normalize().find("? //users/user[4]").first();
+
+        doc.find("? mail[1]").text("tom@c...");
+        doc.find("? mail[2]").text("tom@d...");
+        doc.find("? mail[3]").text("office@c...");
+        doc.find("? mail/@type").text("hidden");
         
         String out1 = new XMLWriter().toString(doc);
         
@@ -46,10 +113,16 @@ public class XMLWriterTest {
             .indent(4)
             .toString(doc);
         
-        System.out.printf("%n%s%n", out1);
-        System.out.printf("%n%s%n", out2);
-        System.out.printf("%n%s%n", out3.toString(Charsets.UTF8));
-        System.out.printf("%n%s%n", out4);
+//        System.out.printf("%n%s%n", out1);
+//        System.out.printf("%n%s%n", out2);
+//        System.out.printf("%n%s%n", out3.toString(Charsets.UTF8));
+//        System.out.printf("%n%s%n", out4);
+
+        assertEquals(StringIO.read(TestFiles.XML_1, Charsets.UTF8), out1);
+        assertEquals(StringIO.read(TestFiles.XML_2, Charsets.UTF8), out2);
+        assertEquals(StringIO.read(TestFiles.XML_3, Charsets.UTF8), out3.toString(Charsets.UTF8));
+        assertEquals(StringIO.read(TestFiles.XML_3, Charsets.PL_WINDOWS), out3.toString(Charsets.PL_WINDOWS));
+        assertEquals(StringIO.read(TestFiles.XML_4, Charsets.UTF8), out4);
         
         assertTrue(true);
     }

+ 68 - 4
assira/src/test/java/net/ranides/assira/xml/impl/CElementTest.java

@@ -11,6 +11,70 @@ import net.ranides.assira.xml.XMLElement;
 import static net.ranides.assira.xml.XMLQuery.$;
 import org.junit.Test;
 import static net.ranides.assira.junit.NewAssert.*;
+import net.ranides.assira.TestFiles;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
 
 /**
  *
@@ -20,10 +84,10 @@ public class CElementTest {
     
     @Test
     public void testEquals() {
-        XMLElement doc = $(new File("src/test/resources/eclipse/cheatsheet.xml"));
-        XMLElement w1 = doc.find("? //item[2]/description").first();
-        XMLElement w2 = doc.find("item[skip='true'] description").first();
-        XMLElement w3 = doc.find("? //item[1]/description").first();
+        XMLElement doc = $(TestFiles.XML_INPUT);
+        XMLElement w1 = doc.find("? //user[3]/login").first();
+        XMLElement w2 = doc.find("user[id='103'] login").first();
+        XMLElement w3 = doc.find("user[id='102'] login").first();
         
         assertEquality(w1, w2, w3);
     }

+ 88 - 27
assira/src/test/java/net/ranides/assira/xml/impl/CElementsTest.java

@@ -17,59 +17,120 @@ import net.ranides.assira.xml.XMLElement;
 import static net.ranides.assira.xml.XMLQuery.$;
 import static net.ranides.assira.junit.NewAssert.*;
 import net.ranides.assira.text.StringUtils;
+import net.ranides.assira.TestFiles;
 import org.junit.Test;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
+import static net.ranides.assira.xml.XMLQuery.$;
 
 /**
  *
  * @author Ranides Atterwim <ranides@gmail.com>
  */
 public class CElementsTest {
+ 
+    private static final String[] LOGINS = new String[]{
+        "ranides", "admin", "guest", "owner", "saren"
+    };
     
-    private static final String[] ITEMS = new String[]{
-        "Open the Task List view", 
-        "Setup Task Repository", 
-        "Create a new Query", 
-        "Setup the query"
+    private static final String[] USERS = new String[]{
+        "101", "102", "103", "104", "105"
     };
-        
 
     // @todo (assira #0) xml: test
 
     @Test
     public void testIterator() {
-        XMLElement doc = $(new File("src/test/resources/eclipse/cheatsheet.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        Iterator<String> i = IteratorUtils.map(doc.find("item").iterator(), n -> n.attr("title").content());
-        IteratorTester.basicIterator(i, 0, ITEMS);
-
+        Iterator<String> i1 = IteratorUtils.map(doc.find("login").iterator(), n -> n.text());
+        IteratorTester.basicIterator(i1, 0, LOGINS);
+        
+        Iterator<String> i2 = IteratorUtils.map(doc.find("user").iterator(), n -> n.attr("id").text());
+        IteratorTester.basicIterator(i2, 0, USERS);
     }
     
     @Test
     public void testNodes() {
-        XMLElement doc = $(new File("src/test/resources/eclipse/cheatsheet.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        List<String> list = ListUtils.map(doc.find("item").nodes(), n -> n.getAttributes().getNamedItem("title").getTextContent());
-        assertEquals(Arrays.asList(ITEMS), list);
+        List<String> list = ListUtils.map(doc.find("login").nodes(), n -> n.getTextContent());
+        assertEquals(Arrays.asList(LOGINS), list);
     }
     
     @Test
     public void testTextContent() {
-        XMLElement doc = $(new File("src/test/resources/eclipse/cheatsheet.xml"));
+        XMLElement doc = $(TestFiles.XML_INPUT);
         
-        String exp1 = StringUtils.join(ITEMS, "");
+        assertEquals(Arrays.asList(USERS), doc.find("? //user/@id").contents());
+        assertEquals(Arrays.asList(USERS), doc.find("? //user/@id").texts());
+        assertEquals(StringUtils.join(USERS,""), doc.find("? //user/@id").content());
+        assertEquals(StringUtils.join(USERS,""), doc.find("? //user/@id").text());
         
-        
-        assertEquals(Arrays.asList(ITEMS), doc.find("? //item/@title").contents());
-        assertEquals(exp1, doc.find("? //item/@title").content());
-        
-        assertEquals("", doc.find("data").content());
-        assertEquals(Arrays.asList(null,null,null), doc.find("data").contents());
-        
-        assertEquals(Arrays.asList(ITEMS), doc.find("? //item/@title").texts());
-        assertEquals(Arrays.asList("0","1","2"), doc.find("data").texts());
-
-        assertEquals(exp1, doc.find("? //item/@title").text());
-        assertEquals("012", doc.find("data").text());
+        assertEquals(Arrays.asList(null,null,null,null,null), doc.find("? //user/login").contents());
+        assertEquals(Arrays.asList(LOGINS), doc.find("? //user/login").texts());
+        assertEquals("", doc.find("? //user/login").content());
+        assertEquals(StringUtils.join(LOGINS,""), doc.find("? //user/login").text());
     }
     
 }

+ 58 - 0
assira/src/test/resources/xml/input.xml

@@ -0,0 +1,58 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<?info host='ccms.ranides.net'?>
+<?info version='2.1'?>
+<?params name='logger' level='2' out='file' ?>
+
+<!-- @author Ranides Atterwim <ranides@gmail.com> -->
+
+<ccms>
+	<users>
+		<user id="101" uid="5461" active="true">
+			<login>ranides</login>
+			<password>C2A7B5</password>
+			<name>Ranides Atterwim</name>
+			<mail>ranides@ccms.net</mail>
+			<mail type="private">contact@ranides.net</mail>
+		</user>
+		<user id="102" uid="8721" active="true">
+			<login>admin</login>
+			<password>F76A33</password>
+			<name>undefined</name>
+			<mail>admin@ccms.net</mail>
+		</user>
+		<user id="103" uid="7542" active="false">
+			<login>guest</login>
+			<password>E4C156</password>
+			<name>undefined</name>
+		</user>
+		<user id="104" uid="1952" active="false">
+			<login>owner</login>
+			<password>AC3750</password>
+			<name>Tom</name>
+			<mail>tom@ccms.net</mail>
+			<mail type="private">tom@domain.com</mail>
+			<mail type="office">office@ccms.net</mail>
+		</user>
+		<user id="105" uid="3773" active="true">
+			<login>saren</login>
+			<password>D046A3</password>
+			<name>Sarenka</name>
+			<mail>saren@ccms.net</mail>
+		</user>
+	</users>
+	
+	<data>
+		<item id="2015-01-35" text="" />
+		<item id="2015-01-36" text="" />
+		<item id="2015-01-41" text="" />
+		<item id="2015-01-42" text="" />
+		<item id="2015-01-56" text="" />
+		
+		<item id="2015-01-56" text="" />
+		<item id="2015-01-56" text="" />
+	</data>
+    
+    <configuration>
+        <param name=""></param>
+    </configuration>
+</ccms>

+ 1 - 0
assira/src/test/resources/xml/writer1.xml

@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8"?><user active="false" id="104"><login>owner</login><password>AC3750</password><name>Tom</name><mail>tom@c...</mail><mail type="hidden">tom@d...</mail><mail type="hidden">office@c...</mail></user>

+ 9 - 0
assira/src/test/resources/xml/writer2.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user active="false" id="104">
+  <login>owner</login>
+  <password>AC3750</password>
+  <name>Tom</name>
+  <mail>tom@c...</mail>
+  <mail type="hidden">tom@d...</mail>
+  <mail type="hidden">office@c...</mail>
+</user>

+ 9 - 0
assira/src/test/resources/xml/writer3.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user active="false" id="104">
+  <login>owner</login>
+  <password>AC3750</password>
+  <name>Tom</name>
+  <mail>tom@c...</mail>
+  <mail type="hidden">tom@d...</mail>
+  <mail type="hidden">office@c...</mail>
+</user>

+ 9 - 0
assira/src/test/resources/xml/writer4.xml

@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<user active="false" id="104">
+    <login>owner</login>
+    <password>AC3750</password>
+    <name>Tom</name>
+    <mail>tom@c...</mail>
+    <mail type="hidden">tom@d...</mail>
+    <mail type="hidden">office@c...</mail>
+</user>