1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    * 
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   * 
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.jetspeed.layout;
18  
19  import junit.framework.TestCase;
20  
21  import org.apache.jetspeed.layout.impl.CoordinateImpl;
22  import org.apache.jetspeed.layout.impl.PortletPlacementContextImpl;
23  import org.apache.jetspeed.om.page.Fragment;
24  import org.apache.jetspeed.request.RequestContext;
25  
26  /***
27   * Test for Fragment placement
28   * 
29   * @author <a>David Gurney </a>
30   * @version $Id: $
31   */
32  public class TestPortletPlacement extends TestCase
33  {
34  
35      public void testGetFragmentAt()
36      {
37          // Build a request object and populate it with fragments
38          RequestContext requestContext = FragmentUtil.buildFullRequestContext();
39  
40          try
41          {
42              PortletPlacementContext ppc = new PortletPlacementContextImpl(requestContext);
43              int a_iNumCols = ppc.getNumberColumns();
44              assertEquals(a_iNumCols, 3);
45  
46              int a_iNumRows = ppc.getNumberRows(1);
47              assertEquals(a_iNumRows, 2);
48  
49              a_iNumRows = ppc.getNumberRows(2);
50              assertEquals(a_iNumRows, 3);
51  
52              // Check the fragments
53              Fragment a_oFrag = ppc
54                      .getFragmentAtNewCoordinate(new CoordinateImpl(1, 0, 1, 0));
55              assertNotNull("null fragment found at 1,0", a_oFrag);
56              assertEquals(a_oFrag.getId(), "1");
57              assertEquals(a_oFrag.getName(), "frag1");
58  
59              a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(1, 1,
60                      1, 1));
61              assertNotNull("null fragment found at 1,1", a_oFrag);
62              assertEquals(a_oFrag.getId(), "2");
63              assertEquals(a_oFrag.getName(), "frag2");
64  
65              a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(2, 0,
66                      2, 0));
67              assertNotNull("null fragment found at 2,0", a_oFrag);
68              assertEquals(a_oFrag.getId(), "3");
69              assertEquals(a_oFrag.getName(), "frag3");
70  
71              a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(2, 1,
72                      2, 1));
73              assertNotNull("null fragment found at 2,1", a_oFrag);
74              assertEquals(a_oFrag.getId(), "4");
75              assertEquals(a_oFrag.getName(), "frag4");
76  
77              a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(2, 2,
78                      2, 2));
79              assertNotNull("null fragment found at 2,2", a_oFrag);
80              assertEquals(a_oFrag.getId(), "5");
81              assertEquals(a_oFrag.getName(), "frag5");
82  
83          } catch (PortletPlacementException e)
84          {
85              fail("creating the PortletPlacementManager failed");
86          }
87      }
88  
89      public void testGetFragmentById()
90      {
91          // Build a request object and populate it with fragments
92          RequestContext requestContext = FragmentUtil.buildFullRequestContext();
93  
94          try
95          {
96              PortletPlacementContext ppc = new PortletPlacementContextImpl(requestContext);
97  
98              // Check the fragments
99              Fragment a_oFrag = ppc.getFragmentById("1");
100             assertNotNull("null fragment with id 1", a_oFrag);
101             assertEquals(a_oFrag.getId(), "1");
102             assertEquals(a_oFrag.getName(), "frag1");
103 
104             a_oFrag = ppc.getFragmentById("2");
105             assertNotNull("null fragment with id 2", a_oFrag);
106             assertEquals(a_oFrag.getId(), "2");
107             assertEquals(a_oFrag.getName(), "frag2");
108 
109             a_oFrag = ppc.getFragmentById("3");
110             assertNotNull("null fragment with id 3", a_oFrag);
111             assertEquals(a_oFrag.getId(), "3");
112             assertEquals(a_oFrag.getName(), "frag3");
113 
114             a_oFrag = ppc.getFragmentById("4");
115             assertNotNull("null fragment with id 4", a_oFrag);
116             assertEquals(a_oFrag.getId(), "4");
117             assertEquals(a_oFrag.getName(), "frag4");
118 
119             a_oFrag = ppc.getFragmentById("5");
120             assertNotNull("null fragment with id 5", a_oFrag);
121             assertEquals(a_oFrag.getId(), "5");
122             assertEquals(a_oFrag.getName(), "frag5");
123 
124         } catch (PortletPlacementException e)
125         {
126             fail("creating the PortletPlacementManager failed");
127         }
128     }
129 
130     public void testRemoveFragment()
131     {
132         RequestContext requestContext = FragmentUtil.buildFullRequestContext();
133 
134         try
135         {
136             PortletPlacementContext ppc = new PortletPlacementContextImpl(requestContext);
137 
138             Fragment a_oFrag = ppc
139                     .getFragmentAtNewCoordinate(new CoordinateImpl(1, 0, 1, 0));
140 
141             Coordinate a_oCoordinate = ppc.remove(a_oFrag);
142 
143             assertEquals(a_oCoordinate.getOldCol(), 1);
144             assertEquals(a_oCoordinate.getOldRow(), 0);
145 
146             // Should be the second fragment now that the first has been deleted
147             a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(1, 0,
148                     1, 0));
149             assertEquals(a_oFrag.getId(), "2");
150             assertEquals(a_oFrag.getName(), "frag2");
151         } catch (PortletPlacementException e)
152         {
153             fail("creating the PortletPlacementManager failed");
154         }
155     }
156 
157     public void footestFragmentMoveabs()
158     {
159         RequestContext requestContext = FragmentUtil.buildFullRequestContext();
160 
161         try
162         {
163             PortletPlacementContext ppc = new PortletPlacementContextImpl(requestContext);
164 
165             Fragment a_oFrag = ppc
166                     .getFragmentAtNewCoordinate(new CoordinateImpl(0, 0, 0, 0));
167 
168             Coordinate a_oCoordinate = ppc.moveAbsolute(a_oFrag, new CoordinateImpl(
169                     0, 0, 0, 1));
170 
171             assertEquals(a_oCoordinate.getOldCol(), 0);
172             assertEquals(a_oCoordinate.getOldRow(), 0);
173             assertEquals(a_oCoordinate.getNewCol(), 0);
174             assertEquals(a_oCoordinate.getNewRow(), 1);
175 
176             // Should be the second fragment now that the first has been moved
177             a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(0, 0,
178                     0, 0));
179             assertEquals(a_oFrag.getId(), "2");
180             assertEquals(a_oFrag.getName(), "frag2");
181 
182             a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(0, 0,
183                     0, 1));
184             assertEquals(a_oFrag.getId(), "1");
185             assertEquals(a_oFrag.getName(), "frag1");
186         } catch (PortletPlacementException e)
187         {
188             fail("creating the PortletPlacementManager failed");
189         }
190     }
191 
192     public void footestFragmentMoveUp()
193     {
194         RequestContext requestContext = FragmentUtil.buildFullRequestContext();
195 
196         try
197         {
198             PortletPlacementContext ppc = new PortletPlacementContextImpl(requestContext);
199 
200             Fragment a_oFrag = ppc
201                     .getFragmentAtNewCoordinate(new CoordinateImpl(0, 0, 0, 1));
202 
203             Coordinate a_oCoordinate = ppc.moveUp(a_oFrag);
204 
205             assertEquals(a_oCoordinate.getOldCol(), 0);
206             assertEquals(a_oCoordinate.getOldRow(), 1);
207             assertEquals(a_oCoordinate.getNewCol(), 0);
208             assertEquals(a_oCoordinate.getNewRow(), 0);
209 
210             // Should be the second fragment since it was moved up
211             a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(0, 0,
212                     0, 0));
213             assertEquals(a_oFrag.getId(), "2");
214             assertEquals(a_oFrag.getName(), "frag2");
215 
216             a_oFrag = ppc.getFragmentAtNewCoordinate(new CoordinateImpl(0, 0,
217                     0, 1));
218             assertEquals(a_oFrag.getId(), "1");
219             assertEquals(a_oFrag.getName(), "frag1");
220         } catch (PortletPlacementException e)
221         {
222             fail("creating the PortletPlacementManager failed");
223         }
224     }
225 
226 }