package net.xqj.basex.local;
import javax.xml.xquery.*;
import net.xqj.basex.*;
import org.junit.*;
/**
* Base class for all XQJ local tests.
*
* @author Charles Foster
*/
public abstract class XQJBaseTest {
/** Data source. */
BaseXXQDataSource xqds;
/** Connection. */
XQConnection xqc;
/**
* Initializes a test.
* @throws XQException query exception
*/
@SuppressWarnings("unused")
@Before
public void setUp() throws XQException {
xqds = new BaseXXQDataSource();
xqc = xqds.getConnection();
}
/**
* Finalizes a test.
* @throws XQException xquery exception
*/
@After
public void tearDown() throws XQException {
xqc.close();
}
/**
* Creates a document-node(element()) with some text content.
* @param content the text() content the element() will contain
* @return a XQItem representing a document-node(element()) item
* @throws XQException query exception
*/
final XQItem createDocument(final String content) throws XQException {
return
xqc.createItemFromDocument(
content,
null,
xqc.createDocumentElementType(
xqc.createElementType(null, XQItemType.XQBASETYPE_ANYTYPE)
)
);
}
/**
* Checks if a document is available.
* @param uri URI
* @return result of check
* @throws XQException query exception
*/
boolean docAvailable(final String uri) throws XQException {
final XQResultSequence rs =
xqc.createExpression().executeQuery(
"fn:doc-available('" + uri + "')"
);
rs.next();
return rs.getBoolean();
}
/**
* Sets and returns options.
* @param strategy insert strategy
* @return options
*/
static BaseXXQInsertOptions options(final int strategy) {
final BaseXXQInsertOptions options = new BaseXXQInsertOptions();
options.setInsertStrategy(strategy);
return options;
}
}