001 /* 002 * $Id: MessagesTestCase.java 354761 2005-12-07 15:11:58Z niallp $ 003 * $Revision: 354761 $ 004 * $Date: 2005-12-07 15:11:58 +0000 (Wed, 07 Dec 2005) $ 005 * 006 * ==================================================================== 007 * 008 * Copyright 2003-2005 The Apache Software Foundation 009 * 010 * Licensed under the Apache License, Version 2.0 (the "License"); 011 * you may not use this file except in compliance with the License. 012 * You may obtain a copy of the License at 013 * 014 * http://www.apache.org/licenses/LICENSE-2.0 015 * 016 * Unless required by applicable law or agreed to in writing, software 017 * distributed under the License is distributed on an "AS IS" BASIS, 018 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 019 * See the License for the specific language governing permissions and 020 * limitations under the License. 021 * 022 */ 023 024 package org.apache.commons.resources; 025 026 import java.util.Locale; 027 028 import junit.framework.Test; 029 import junit.framework.TestCase; 030 import junit.framework.TestSuite; 031 032 import org.apache.commons.resources.impl.ResourceBundleResourcesFactory; 033 034 /** 035 * <p>Unit tests for 036 * <code>org.apache.commons.resources.Messages</code>. 037 * </p> 038 */ 039 public class MessagesTestCase extends TestCase { 040 041 // Configuration value for our resource bundles 042 protected static final String CONFIG = "org.apache.commons.resources.impl.TestResources"; 043 044 // Logical name of the Resources instance to be created 045 protected static final String NAME = "name"; 046 047 048 // The ResourcesFactory to use for acquiring the Resources 049 protected ResourcesFactory factory = null; 050 051 052 // The Resources instance containing our messages 053 protected Resources resources = null; 054 055 // The Messages instance to be tested 056 protected Messages messages = null; 057 058 059 // ----------------------------------------------------------- Constructors 060 061 062 public MessagesTestCase(String name) { 063 super(name); 064 } 065 066 067 // --------------------------------------------------- Overall Test Methods 068 069 070 // Set up instance variables required by this test case 071 public void setUp() throws Exception { 072 factory = new ResourceBundleResourcesFactory(); 073 resources = factory.getResources(NAME, CONFIG); 074 resources.setReturnNull(false); 075 messages = new Messages(resources); 076 } 077 078 // Return the tests included in this test suite 079 public static Test suite() { 080 return (new TestSuite(MessagesTestCase.class)); 081 } 082 083 // Tear down the instance variables required by this test case 084 public void tearDown() { 085 messages = null; 086 resources = null; 087 factory = null; 088 } 089 090 091 // ------------------------------------------------ Individual Test Methods 092 093 094 /** 095 * Test the use of the shortcut getMessages() method. 096 */ 097 public void testLocal() { 098 String message = null; 099 100 Messages local = 101 Messages.getMessages( 102 "org.apache.commons.resources.impl.LocalStrings"); 103 104 assertNotNull("Local messages found", local); 105 106 message = local.getMessage("local.message"); 107 108 assertEquals( 109 "Correct individual message", 110 "[Local] REPLACE {0} WITH {1}", 111 message); 112 113 message = 114 local.getMessage("local.message", new String[] { "abc", "def" }); 115 116 assertEquals( 117 "Correct replaced message", 118 "[Local] REPLACE abc WITH def", 119 message); 120 121 local.getResources().setReturnNull(false); 122 message = local.getMessage("local.missing"); 123 assertEquals("Correct missing message", "???local.missing???", message); 124 125 126 Messages messages2 = new MyMessages(null); 127 Messages messages3 = messages2.getMessages(null); 128 assertNull("Invalid Messages", messages3); 129 130 } 131 132 133 134 /** 135 * Test the ability to retrieve messages with replacements. 136 */ 137 public void testMessage() { 138 String message = null; 139 140 message = messages.getMessage("test.missing"); 141 assertEquals("Correct missing message", "???test.missing???", message); 142 143 message = messages.getMessage(Locale.ENGLISH, "test.message"); 144 assertEquals( 145 "Correct individual message", 146 "[Base] REPLACE {0} WITH {1}", 147 message); 148 149 message = 150 messages.getMessage("test.message", new String[] { "abc", "def" }); 151 152 assertEquals( 153 "Correct replaced message", 154 "[Base] REPLACE abc WITH def", 155 message); 156 157 message = 158 messages.getMessage(Locale.ENGLISH, "test.message", new String[] { "abc", "def" }); 159 160 assertEquals( 161 "Correct replaced message", 162 "[Base] REPLACE abc WITH def", 163 message); 164 165 message = 166 messages.getMessage(Locale.ENGLISH, "test.message.single", "abc"); 167 168 assertEquals( 169 "Correct replaced message", 170 "[Base] REPLACE abc", 171 message); 172 173 message = 174 messages.getMessage("test.message.single", "abc"); 175 176 assertEquals( 177 "Correct replaced message", 178 "[Base] REPLACE abc", 179 message); 180 181 Resources resources2 = 182 factory.getResources(NAME + "-does-not-exist", 183 CONFIG + "-does-not-exist"); 184 resources2.setReturnNull(false); 185 Messages messages2 = new Messages(resources2); 186 message = messages2.getMessage("test.message"); 187 188 Exception exception = new Exception("Bad Implementation"); 189 ResourcesException resourcesException = new ResourcesException(exception); 190 try{ 191 if (true) 192 throw resourcesException; 193 } 194 catch(ResourcesException e){ 195 assertEquals("Check exception", e, resourcesException); 196 assertEquals("Check exception cause", e.getRootCause(), exception); 197 assertEquals("Check exception message", e.getMessage(), exception.getMessage()); 198 } 199 200 } 201 202 203 /** 204 * Test the ability to retrieve messages with replacements. 205 */ 206 public void testMessages() { 207 String message = null; 208 209 message = messages.getMessage("test.message"); 210 assertEquals( 211 "Correct individual message", 212 "[Base] REPLACE {0} WITH {1}", 213 message); 214 215 message = 216 messages.getMessage("test.message", new String[] { "abc", "def" }); 217 218 assertEquals( 219 "Correct replaced message", 220 "[Base] REPLACE abc WITH def", 221 message); 222 223 message = messages.getMessage("test.missing"); 224 assertEquals("Correct missing message", "???test.missing???", message); 225 226 227 } 228 229 230 /** 231 * Test the characteristics of a newly created instance. 232 */ 233 public void testPristine() { 234 assertNotNull(messages); 235 assertTrue( 236 "Correct wrapped resources", 237 resources == messages.getResources()); 238 } 239 240 241 class MyMessages extends Messages{ 242 243 public MyMessages(Resources resources) { 244 super(resources); 245 ResourcesFactory factory = new ResourcesFactory() { 246 public Resources getResources(String name) 247 throws ResourcesException { 248 throw new ResourcesException("Bad Implementation"); 249 } 250 251 public boolean isReturnNull() { 252 return false; 253 } 254 255 public void setReturnNull(boolean returnNull) {} 256 257 public Resources getResources(String name, String config) throws ResourcesException { 258 return null; 259 } 260 261 public void release() throws ResourcesException { 262 } 263 }; 264 Messages.setFactory(factory); 265 } 266 267 } 268 }