1   /*
2    * $Header: /home/projects/jaxen/scm/jaxen/src/java/test/org/jaxen/saxpath/helpers/XPathReaderFactoryTest.java,v 1.4 2005/01/30 03:15:58 elharo Exp $
3    * $Revision: 1.4 $
4    * $Date: 2005/01/30 03:15:58 $
5    *
6    * ====================================================================
7    *
8    * Copyright (C) 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
13   * are met:
14   *
15   * 1. Redistributions of source code must retain the above copyright
16   *    notice, this list of conditions, and the following disclaimer.
17   *
18   * 2. Redistributions in binary form must reproduce the above copyright
19   *    notice, this list of conditions, and the disclaimer that follows
20   *    these conditions in the documentation and/or other materials
21   *    provided with the distribution.
22   *
23   * 3. The name "Jaxen" must not be used to endorse or promote products
24   *    derived from this software without prior written permission.  For
25   *    written permission, please contact license@jaxen.org.
26   *
27   * 4. Products derived from this software may not be called "Jaxen", nor
28   *    may "Jaxen" appear in their name, without prior written permission
29   *    from the Jaxen Project Management (pm@jaxen.org).
30   *
31   * In addition, we request (but do not require) that you include in the
32   * end-user documentation provided with the redistribution and/or in the
33   * software itself an acknowledgement equivalent to the following:
34   *     "This product includes software developed by the
35   *      Jaxen Project (http://www.jaxen.org/)."
36   * Alternatively, the acknowledgment may be graphical using the logos
37   * available at http://www.jaxen.org/
38   *
39   * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
40   * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41   * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42   * DISCLAIMED.  IN NO EVENT SHALL THE Jaxen AUTHORS OR THE PROJECT
43   * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
45   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
46   * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
47   * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
49   * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50   * SUCH DAMAGE.
51   *
52   * ====================================================================
53   * This software consists of voluntary contributions made by many
54   * individuals on behalf of the Jaxen Project and was originally
55   * created by bob mcwhirter <bob@werken.com> and
56   * James Strachan <jstrachan@apache.org>.  For more information on the
57   * Jaxen Project, please see <http://www.jaxen.org/>.
58   *
59   * $Id: XPathReaderFactoryTest.java,v 1.4 2005/01/30 03:15:58 elharo Exp $
60   */
61  
62  
63  
64  package org.jaxen.saxpath.helpers;
65  
66  import junit.framework.TestCase;
67  
68  import org.jaxen.saxpath.XPathReader;
69  
70  public class XPathReaderFactoryTest extends TestCase
71  {
72      public XPathReaderFactoryTest(String name)
73      {
74          super( name );
75      }
76  
77      public void setUp()
78      {
79      }
80  
81      public void tearDown()
82      {
83      }
84  
85      public void testDefault()
86      {
87          System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
88                              "" );
89          try
90          {
91              XPathReader reader = XPathReaderFactory.createReader();
92  
93              assertNotNull( reader );
94          }
95          catch (org.jaxen.saxpath.SAXPathException e)
96          {
97              fail( e.getMessage() );
98          }
99      }
100 
101     public void testValidByProperty()
102     {
103         System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
104                             "org.jaxen.saxpath.helpers.MockXPathReader"  );
105 
106         try
107         {
108             XPathReader reader = XPathReaderFactory.createReader();
109 
110             assertNotNull( reader );
111 
112             assertSame( MockXPathReader.class,
113                         reader.getClass() );
114         }
115         catch (org.jaxen.saxpath.SAXPathException e)
116         {
117             fail( e.getMessage() );
118         }
119         finally
120         {
121             System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
122                                 "" );
123         }
124     }
125 
126     public void testInvalidByProperty()
127     {
128         System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
129                             "java.lang.String" );
130 
131         try
132         {
133             XPathReaderFactory.createReader();
134 
135             fail( "Should have thrown SAXPathException" );
136         }
137         catch (org.jaxen.saxpath.SAXPathException e)
138         {
139             // expected and correct
140         }
141         finally
142         {
143             System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
144                                 "" );
145         }
146     }
147 
148     public void testNonExistantByProperty()
149     {
150         System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
151                             "i.am.a.class.that.does.not.Exist" );
152 
153         try
154         {
155             XPathReaderFactory.createReader();
156 
157             fail( "Should have thrown SAXPathException" );
158         }
159         catch (org.jaxen.saxpath.SAXPathException e)
160         {
161             // expected and correct
162         }
163         finally
164         {
165             System.setProperty( XPathReaderFactory.DRIVER_PROPERTY,
166                                 "" );
167         }
168     }
169 
170     public void testValidExplicit()
171     {
172         try
173         {
174             XPathReader reader = XPathReaderFactory.createReader( "org.jaxen.saxpath.helpers.MockXPathReader" );
175 
176             assertNotNull( reader );
177 
178             assertSame( MockXPathReader.class,
179                         reader.getClass() );
180         }
181         catch (org.jaxen.saxpath.SAXPathException e)
182         {
183             fail( e.getMessage() );
184         }
185     }
186 
187     public void testInvalidExplicit()
188     {
189         try
190         {
191             XPathReaderFactory.createReader( "java.lang.String" );
192 
193             fail( "Should have thrown SAXPathException" );
194         }
195         catch (org.jaxen.saxpath.SAXPathException e)
196         {
197             // expected and correct
198         }
199     }
200 
201     public void testNonExistantExplicit()
202     {
203         try
204         {
205             XPathReaderFactory.createReader( "i.am.a.class.that.does.not.Exist" );
206 
207             fail( "Should have thrown SAXPathException" );
208         }
209         catch (org.jaxen.saxpath.SAXPathException e)
210         {
211             // expected and correct
212         }
213     }
214 }