package org.exist.fluent;
import static org.junit.Assert.*;
import java.io.*;
import org.hamcrest.Matchers;
import org.junit.Test;
public class XMLDocumentTest extends DatabaseTestCase {
@Test public void query1() {
Folder c1 = db.createFolder("/c1");
XMLDocument doc = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
doc.query().single("/test");
}
@Test public void query2() {
Folder c1 = db.createFolder("/c1");
c1.documents().build(Name.create("original")).elem("test").end("test").commit();
XMLDocument doc = c1.documents().get("original").xml();
doc.query().single("/test");
}
@Test public void query3() {
Folder c1 = db.createFolder("/c1");
XMLDocument doc = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
assertEquals(1, doc.query().all("/test").size());
}
@Test public void query4() {
Folder c1 = db.createFolder("/c1");
XMLDocument doc = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
c1.documents().build(Name.create("another")).elem("test").end("test").commit();
doc.query().single("/test");
assertEquals(2, c1.query().all("/test").size());
}
@Test public void copy1() {
Folder c1 = db.createFolder("/c1"), c2 = db.createFolder("/c2");
XMLDocument original = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
XMLDocument copy = original.copy(c2, Name.keepCreate());
assertEquals(1, c1.documents().size());
c1.query().single("/test");
assertEquals(1, c2.documents().size());
c2.query().single("/test");
copy.query().single("/test");
}
@Test public void move1() {
Folder c1 = db.createFolder("/c1"), c2 = db.createFolder("/c2");
XMLDocument doc = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
doc.move(c2, Name.keepCreate());
assertEquals(0, c1.documents().size());
assertFalse(c1.query().exists("/test"));
assertEquals(1, c2.documents().size());
c2.query().single("/test");
doc.query().single("/test");
assertEquals("/c2/original", doc.path());
}
@Test public void delete1() {
Folder c1 = db.createFolder("/c1");
XMLDocument doc = c1.documents().build(Name.create("original")).elem("test").end("test").commit();
doc.delete();
assertEquals(0, c1.documents().size());
}
@Test public void delete2() {
Folder c1 = db.createFolder("/c1");
XMLDocument doc1 = c1.documents().build(Name.create("doc1")).elem("test").attr("xml:id", "a").end("test").commit();
XMLDocument doc2 = c1.documents().build(Name.create("doc2")).elem("test2").attr("xml:id", "b").end("test2").commit();
doc1.delete();
doc2.delete();
assertEquals(0, c1.documents().size());
}
@Test public void convertToSequence() {
Folder c = db.createFolder("/top");
c.documents().build(Name.create("one")).elem("test").end("test").commit();
XMLDocument doc = c.documents().build(Name.create("two")).elem("test").end("test").commit();
assertEquals(2, c.query().all("/test").size());
assertEquals(1, c.query().all("$_1/test", new Object[] { doc }).size());
}
@Test public void nameAndPathFromCreate() {
XMLDocument doc = db.createFolder("/top").documents().build(Name.create("foo")).elem("root").end("root").commit();
assertEquals("foo", doc.name());
assertEquals("/top/foo", doc.path());
}
@Test public void nameAndPathFromLoad() {
XMLDocument doc = db.createFolder("/top").documents().load(Name.create("foo"), Source.xml("<root/>"));
assertEquals("foo", doc.name());
assertEquals("/top/foo", doc.path());
}
@Test public void contentsAsStringFromCreate() {
XMLDocument doc = db.createFolder("/top").documents().build(Name.create("foo")).elem("root").end("root").commit();
assertEquals("<root/>", doc.contentsAsString());
}
@Test public void contentsAsStringFromLoad() {
XMLDocument doc = db.createFolder("/top").documents().load(Name.create("foo"), Source.xml("<root/>"));
assertEquals("<root/>", doc.contentsAsString());
}
@Test public void lengthFromCreate() {
XMLDocument doc = db.createFolder("/top").documents().build(Name.create("foo")).elem("root").end("root").commit();
assertThat(doc.length(), Matchers.greaterThan(0L));
}
@Test public void lengthFromLoad() {
XMLDocument doc = db.createFolder("/top").documents().load(Name.create("foo"), Source.xml("<root/>"));
assertThat(doc.length(), Matchers.greaterThan(0L));
}
@Test public void writeToOutputStream() throws IOException {
XMLDocument doc = db.createFolder("/top").documents().load(Name.create("foo"), Source.xml("<root/>"));
ByteArrayOutputStream out = new ByteArrayOutputStream();
doc.write(out);
out.close();
assertEquals("<root/>", out.toString());
}
}