blob: c3c0ff8d7f2c6fb2d099656b7f4e627f4b3c23b9 [file] [log] [blame]
/* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package xmlcursor.xquery.detailed;
import junit.framework.TestCase;
import junit.framework.Test;
import junit.framework.TestSuite;
import junit.framework.Assert;
import org.apache.xmlbeans.XmlCursor;
import org.apache.xmlbeans.XmlObject;
//Used to be a checkin
public class StoreTestsXqrl extends TestCase
{
public StoreTestsXqrl(String name) { super(name); }
public static Test suite() { return new TestSuite(StoreTestsXqrl.class); }
private void doTokenTest ( String xml )
throws Exception
{
XmlCursor c = XmlObject.Factory.parse( xml ).newCursor();
//String s = c.execQuery( "$this" ).xmlText();
String s = c.execQuery( "." ).xmlText();
Assert.assertTrue( s.equals( xml ) );
}
private void doSaveTest ( String xml )
throws Exception
{
doTokenTest( xml );
}
public void testSaving ( )
throws Exception
{
doSaveTest( "<foo xmlns=\"foo.com\"><bar>1</bar></foo>" );
doSaveTest( "<foo><!--comment--><?target foo?></foo>" );
doSaveTest( "<foo>a<bar>b</bar>c<bar>d</bar>e</foo>" );
doSaveTest( "<foo xmlns:x=\"y\"><bar xmlns:x=\"z\"/></foo>" );
doSaveTest( "<foo x=\"y\" p=\"r\"/>" );
String s = "<foo>aaa</foo>bbb";
s = s + s + s + s + s + s + s + s + s + s + s + s + s + s + s;
s = "<bar>xxxx" + s + "</bar>";
doSaveTest( s );
XmlObject x =
XmlObject.Factory.parse( "<foo xmlns:a='a.com'><bar xmlns:a='b.com'/></foo>" );
XmlCursor c = x.newCursor();
c.toFirstChild();
c.toFirstChild();
Assert.assertTrue( c.xmlText().equals( "<bar xmlns:a=\"b.com\"/>" ) );
x = XmlObject.Factory.parse( "<foo xmlns:a='a.com'><bar/></foo>" );
c = x.newCursor();
c.toFirstChild();
c.toFirstChild();
Assert.assertTrue( c.xmlText().equals( "<bar xmlns:a=\"a.com\"/>" ) );
}
private void testTextFrag ( String actual, String expected )
{
String pre = "<xml-fragment>";
String post = "</xml-fragment>";
Assert.assertTrue( actual.startsWith( pre ) );
Assert.assertTrue( actual.endsWith( post ) );
Assert.assertTrue(
expected.equals(
actual.substring(
pre.length(), actual.length() - post.length() ) ) );
}
//
// Make sure XQuery works (tests the saver too)
//
public void testXQuery ( )
throws Exception
{
XmlCursor c =
XmlObject.Factory.parse(
"<foo><bar>1</bar><bar>2</bar></foo>" ).newCursor();
String s =
c.execQuery( "for $b in //bar order by ($b) " +
"descending return $b").xmlText();
testTextFrag( s, "<bar>2</bar><bar>1</bar>" );
c = XmlObject.Factory.parse( "<foo></foo>" ).newCursor();
c.toNextToken();
c.toNextToken();
c.insertElement( "boo", "boo.com" );
c.toStartDoc();
Assert.assertTrue(
//c.execQuery( "$this" ).
c.execQuery( "." ).
xmlText().equals(
"<foo><boo:boo xmlns:boo=\"boo.com\"/></foo>" ) );
}
public void testPathing ( )
throws Exception
{
XmlObject x =
XmlObject.Factory.parse(
"<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>" );
XmlCursor c = x.newCursor();
c.selectPath( "//bar" );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.xmlText().equals( "<bar>1</bar>" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.xmlText().equals( "<bar>2</bar>" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.xmlText().equals( "<bar>3</bar>" ) );
Assert.assertTrue( !c.toNextSelection() );
//
//
//
x =
XmlObject.Factory.parse(
"<foo><bar x='1'/><bar x='2'/><bar x='3'/></foo>" );
c = x.newCursor();
//c.selectPath( "$this//@x" );
c.selectPath( ".//@x" );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isAttr() );
Assert.assertTrue( c.getTextValue().equals( "1" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isAttr() );
Assert.assertTrue( c.getTextValue().equals( "2" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isAttr() );
Assert.assertTrue( c.getTextValue().equals( "3" ) );
Assert.assertTrue( !c.toNextSelection() );
//
//
//
x =
XmlObject.Factory.parse(
"<foo><bar>1</bar><bar>2</bar><bar>3</bar></foo>" );
c = x.newCursor();
c.selectPath( "//text()" );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isText() );
Assert.assertTrue( c.getChars().equals( "1" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isText() );
Assert.assertTrue( c.getChars().equals( "2" ) );
Assert.assertTrue( c.toNextSelection() );
Assert.assertTrue( c.currentTokenType().isText() );
Assert.assertTrue( c.getChars().equals( "3" ) );
Assert.assertTrue( !c.toNextSelection() );
}
}