View Javadoc

1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.myfaces.el;
20  
21  import static org.easymock.EasyMock.eq;
22  import static org.easymock.EasyMock.expect;
23  
24  import java.beans.FeatureDescriptor;
25  import java.util.ArrayList;
26  import java.util.Collections;
27  import java.util.Iterator;
28  import java.util.List;
29  
30  import javax.el.ELContext;
31  import javax.el.ELResolver;
32  
33  import org.easymock.IAnswer;
34  import org.easymock.classextension.EasyMock;
35  import org.easymock.classextension.IMocksControl;
36  import org.junit.Assert;
37  import org.junit.Before;
38  import org.junit.Test;
39  
40  /**
41   * @author Mathias Broekelmann (latest modification by $Author: bommel $)
42   * @version $Revision: 1187701 $ $Date: 2011-10-22 07:21:54 -0500 (Sat, 22 Oct 2011) $
43   */
44  public class CompositeELResolverTest
45  {
46      private IMocksControl _mocksControl;
47      private ELContext _elContext;
48      private CompositeELResolver _testImpl;
49  
50      @Before
51      public void setup()
52      {
53          _mocksControl = EasyMock.createControl();
54          _elContext = _mocksControl.createMock(ELContext.class);
55          _testImpl = new CompositeELResolver();
56      }
57  
58      @Test
59      public void testFeatureDescriptorsIterator()
60      {
61          ELResolver notnullFDResolver = _mocksControl.createMock(ELResolver.class);
62          ELResolver emptyFDResolver = _mocksControl.createMock(ELResolver.class);
63          Object base = new Object();
64  
65          _testImpl.add(notnullFDResolver);
66          _testImpl.add(emptyFDResolver);
67          _testImpl.add(notnullFDResolver);
68  
69          final List<FeatureDescriptor> fds = new ArrayList<FeatureDescriptor>();
70          fds.add(new FeatureDescriptor());
71          fds.add(null);
72          fds.add(new FeatureDescriptor());
73          fds.add(null);
74          expect(notnullFDResolver.getFeatureDescriptors(eq(_elContext), eq(base))).andAnswer(
75                  new IAnswer<Iterator<FeatureDescriptor>>()
76                  {
77                      public Iterator<FeatureDescriptor> answer() throws Throwable
78                      {
79                          return fds.iterator();
80                      }
81                  }).anyTimes();
82  
83          List<FeatureDescriptor> emptyList = Collections.emptyList();
84          expect(emptyFDResolver.getFeatureDescriptors(eq(_elContext), eq(base))).andReturn(emptyList.iterator());
85  
86          _mocksControl.replay();
87  
88          Iterator<FeatureDescriptor> descriptors = _testImpl.getFeatureDescriptors(_elContext, base);
89  
90          Assert.assertNotNull(descriptors);
91          Assert.assertEquals(true, descriptors.hasNext());
92          Assert.assertEquals(fds.get(0), descriptors.next());
93          Assert.assertEquals(true, descriptors.hasNext());
94          Assert.assertEquals(fds.get(2), descriptors.next());
95          Assert.assertEquals(true, descriptors.hasNext());
96          Assert.assertEquals(fds.get(0), descriptors.next());
97          Assert.assertEquals(true, descriptors.hasNext());
98          Assert.assertEquals(fds.get(2), descriptors.next());
99          Assert.assertEquals(false, descriptors.hasNext());
100 
101     }
102 }