1 /*
2 * $Header$
3 * $Revision$
4 * $Date$
5 *
6 * ====================================================================
7 *
8 * Copyright 2000-2002 bob mcwhirter & James Strachan.
9 * All rights reserved.
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions are
13 * met:
14 *
15 * * Redistributions of source code must retain the above copyright
16 * notice, this list of conditions and the following disclaimer.
17 *
18 * * Redistributions in binary form must reproduce the above copyright
19 * notice, this list of conditions and the following disclaimer in the
20 * documentation and/or other materials provided with the distribution.
21 *
22 * * Neither the name of the Jaxen Project nor the names of its
23 * contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
27 * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
29 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
30 * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 *
38 * ====================================================================
39 * This software consists of voluntary contributions made by many
40 * individuals on behalf of the Jaxen Project and was originally
41 * created by bob mcwhirter <bob@werken.com> and
42 * James Strachan <jstrachan@apache.org>. For more information on the
43 * Jaxen Project, please see <http://www.jaxen.org/>.
44 *
45 * $Id$
46 */
47
48
49
50 package org.jaxen.test;
51
52 import junit.framework.TestCase;
53
54 import org.jaxen.JaxenException;
55 import org.jaxen.pattern.Pattern;
56 import org.jaxen.pattern.PatternParser;
57 import org.jaxen.saxpath.SAXPathException;
58 import org.jaxen.saxpath.XPathSyntaxException;
59
60 public class PatternHandlerTest extends TestCase
61 {
62
63 String[] paths = {
64 "foo",
65 "*",
66 "/",
67 "foo/bar",
68 "foo//bar",
69 "/*/foo",
70 "*[@name]",
71 "foo/bar[1]",
72 "foo[bar=\"contents\"]",
73 "foo[bar='contents']",
74 "foo|bar",
75 "foo/title | bar/title | xyz/title",
76 "/foo//*",
77 "foo/text()",
78 "foo/@*",
79 };
80
81 String[] bogusPaths = { };
82
83 String[] ignore_bogusPaths = {
84 // this path is bogus because of a trailing /
85 "/foo/bar/",
86
87 // This path is bogus because '/' is not division, but
88 // rather just the step separator.
89 "12 + sum(count(//author),count(//author/attribute::*)) / 2",
90 "id()/2",
91 "+"
92 };
93
94 public PatternHandlerTest(String name)
95 {
96 super( name );
97 }
98
99 public void testValidPaths() throws JaxenException, SAXPathException
100 {
101 for ( int i = 0; i < paths.length; i++ ) {
102 String path = paths[i];
103 PatternParser.parse( path );
104 }
105 }
106
107 public void testBogusPaths() throws JaxenException, SAXPathException
108 {
109 for ( int i = 0; i < bogusPaths.length; i++ ) {
110 String path = bogusPaths[i];
111 try
112 {
113 Pattern pattern = PatternParser.parse( path );
114 fail( "Parsed bogus path as: " + pattern );
115 }
116 catch (XPathSyntaxException e)
117 {
118 }
119 }
120
121 }
122 }