1   // 
2   // Copyright (c) 2003, Caltha - Gajda, Krzewski, Mach, Potempski Sp.J. 
3   // All rights reserved. 
4   // 
5   // Redistribution and use in source and binary forms, with or without modification,  
6   // are permitted provided that the following conditions are met: 
7   //  
8   // * Redistributions of source code must retain the above copyright notice,  
9   //	 this list of conditions and the following disclaimer. 
10  // * Redistributions in binary form must reproduce the above copyright notice,  
11  //	 this list of conditions and the following disclaimer in the documentation  
12  //	 and/or other materials provided with the distribution. 
13  // * Neither the name of the Caltha - Gajda, Krzewski, Mach, Potempski Sp.J.  
14  //	 nor the names of its contributors may be used to endorse or promote products  
15  //	 derived from this software without specific prior written permission. 
16  // 
17  // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"  
18  // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED  
19  // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
20  // IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,  
21  // INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,  
22  // BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
23  // OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  
24  // WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)  
25  // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  
26  // POSSIBILITY OF SUCH DAMAGE. 
27  // 
28  package org.objectledge.web.mvc.finders;
29  
30  import junit.framework.TestCase;
31  
32  /***
33   * 
34   * @author <a href="mailto:rafal@caltha.pl">Rafal Krzewski</a>
35   * @version $Id: ViewFallbackSequenceTest.java,v 1.8 2005/02/16 18:39:34 rafal Exp $
36   */
37  public class ViewFallbackSequenceTest extends TestCase
38  {
39      /***
40       * Constructor for ViewFallbackSequenceTest.
41       * @param arg0
42       */
43      public ViewFallbackSequenceTest(String arg0)
44      {
45          super(arg0);
46      }
47  
48      public void testPackage()
49      {
50          Sequence sequence = new ViewFallbackSequence("a.b.c", '.', '/', "Default", false);
51          assertEquals("a/b/c/Default", sequence.next());
52          assertEquals("a.b.c.Default", sequence.currentView());
53          assertEquals("a/b/Default", sequence.next());
54          assertEquals("a.b.Default", sequence.currentView());
55          assertEquals("a/Default", sequence.next());
56          assertEquals("a.Default", sequence.currentView());
57          assertEquals("Default", sequence.next());
58          assertEquals("Default", sequence.currentView());
59          assertEquals(false, sequence.hasNext());
60          try
61          {
62              sequence.next();
63              fail("exception expected");
64          }
65          catch(Exception e)
66          {
67              // success
68          }
69          sequence.reset();
70          assertEquals(true, sequence.hasNext());
71      }
72  
73      public void testClass()
74      {
75          Sequence sequence = new ViewFallbackSequence("a.b.C", '.', '/', "Default", false);
76          assertEquals("a/b/C", sequence.next());
77          assertEquals("a.b.C", sequence.currentView());
78          assertEquals("a/b/Default", sequence.next());
79          assertEquals("a.b.Default", sequence.currentView());
80          assertEquals("a/Default", sequence.next());
81          assertEquals("a.Default", sequence.currentView());
82          assertEquals("Default", sequence.next());
83          assertEquals("Default", sequence.currentView());
84          assertEquals(false, sequence.hasNext());
85          try
86          {
87              sequence.next();
88              fail("exception expected");
89          }
90          catch(Exception e)
91          {
92              // success
93          }
94          sequence.reset();
95          assertEquals(true, sequence.hasNext());
96      }
97  
98      public void testDefault()
99      {
100         Sequence sequence = new ViewFallbackSequence("a.b.Default", '.', '/', "Default", false);
101         assertEquals("a/b/Default", sequence.next());
102         assertEquals("a.b.Default", sequence.currentView());
103         assertEquals("a/Default", sequence.next());
104         assertEquals("a.Default", sequence.currentView());
105         assertEquals("Default", sequence.next());
106         assertEquals("Default", sequence.currentView());
107         assertEquals(false, sequence.hasNext());
108         try
109         {
110             sequence.next();
111             fail("exception expected");
112         }
113         catch(Exception e)
114         {
115             // success
116         }
117         sequence.reset();
118         assertEquals(true, sequence.hasNext());
119     }
120     
121     public void testSingle()
122     {
123         Sequence sequence = new ViewFallbackSequence("a", '.', '/', "Default", false);
124         assertEquals("a/Default", sequence.next());
125         assertEquals("a.Default", sequence.currentView());
126         assertEquals("Default", sequence.next());
127         assertEquals("Default", sequence.currentView());
128         assertEquals(false, sequence.hasNext());
129         sequence = new ViewFallbackSequence("A", '.', '/', "Default", false);
130         assertEquals("A", sequence.next());
131         assertEquals("A", sequence.currentView());
132         assertEquals("Default", sequence.next());
133         assertEquals("Default", sequence.currentView());
134         assertEquals(false, sequence.hasNext());
135         sequence = new ViewFallbackSequence("Default", '.', '/', "Default", false);
136         assertEquals("Default", sequence.next());
137         assertEquals("Default", sequence.currentView());
138         assertEquals(false, sequence.hasNext());
139     }
140 
141     public void testPackageEnclosing()
142     {
143         Sequence sequence = new ViewFallbackSequence("a.b.c", '.', '/', "Default", true);
144         assertEquals("a/b/Default", sequence.next());
145         assertEquals("a.b.Default", sequence.currentView());
146         assertEquals("a/Default", sequence.next());
147         assertEquals("a.Default", sequence.currentView());
148         assertEquals("Default", sequence.next());
149         assertEquals("Default", sequence.currentView());
150         assertEquals(false, sequence.hasNext());
151         try
152         {
153             sequence.next();
154             fail("exception expected");
155         }
156         catch(Exception e)
157         {
158             // success
159         }
160         sequence.reset();
161         assertEquals(true, sequence.hasNext());
162     }
163 
164     public void testClassEnclosing()
165     {
166         Sequence sequence = new ViewFallbackSequence("a.b.C", '.', '/', "Default", true);
167         assertEquals("a/b/Default", sequence.next());
168         assertEquals("a.b.Default", sequence.currentView());
169         assertEquals("a/Default", sequence.next());
170         assertEquals("a.Default", sequence.currentView());
171         assertEquals("Default", sequence.next());
172         assertEquals("Default", sequence.currentView());
173         assertEquals(false, sequence.hasNext());
174         try
175         {
176             sequence.next();
177             fail("exception expected");
178         }
179         catch(Exception e)
180         {
181             // success
182         }
183         sequence.reset();
184         assertEquals(true, sequence.hasNext());
185     }
186 
187     public void testDefaultEnclosing()
188     {
189         Sequence sequence = new ViewFallbackSequence("a.b.Default", '.', '/', "Default", true);
190         assertEquals("a/Default", sequence.next());
191         assertEquals("a.Default", sequence.currentView());
192         assertEquals("Default", sequence.next());
193         assertEquals("Default", sequence.currentView());
194         assertEquals(false, sequence.hasNext());
195         try
196         {
197             sequence.next();
198             fail("exception expected");
199         }
200         catch(Exception e)
201         {
202             // success
203         }
204         sequence.reset();
205         assertEquals(true, sequence.hasNext());
206     }
207     
208     public void testSingleEnclosing()
209     {
210         Sequence sequence = new ViewFallbackSequence("a", '.', '/', "Default", true);
211         assertEquals("Default", sequence.next());
212         assertEquals("Default", sequence.currentView());
213         assertEquals(false, sequence.hasNext());
214         sequence = new ViewFallbackSequence("A", '.', '/', "Default", true);
215         assertEquals("Default", sequence.next());
216         assertEquals("Default", sequence.currentView());
217         assertEquals(false, sequence.hasNext());
218         sequence = new ViewFallbackSequence("Default", '.', '/', "Default", true);
219         assertEquals(false, sequence.hasNext());
220     }
221 }