lux.functions.XQueryTest.java Source code

Java tutorial

Introduction

Here is the source code for lux.functions.XQueryTest.java

Source

package lux.functions;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;

import java.io.IOException;
import java.util.Collection;

import javax.xml.transform.TransformerException;

import lux.Evaluator;
import lux.XdmResultSet;

import org.apache.commons.io.IOUtils;
import org.junit.BeforeClass;

public abstract class XQueryTest {

    protected static Evaluator evaluator;

    @BeforeClass
    public static void setup() throws Exception {
        evaluator = new Evaluator();
    }

    protected void assertXQueryFile(String result, String queryFile) throws IOException {
        assertXQueryFile(result, queryFile, null);
    }

    protected void assertXQueryFile(String result, String queryFile, String firstError) throws IOException {
        String query = IOUtils.toString(TransformTest.class.getResourceAsStream(queryFile));
        assertXQuery(result, query, firstError);
    }

    protected void assertXQuery(String result, String query) {
        assertXQuery(result, query, null);
    }

    protected void assertXQuery(String result, String query, String firstError) {
        XdmResultSet results = evaluator.evaluate(query);
        if (result == null) {
            assertEquals(0, results.size());
            if (firstError != null) {
                assertEquals(firstError, results.getErrors().iterator().next().getMessage());
            } else {
                Collection<TransformerException> errors = results.getErrors();
                if (errors != null && !errors.isEmpty()) {
                    assertFalse("got errors " + errors.iterator().next().getMessage(), true);
                }
            }
            return;
        }
        assertEquals(1, results.size());
        assertEquals(result, results.iterator().next().toString());
    }

}

/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */