1   /*
2    * Copyright 2004-2006 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.seasar.eclipse.common.util;
17  
18  import org.eclipse.jface.resource.ImageDescriptor;
19  import org.eclipse.swt.graphics.Image;
20  import org.seasar.framework.exception.ResourceNotFoundRuntimeException;
21  
22  /**
23   * {@link ImageManager} のためのテストクラスです。<br />
24   * 
25   * @author y-komori
26   */
27  public class ImageManagerTest extends AbstractShellTest {
28  
29      /*
30       * @see org.seasar.eclipse.common.util.AbstractShellTest#setUp()
31       */
32      @Override
33      protected void setUp() throws Exception {
34          super.setUp();
35          ImageManager.init(display);
36      }
37  
38      /*
39       * @see org.seasar.eclipse.common.util.AbstractShellTest#tearDown()
40       */
41      @Override
42      protected void tearDown() throws Exception {
43          ImageManager.dispose();
44          super.tearDown();
45      }
46  
47      /**
48       * {@link ImageManager#putImage(String, String)} メソッドのテストです。<br />
49       */
50      public void testPutImage() {
51          Image image = ImageManager.putImage("ARG_IMG", "images/arg.gif");
52          Image getImage = ImageManager.getImage("ARG_IMG");
53          assertNotNull("1", getImage);
54          assertEquals("2", image, getImage);
55  
56          // 登録した Image を ImageDecriptor として取得
57          assertNotNull("3", ImageManager.getImageDescriptor("ARG_IMG"));
58  
59          ImageManager.putImage("COMPONENT_IMG", "/images/component.gif");
60          assertNotNull("4", ImageManager.getImage("ARG_IMG"));
61  
62          try {
63              ImageManager.putImage("DUMMY_IMG", "dummy");
64              fail("5");
65          } catch (ResourceNotFoundRuntimeException ex) {
66              assertTrue(true);
67          }
68      }
69  
70      /**
71       * {@link ImageManager#putImageDescriptor(String, String)} メソッドのテストです。<br />
72       */
73      public void testPutImageDescriptor() {
74          ImageDescriptor desc = ImageManager.putImageDescriptor("ARG_IMG",
75                  "images/arg.gif");
76          ImageDescriptor getDesc = ImageManager.getImageDescriptor("ARG_IMG");
77          assertNotNull("1", desc);
78          assertEquals("2", desc, getDesc);
79  
80          // 登録した ImageDecriptor を Image として取得
81          assertNotNull("3", ImageManager.getImage("ARG_IMG"));
82  
83          try {
84              ImageManager.putImageDescriptor("DUMMY_IMG", "dummy");
85              fail();
86          } catch (ResourceNotFoundRuntimeException ex) {
87              assertTrue("4", true);
88          }
89      }
90  
91      /**
92       * {@link ImageManager#loadImage(String)} メソッドのテストです。<br />
93       */
94      public void testLoadImage() {
95          Image argImg1 = ImageManager.loadImage("images/arg.gif");
96          assertNotNull("1", argImg1);
97          Image argImg2 = ImageManager.loadImage("images/arg.gif");
98          assertNotNull("2", argImg2);
99          assertSame("3", argImg1, argImg2);
100     }
101 
102     /**
103      * {@link ImageManager#loadImageDescriptor(String)} メソッドのテストです。<br />
104      */
105     public void testLoadImageDescriptor() {
106         ImageDescriptor desc1 = ImageManager
107                 .loadImageDescriptor("images/arg.gif");
108         assertNotNull("1", desc1);
109         ImageDescriptor desc2 = ImageManager
110                 .loadImageDescriptor("images/arg.gif");
111         assertNotNull("2", desc2);
112         assertSame("3", desc1, desc2);
113     }
114 
115     /**
116      * {@link ImageManager#getImage(String)} メソッドのテストです。<br />
117      */
118     public void testGetImage() {
119         assertNotNull("1", ImageManager.loadImage("images/container.gif"));
120 
121         try {
122             ImageManager.loadImage("DUMMY_IMG");
123             fail("2");
124         } catch (ResourceNotFoundRuntimeException ex) {
125             assertTrue(true);
126         }
127     }
128 
129     /**
130      * {@link ImageManager#loadImages(String)} メソッドのテストです。<br />
131      */
132     public void testLoadImages() {
133         loadImages();
134 
135         assertNotNull("1", ImageManager.getImage("ARG_IMG"));
136         assertNotNull("2", ImageManager.getImage("COMPONENT_IMG"));
137         assertNotNull("3", ImageManager.getImage("CONTAINER_IMG"));
138         assertNotNull("4", ImageManager.getImage("INCLUDE_IMG"));
139         assertNotNull("5", ImageManager.getImage("PROPERTY_IMG"));
140     }
141 
142     /**
143      * {@link ImageManager#injectImages(Class)} メソッドのテストです。<br />
144      */
145     public void testInjectImages() {
146         loadImages();
147         ImageManager.injectImages(Images.class);
148 
149         assertNotNull("1", Images.ARG_IMG);
150         assertEquals("2", ImageManager.getImage("ARG_IMG"), Images.ARG_IMG);
151 
152         assertNotNull("3", Images.COMPONENT_IMG);
153 
154         assertNotNull("4", Images.CONTAINER_IMG);
155         assertEquals("5", ImageManager.getImage("CONTAINER_IMG"),
156                 Images.CONTAINER_IMG);
157 
158         assertNotNull("6", Images.INCLUDE_IMG);
159     }
160 
161     /**
162      * {@link ImageManager#dispose()} メソッドのテストです。<br />
163      */
164     public void testDispose() {
165         loadImages();
166         Image argImage = ImageManager.getImage("ARG_IMG");
167         Image containerImage = ImageManager.getImage("CONTAINER_IMG");
168         assertNotNull("1", argImage);
169         assertNotNull("2", containerImage);
170 
171         ImageManager.dispose();
172 
173         try {
174             ImageManager.getImage("ARG_IMG");
175             fail("3");
176         } catch (NullPointerException ex) {
177             assertTrue(true);
178         }
179 
180         assertTrue("4", argImage.isDisposed());
181         assertTrue("5", containerImage.isDisposed());
182     }
183 
184     /**
185      * {@link ImageManager#normalizePath(String)} メソッドのテストです。<br />
186      */
187     public void testNormalizePath() {
188         assertEquals(
189                 "1",
190                 "org/seasar/eclipse/common/util/ImageManager",
191                 ImageManager
192                         .normalizePath("/org/seasar/eclipse/common/util/ImageManager"));
193         assertEquals(
194                 "2",
195                 "org/seasar/eclipse/common/util/ImageManager",
196                 ImageManager
197                         .normalizePath("org/seasar/eclipse/common/util/ImageManager"));
198         assertEquals("3", "", ImageManager.normalizePath("/"));
199         assertNull("4", ImageManager.normalizePath(null));
200     }
201 
202     protected void loadImages() {
203         ImageManager
204                 .loadImages("org/seasar/eclipse/common/util/ImageManagerTest");
205     }
206 
207     /**
208      * {@link ImageManager#injectImages(Class)} メソッドのテスト用クラスです。<br />
209      * 
210      * @author y-komori
211      */
212     public static class Images {
213         public static Image ARG_IMG;
214 
215         public static ImageDescriptor COMPONENT_IMG;
216 
217         public static Image CONTAINER_IMG;
218 
219         public static ImageDescriptor INCLUDE_IMG;
220 
221         public static Image DUMMY_IMAGE;
222 
223         public static ImageDescriptor DUMMY_IMAGE_DESC;
224 
225         public static final Image NO_TARGET_1 = null;
226 
227         private Image NO_TARGET_2;
228 
229         private static Image NO_TARGET_3;
230 
231         protected Image NO_TARGET_4;
232 
233         protected static Image NO_TARGET_5;
234 
235         Image NO_TARGET_6;
236 
237         static Image NO_TARGET_7;
238     }
239 }