package org.exist.xquery.functions.fn; import org.exist.test.ExistXmldbEmbeddedServer; import org.junit.ClassRule; import org.junit.Test; import static org.junit.Assert.assertEquals; import org.xmldb.api.base.ResourceSet; import org.xmldb.api.base.XMLDBException; /** * * @author ljo */ public class FunLangTest { @ClassRule public static final ExistXmldbEmbeddedServer existEmbeddedServer = new ExistXmldbEmbeddedServer(false, true); @Test public void testFnLangWithContext() throws XMLDBException { final ResourceSet resourceSet = existEmbeddedServer.executeQuery( "let $doc-frag := " + "<desclist xml:lang=\"en\">" + "<desc xml:lang=\"en-US\" n=\"1\">" + "<line>The first line of the description.</line>" + "</desc>" + "<desc xml:lang=\"fr\" n=\"2\">"+ "<line>La première ligne de la déscription.</line>" + "</desc>" + "</desclist>" + "return $doc-frag//desc[lang(\"en-US\")]" ); assertEquals(1, resourceSet.getSize()); assertEquals("<desc xml:lang=\"en-US\" n=\"1\">\n <line>The first line of the description.</line>\n</desc>", resourceSet.getResource(0).getContent()); } @Test public void testFnLangWithArgument() throws XMLDBException { final ResourceSet resourceSet = existEmbeddedServer.executeQuery( "let $doc-frag := " + "<desclist xml:lang=\"en\">" + "<desc xml:lang=\"en-US\" n=\"1\">" + "<line>The first line of the description.</line>" + "</desc>" + "<desc xml:lang=\"fr\" n=\"2\">"+ "<line>La première ligne de la déscription.</line>" + "</desc>" + "</desclist>" + "return lang(\"en-US\", $doc-frag//desc[@n eq \"2\"])" ); assertEquals(1, resourceSet.getSize()); assertEquals("false", resourceSet.getResource(0).getContent()); } @Test public void testFnLangWithAttributeArgument() throws XMLDBException { final ResourceSet resourceSet = existEmbeddedServer.executeQuery( "let $doc-frag := " + "<desclist xml:lang=\"en\">" + "<desc xml:lang=\"en-US\" n=\"1\">" + "<line>The first line of the description.</line>" + "</desc>" + "<desc xml:lang=\"fr\" n=\"2\">"+ "<line>La première ligne de la déscription.</line>" + "</desc>" + "</desclist>" + "return lang(\"en-US\", $doc-frag//desc/@n[. eq \"1\"])" ); assertEquals(1, resourceSet.getSize()); assertEquals("true", resourceSet.getResource(0).getContent()); } }