/*
* Copyright (c) 2007 NTT DATA Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package jp.terasoluna.fw.message;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;
import static uk.org.lidalia.slf4jtest.LoggingEvent.error;
import static java.util.Arrays.asList;
import static org.hamcrest.core.Is.*;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Test;
/**
* {@link jp.terasoluna.fw.message.DataSourceMessageSource} クラスのブラックボックステスト。
* <p>
* <h4>【クラスの概要】</h4> DAOから取得したメッセージリソースより、メッセージコード及びロケールをキー<br>
* として、メッセージもしくはメッセージフォーマットを決定するクラス
* <p>
* @see jp.terasoluna.fw.message.DataSourceMessageSource
*/
public class DataSourceMessageSourceTest {
private TestLogger logger = TestLoggerFactory.getTestLogger(
DataSourceMessageSource.class);
/**
* 終了処理を行う。
*/
@After
public void tearDown() {
logger.clear();
}
/**
* testSetDefaultLocale01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) defaultLocale:Locale JAPAN<br>
* (状態) this.defaultLocale:null<br>
* <br>
* 期待値:(状態変化) this.defaultLocale:引数で設定したLocale<br>
* <br>
* Locale属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetDefaultLocale01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
ds.defaultLocale = null;
Locale locale = Locale.JAPAN;
// テスト実施
ds.setDefaultLocale(locale);
// 判定
assertEquals(locale, ds.defaultLocale);
}
/**
* testSetDbMessageResourceDAO01() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(引数) dbMessageResourceDAO:DBMessageResourceDAOオブジェクト<br>
* (状態) this.dbMessageResourceDAO:null<br>
* <br>
* 期待値:(状態変化) this.dbMessageResourceDAO:引数で設定したDAOオブジェクト<br>
* <br>
* DBMessageResourceDAO属性のsetterメソッドのテスト。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testSetDbMessageResourceDAO01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
ds.dbMessageResourceDAO = null;
// テスト実施
ds.setDbMessageResourceDAO(dbmr);
// 判定
assertSame(dbmr, ds.dbMessageResourceDAO);
}
/**
* testAfterPropertiesSet01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値: <br>
* 期待値:(状態変化) readMessageFromDataSource:呼び出されているのを確認する。<br>
* <br>
* afterPropertiesSetが実行されるとreadMessageFromDataSourceが実行されるのを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testAfterPropertiesSet01() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub01 ds = new DataSourceMessageSource_DataSourceMessageSourceStub01();
// テスト実施
ds.afterPropertiesSet();
// 判定
assertTrue(ds.isRead);
}
/**
* testReloadDataSourceMessage01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値: <br>
* 期待値:(状態変化) readMessageFromDataSource:呼び出されているのを確認する。<br>
* <br>
* reloadDataSourceMessageが実行されるとreadMessageFromDataSourceが実行されるのを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReloadDataSourceMessage01() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub01 ds = new DataSourceMessageSource_DataSourceMessageSourceStub01();
// テスト実施
ds.reloadDataSourceMessage();
// 判定
assertTrue(ds.isRead);
}
/**
* testReadMessageFromDataSource01() <br>
* <br>
* (正常系) <br>
* 観点:D,E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が0<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* <br>
* DBMessageのキャッシュが行なわれず、何もしないで終了する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource01() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
dbmr.list = new ArrayList<DBMessage>();
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(0, ds.list.size());
}
/**
* testReadMessageFromDataSource02() <br>
* <br>
* (正常系) <br>
* 観点:D,E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が1<br>
* DBMessage("test01","JP","ja","kaisai","テストメッセージ01")<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されたことを確認する。<br>
* 引数がわたさたれていることを確認する。<br>
* <br>
* DBMessageオブジェクトから値を取り出し、マップにつめなおすことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource02() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage("test01", "JP", "ja", "kaisai", "テストメッセージ01");
list.add(db1);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(1, ds.list.size());
assertSame(db1, ds.list.get(0));
}
/**
* testReadMessageFromDataSource03() <br>
* <br>
* (正常系) <br>
* 観点:D,E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():LIstの要素数が3<br>
* DBMessage("test01","JP","ja","kaisai","テストメッセージ01")<br>
* DBMessage("test02","JP","ja","kaisai","テストメッセージ02")<br>
* DBMessage("test03","JP","ja","kaisai","テストメッセージ03")<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されたことを確認する。<br>
* 引数がわたさたれていることを確認する。<br>
* <br>
* DBMessageオブジェクトから値を取り出し、マップにつめなおすことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource03() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage("test01", "JP", "ja", "kaisai", "テストメッセージ01");
DBMessage db2 = new DBMessage("test02", "JP", "ja", "kaisai", "テストメッセージ02");
DBMessage db3 = new DBMessage("test03", "JP", "ja", "kaisai", "テストメッセージ03");
list.add(db1);
list.add(db2);
list.add(db3);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(3, ds.list.size());
assertSame(db1, ds.list.get(0));
assertSame(db2, ds.list.get(1));
assertSame(db3, ds.list.get(2));
}
/**
* testReadMessageFromDataSource04() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が1<br>
* DBMessage("","","","","")<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されたことを確認する。<br>
* 引数がわたさたれていることを確認する。<br>
* <br>
* DBMessageオブジェクトから値を取り出し、マップにつめなおすことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource04() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage("", "", "", "", "");
list.add(db1);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(1, ds.list.size());
assertSame(db1, ds.list.get(0));
}
/**
* testReadMessageFromDataSource05() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が1<br>
* DBMessage(null,null,null.null.null)<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されていないことを確認する。<br>
* <br>
* メッセージコードもしくはメッセージ本体がないとマップに格納されないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource05() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage(null, null, null, null, null);
list.add(db1);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(0, ds.list.size());
}
/**
* testReadMessageFromDataSource06() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():LIstの要素数が1<br>
* DBMessage(null,"JP","ja","kaisai","テストメッセージ01")<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されていないことを確認する。<br>
* <br>
* メッセージコードもしくはメッセージ本体がないとマップに格納されないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource06() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage(null, "JP", "ja", "kaisai", "テストメッセージ01");
list.add(db1);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(0, ds.list.size());
}
/**
* testReadMessageFromDataSource07() <br>
* <br>
* (正常系) <br>
* 観点:E <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が1<br>
* DBMessage("test01","JP","ja","kaisai",null)<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されていないことを確認する。<br>
* <br>
* メッセージコードもしくはメッセージ本体がないとマップに格納されないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testReadMessageFromDataSource07() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
List<DBMessage> list = new ArrayList<DBMessage>();
DBMessage db1 = new DBMessage("test01", "JP", "ja", "kaisai", null);
list.add(db1);
dbmr.list = list;
// テスト実施
ds.readMessagesFromDataSource();
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(0, ds.list.size());
}
/**
* testReadMessageFromDataSource08() <br>
* <br>
* (異常系) <br>
* 観点:E,G <br>
* <br>
* 入力値:(状態) dbMessageResourceDAO.findDBMessage():Listの要素数が1<br>
* DBMessageオブジェクト以外のオブジェクト<br>
* <br>
* 期待値:(状態変化) cachedMergedProperties.clear():呼び出されることを確認する。<br>
* (状態変化) cachedMessageFormats.clear():呼び出されることを確認する。<br>
* (状態変化) dbMessageResourceDAO.findDBMessage():呼び出されることを確認する。<br>
* (状態変化) mapMessage():呼び出されていないことを確認する。<br>
* (状態変化) 例外:ClassCastException<br>
* <br>
* DBMessageオブジェクトを渡さないと、例外が発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
@SuppressWarnings("unchecked")
public void testReadMessageFromDataSource08() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub02 ds = new DataSourceMessageSource_DataSourceMessageSourceStub02();
DataSourceMessageSource_DBMessageResoueceDAOStub01 dbmr = new DataSourceMessageSource_DBMessageResoueceDAOStub01();
Properties prop = new Properties();
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
ds.cachedMergedProperties.put(Locale.JAPAN, prop);
ds.cachedMessageFormats.put("foo", map);
ds.dbMessageResourceDAO = dbmr;
@SuppressWarnings("rawtypes")
List list = new ArrayList();
Object db1 = new Object();
list.add(db1);
dbmr.list = list;
try {
// テスト実施
ds.readMessagesFromDataSource();
fail();
} catch (ClassCastException e) {
// 判定
assertTrue(ds.cachedMergedProperties.isEmpty());
assertTrue(ds.cachedMessageFormats.isEmpty());
assertTrue(dbmr.isRead);
assertEquals(0, ds.list.size());
}
}
/**
* testMapMessage01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) message:DBMessageオブジェクト<br>
* <br>
* 期待値:(状態変化) createLocale(message):指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getMessages:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) messages:messageより取得した値がmessagesに格納されていることを確認する。<br>
* <br>
* 取得したDBMessageオブジェクトから値を取り出し、テーブルに格納することを確認。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testMapMessage01() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub03 ds = new DataSourceMessageSource_DataSourceMessageSourceStub03();
DBMessage message = new DBMessage("a", "b", "c", "d", "e");
Locale locale = new Locale("ja", "JP");
ds.locale = locale;
Properties props = new Properties();
ds.messages = props;
// テスト実施
ds.mapMessage(message);
// 判定
assertSame(message, ds.dbm);
assertSame(locale, ds.locale2);
assertSame(props, ds.messages);
}
/**
* testCreateLocale01() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) message:Languageカラムがnullの場合。<br>
* DBMessage("test01",null,null,null,"テストメッセージ01")<br>
* (状態) defaultLocale:Locale.FRENCH<br>
* <br>
* 期待値:(戻り値) Localeオブジェクト:Locale("fr","","")<br>
* <br>
* 与えられた引数からLocaleが決定できない場合、デフォルトロケールを使う。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateLocale01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DBMessage message = new DBMessage("test01", null, null, null, "テストメッセージ01");
ds.defaultLocale = Locale.FRENCH;
// テスト実施
Locale returnLocale = ds.createLocale(message);
// 判定
assertSame(ds.defaultLocale, returnLocale);
}
/**
* testCreateLocale02() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) message:Languageカラムがnullの場合。<br>
* DBMessage("test01",null,null,null,"テストメッセージ01")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) Localeオブジェクト:例外が発生する。<br>
* (状態変化) 例外:IllegalArgumentException<br>
* メッセージ:Can't resolve Locale.Define Locale in MessageSource or Defaultlocale<br>
* (状態変化) ログ:エラーログ:Can't resolve Locale.Define Locale in MessageSource or Defaultlocale<br>
* <br>
* Localeが指定できず、例外を出す。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateLocale02() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DBMessage message = new DBMessage("test01", null, null, null, "テストメッセージ01");
ds.defaultLocale = null;
// テスト実施
try {
ds.createLocale(message);
fail();
} catch (IllegalArgumentException e) {
// 判定
assertEquals(
"Can't resolve Locale.Define Locale in MessageSource or Defaultlocale.",
e.getMessage());
assertThat(logger.getLoggingEvents(), is(asList(error(
"Can't resolve Locale.Define Locale in MessageSource or Defaultlocale."))));
}
}
/**
* testCreateLocale03() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) message:Countryカラムがnullの場合。<br>
* DBMessage("test01","ja",null,null,"テストメッセージ01")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) Localeオブジェクト:Locale("ja","","")<br>
* <br>
* 与えられた引数から、Localeを決定する。与えられる引数は言語コードである。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateLocale03() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DBMessage message = new DBMessage("test01", "ja", null, null, "テストメッセージ01");
ds.defaultLocale = null;
// テスト実施
Locale returnLocale = ds.createLocale(message);
// 判定
assertEquals("ja", returnLocale.getLanguage());
assertEquals("", returnLocale.getCountry());
assertEquals("", returnLocale.getVariant());
}
/**
* testCreateLocale04() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) message:Variantカラムがnullの場合。<br>
* DBMessage("test01","ja","JP",null,"テストメッセージ01")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) Localeオブジェクト:Locale("ja","JP","")<br>
* <br>
* 与えられた引数から、Localeを決定する。与えられる引数は言語コードと国コードである。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateLocale04() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DBMessage message = new DBMessage("test01", "ja", "JP", null, "テストメッセージ01");
ds.defaultLocale = null;
// テスト実施
Locale returnLocale = ds.createLocale(message);
// 判定
assertEquals("ja", returnLocale.getLanguage());
assertEquals("JP", returnLocale.getCountry());
assertEquals("", returnLocale.getVariant());
}
/**
* testCreateLocale05() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) message:Variantカラムがnullでない場合。<br>
* DBMessage("test01","ja","JP","kansai","テストメッセージ01")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) Localeオブジェクト:Locale("ja","JP","kansai")<br>
* <br>
* 与えられた引数から、Localeを決定する。与えられる引数は言語コードと 国コードとバリアントコードである。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testCreateLocale05() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
DBMessage message = new DBMessage("test01", "ja", "JP", "kansai", "テストメッセージ01");
ds.defaultLocale = null;
// テスト実施
Locale returnLocale = ds.createLocale(message);
// 判定
assertEquals("ja", returnLocale.getLanguage());
assertEquals("JP", returnLocale.getCountry());
assertEquals("kansai", returnLocale.getVariant());
}
/**
* testGetMessages01() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja,JP,"")<br>
* (状態) cachedMergedProperties.get(locale):HashMap{<br>
* Local(ja_JP)=Properties()<br>
* }<br>
* <br>
* 期待値:(戻り値) messages:Properties()<br>
* (状態変化) cachedMergedProperties.get(locale):指定された引数で呼び出され ていることを確認する。<br>
* <br>
* 引数をキーとしてマップから値を取り出し、その値を戻り値として返却すること を確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessages01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "JP", "");
Properties props = new Properties();
ds.cachedMergedProperties.put(locale, props);
// テスト実施
Properties returnProp = ds.getMessages(locale);
// 判定
assertSame(props, returnProp);
}
/**
* testGetMessages02() <br>
* <br>
* (正常系) <br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja,JP,"")<br>
* (状態) cachedMergedProperties.get(locale):空のHashMap<br>
* <br>
* 期待値:(戻り値) messages:空のPropertiesオブジェクト<br>
* (状態変化) cachedMergedProperties.get(locale):指定された引数で 呼び出されていることを確認する。<br>
* (状態変化) cachedMergedProperties.put(locale,messages): HashMap<Locale,<null,null>><br>
* <br>
* 引数をキーとしてマップから取り出した値がnullだった場合、新たに生成し、格納する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessages02() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "JP", "");
ds.cachedMergedProperties.clear();
// テスト実施
Properties returnProps = ds.getMessages(locale);
// 判定
assertEquals(1, ds.cachedMergedProperties.size());
Properties result = null;
result = ds.cachedMergedProperties.get(locale);
assertSame(returnProps, result);
}
/**
* testResolveCodeWithoutArguments01() <br>
* <br>
* (正常系) <br>
* 観点:A<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) internalResolveCodeWithoutArguments:"テストメッセージ01"<br>
* <br>
* 期待値:(戻り値) msg:"テストメッセージ01"<br>
* (状態変化) internalResolveCodeWithoutArguments:指定された引数で呼び出されていることを確認する。<br>
* <br>
* 与えられた引数よりメッセージを決定し、返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCodeWithoutArguments01() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub04 ds = new DataSourceMessageSource_DataSourceMessageSourceStub04();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
String msg = "テストメッセージ01";
ds.msg = msg;
// テスト実施
String returnMsg = ds.resolveCodeWithoutArguments(code, locale);
// 判定
assertEquals(code, ds.code);
assertSame(locale, ds.locale);
assertTrue(ds.isRead);
assertEquals(msg, returnMsg);
}
/**
* testResolveCodeWithoutArguments02() <br>
* <br>
* (正常系)<br>
* 観点:A,C<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) internalResolveCodeWithoutArguments:null<br>
* <br>
* 期待値:(戻り値) msg:null<br>
* (状態変化) internalResolveCodeWithoutArguments:指定された引数で呼び出されていることを確認する。<br>
* <br>
* 与えられた引数よりメッセージが決定できず、nullを返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCodeWithoutArguments02() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub04 ds = new DataSourceMessageSource_DataSourceMessageSourceStub04();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
// テスト実施
String returnMsg = ds.resolveCodeWithoutArguments(code, locale);
// 判定
assertEquals(code, ds.code);
assertSame(locale, ds.locale);
assertTrue(ds.isRead);
assertNull(returnMsg);
}
/**
* testInternalResolveCodeWithoutArguments01() <br>
* <br>
* (正常系) <br>
* 観点:F<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessage().getProperties:"テストメッセージ01"<br>
* (状態) メッセージのlocale:Locale("ja",JP","")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) msg:"テストメッセージ01"<br>
* (状態変化) getMessage().getProperties:指定された引数で呼び出されていることを確認する。<br>
* <br>
* 指定された引数よりメッセージを決定し、返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInternalResolveCodeWithoutArguments01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
ds.cachedMergedProperties = null;
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
ds.defaultLocale = null;
// cachedMergedProperties生成
Map<Locale, Properties> map = new HashMap<Locale, Properties>();
Properties props = new Properties();
String msg = "テストメッセージ01";
props.put(code, msg);
map.put(locale, props);
ds.cachedMergedProperties = map;
// テスト実施
String returnMsg = ds.internalResolveCodeWithoutArguments(code, locale);
// 判定
assertEquals(msg, returnMsg);
}
/**
* testInternalResolveCodeWithoutArguments02() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessage().getProperties:null<br>
* (状態) メッセージのlocale:Locale("ja","","")<br>
* (状態) defaultLocale:null<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja")<br>
* }<br>
* (状態) getMessage(locales.get()).getProperties():1回目の戻り値<br>
* "テストメッセージ01"<br>
* <br>
* 期待値:(戻り値) msg:"テストメッセージ01"<br>
* (状態変化) getMessage().getProperties:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getAlternativeLocales:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getMessages(locales.get()).getProperties():指定された引数で呼び出されていることを確認する。<br>
* <br>
* 指定された引数でメッセージを決定できず、新たに作成した引数によりメッセージを決定し、 返却する。また、ロケールがnullでもエラーにならないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInternalResolveCodeWithoutArguments02() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
ds.defaultLocale = null;
// cachedMergedProperties生成
Map<Locale, Properties> map = new HashMap<Locale, Properties>();
Properties props = new Properties();
Locale msglocale = new Locale("ja", "", "");
String msg = "テストメッセージ01";
props.put(code, msg);
map.put(msglocale, props);
ds.cachedMergedProperties = map;
// テスト実施
String returnMsg = ds.internalResolveCodeWithoutArguments(code, locale);
// 判定
assertEquals("テストメッセージ01", returnMsg);
}
/**
* testInternalResolveCodeWithoutArguments03() <br>
* <br>
* (正常系) <br>
* 観点:F<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessage().getProperties:null<br>
* (状態) メッセージのlocale:Locale("en","","")<br>
* (状態) defaultLocale:Locale("en","US","")<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja","","")<br>
* Locale("en","US","")<br>
* Locale("en","","")<br>
* }<br>
* (状態) getMessage(locales.get()).getProperties():1回目の戻り値<br>
* null<br>
* 2回目の戻り値<br>
* null<br>
* 3回目の戻り値<br>
* "テストメッセージ01"<br>
* <br>
* 期待値:(戻り値) msg:"テストメッセージ01"<br>
* (状態変化) getMessage().getProperties:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getAlternativeLocales:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getMessages(locales.get()).getProperties():指定された引数で 呼び出されていることを確認する。<br>
* <br>
* 指定された引数でメッセージを決定できず、新たに作成した引数により メッセージを決定し、返却する。また、ロケールがnullでもエラーにならないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInternalResolveCodeWithoutArguments03() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
ds.defaultLocale = new Locale("en", "US", "");
// cachedMergedProperties生成
Map<Locale, Properties> map = new HashMap<Locale, Properties>();
Properties props = new Properties();
Locale msglocale = new Locale("en", "", "");
String msg = "テストメッセージ01";
props.put(code, msg);
map.put(msglocale, props);
ds.cachedMergedProperties = map;
// テスト実施
String returnMsg = ds.internalResolveCodeWithoutArguments(code, locale);
// 判定
assertEquals("テストメッセージ01", returnMsg);
}
/**
* testInternalResolveCodeWithoutArguments04() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessage().getProperties:null<br>
* (状態) メッセージのlocale:Locale("ja","JP","kansai")<br>
* (状態) defaultLocale:Locale("en","US","")<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja","","")<br>
* Locale("en","US","")<br>
* Locale("en","","")<br>
* }<br>
* (状態) getMessage(locales.get()).getProperties():1回目の戻り値<br>
* null<br>
* 2回目の戻り値<br>
* null<br>
* 3回目の戻り値<br>
* null<br>
* <br>
* 期待値:(戻り値) msg:null<br>
* (状態変化) getMessage().getProperties:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getAlternativeLocales:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getMessages(locales.get()).getProperties(): 指定された引数で呼び出されていることを確認する。<br>
* <br>
* 指定された引数及び新たに生成した引数より、メッセージが決定できない場合はnullを返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInternalResolveCodeWithoutArguments04() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
ds.defaultLocale = new Locale("en", "US", "");
// cachedMergedProperties生成
Map<Locale, Properties> map = new HashMap<Locale, Properties>();
Properties props = new Properties();
Locale msglocale = new Locale("ja", "JP", "kansai");
String msg = "テストメッセージ01やで";
props.put(code, msg);
map.put(msglocale, props);
ds.cachedMergedProperties = map;
// テスト実施
String returnMsg = ds.internalResolveCodeWithoutArguments(code, locale);
// 判定
assertNull(returnMsg);
}
/**
* testInternalResolveCodeWithoutArguments05() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","","")<br>
* (状態) getMessage().getProperties:null<br>
* (状態) メッセージのlocale:Locale("ja","JP","kansai")<br>
* (状態) defaultLocale:null<br>
* (状態) getAlternativeLocales():List{<br>
* }<br>
* <br>
* 期待値:(戻り値) msg:null<br>
* (状態変化) getMessage().getProperties:指定された引数で呼び出されていることを確認する。<br>
* (状態変化) getAlternativeLocales:指定された引数で呼び出されていることを確認する。<br>
* <br>
* ロケールを取得できない場合、nullを返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testInternalResolveCodeWithoutArguments05() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "", "");
ds.defaultLocale = null;
// cachedMergedProperties生成
Map<Locale, Properties> map = new HashMap<Locale, Properties>();
Properties props = new Properties();
Locale msglocale = new Locale("ja", "JP", "kansai");
String msg = "テストメッセージ01やで";
props.put(code, msg);
map.put(msglocale, props);
ds.cachedMergedProperties = map;
// テスト実施
String returnMsg = ds.internalResolveCodeWithoutArguments(code, locale);
// 判定
assertNull(returnMsg);
}
/**
* testGetAlternativeLocales01() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja","","")<br>
* (状態) defaultLocale:Locale("en","","")<br>
* <br>
* 期待値:(戻り値) locales:要素数1のList<br>
* Locale{"en","",""}<br>
* <br>
* 引数localeに言語コードしか存在しない場合、新たなlocaleのパターンを 生成しない。また、defaultLocaleに言語コードしか存在しない場合、1パターンのlocaleオブジェクトを生成し、リストに格納する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetAlternativeLocales01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "", "");
Locale defaultLocale = new Locale("en", "", "");
ds.defaultLocale = defaultLocale;
// テスト実施
List<Locale> locales = ds.getAlternativeLocales(locale);
// 判定
assertEquals(1, locales.size());
assertEquals(defaultLocale, locales.get(0));
}
/**
* testGetAlternativeLocales02() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja","JP","")<br>
* (状態) defaultLocale:Locale("en","US","")<br>
* <br>
* 期待値:(戻り値) locales:要素数2のList<br>
* Locale{"ja","",""},<br>
* Locale{"en","US",""}<br>
* Locale{"en","",""}<br>
* <br>
* 引数localeに国コードまで存在する場合、1パターンのLocaleオブジェクトを 生成する。また、defaultLocaleに国コードまで存在する場合、2パターンのlocaleオブジェクトを生成し、リストに格納する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetAlternativeLocales02() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "JP", "");
Locale defaultLocale = new Locale("en", "US", "");
ds.defaultLocale = defaultLocale;
Locale locale1 = new Locale("ja", "", "");
Locale defaultLocale2 = new Locale("en", "", "");
// テスト実施
List<Locale> locales = ds.getAlternativeLocales(locale);
// 判定
assertEquals(3, locales.size());
assertEquals(locale1, locales.get(0));
assertEquals(defaultLocale, locales.get(1));
assertEquals(defaultLocale2, locales.get(2));
}
/**
* testGetAlternativeLocales03() <br>
* <br>
* (正常系)<br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja","JP","kansai")<br>
* (状態) defaultLocale:Locale("en","US","NY")<br>
* <br>
* 期待値:(戻り値) locales:要素数5のList<br>
* Locale{"ja","JP",""}<br>
* Locale{"ja","",""}<br>
* Locale{"en","US","NY"}<br>
* Locale{"en","US",""}<br>
* Locale{"en","",""}<br>
* <br>
* 引数localeにバリアントコードまで存在する場合、2パターンの Localeオブジェクトを生成する。 また、defaultLocaleにバリアントコードまで存在する場合、 3パターンのlocaleオブジェクトを生成し、リストに格納する。
* <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetAlternativeLocales03() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "JP", "kansai");
Locale defaultLocale = new Locale("en", "US", "NY");
ds.defaultLocale = defaultLocale;
Locale locale1 = new Locale("ja", "JP", "");
Locale locale2 = new Locale("ja", "", "");
Locale defaultLocale2 = new Locale("en", "US", "");
Locale defaultLocale3 = new Locale("en", "", "");
// テスト実施
List<Locale> locales = ds.getAlternativeLocales(locale);
// 判定
assertEquals(5, locales.size());
assertEquals(locale1, locales.get(0));
assertEquals(locale2, locales.get(1));
assertEquals(defaultLocale, locales.get(2));
assertEquals(defaultLocale2, locales.get(3));
assertEquals(defaultLocale3, locales.get(4));
}
/**
* testGetAlternativeLocales04() <br>
* <br>
* (正常系)<br>
* 観点:F <br>
* <br>
* 入力値:(引数) locale:Locale("ja","JP","kansai")<br>
* (状態) defaultLocale:Locale("ja","JP","kansai")<br>
* <br>
* 期待値:(戻り値) locales:要素数2のList<br>
* Locale{"ja","JP",""}<br>
* Locale{"ja","",""}<br>
* <br>
* 引数localeとdefaultLocaleが同値であった場合、引数localeから 新たなlocaleオブジェクトを生成し、リストに格納する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetAlternativeLocales04() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "JP", "kansai");
ds.defaultLocale = locale;
Locale locale1 = new Locale("ja", "JP", "");
Locale locale2 = new Locale("ja", "", "");
// テスト実施
List<Locale> locales = ds.getAlternativeLocales(locale);
// 判定
assertEquals(2, locales.size());
assertEquals(locale1, locales.get(0));
assertEquals(locale2, locales.get(1));
}
/**
* testGetAlternativeLocales05() <br>
* <br>
* (正常系) <br>
* 観点:F<br>
* <br>
* 入力値:(引数) locale:Locale("ja","","")<br>
* (状態) defaultLocale:null<br>
* <br>
* 期待値:(戻り値) locales:要素数0のList<br>
* <br>
* defaultLocaleの設定が行われていない場合は、Listが0で返る。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetAlternativeLocales05() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
Locale locale = new Locale("ja", "", "");
ds.defaultLocale = null;
// テスト実施
List<Locale> locales = ds.getAlternativeLocales(locale);
// 判定
assertEquals(0, locales.size());
}
/**
* testResolveCode01() <br>
* <br>
* (正常系) <br>
* 観点:A<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessageFormat(code,locale):"テストメッセージ01"<br>
* (状態) defaultLocale:null<br>
* (状態) メッセージのロケール:Locale("ja","JP","")<br>
* <br>
* 期待値:(戻り値) messageFormat:"テストメッセージ01"<br>
* (状態変化) getMessageFormat(code,locale):指定された引数により 呼び出されたことを確認する。<br>
* <br>
* 指定された引数よりメッセージフォーマットを決定し、返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCode01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
// cachedMergedProperties生成
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
Locale formatlocale = new Locale("ja", "JP", "");
MessageFormat mFormat = new MessageFormat("");
mFormat.setLocale(formatlocale);
mFormat.applyPattern("テストメッセージ01");
map.put(formatlocale, mFormat);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat mfreturn = ds.resolveCode(code, locale);
// 判定
assertSame(mFormat, mfreturn);
}
/**
* testResolveCode02() <br>
* <br>
* (正常系)<br>
* 観点:A<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","")<br>
* (状態) getMessageFormat(code,locale):null<br>
* (状態) defaultLocale:null<br>
* (状態) メッセージのロケール:Locale("ja","","")<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja")<br>
* }<br>
* (状態) getMessageFormat(code.locales.get(i)):1回目の戻り値<br>
* "テストメッセージ01"<br>
* <br>
* 期待値:(戻り値) messageFormat:"テストメッセージ01"<br>
* (状態変化) getAlternativeLocale:指定された引数により呼び出された ことを確認する。<br>
* (状態変化) getMessageFormat(code,locale):指定された引数により 呼び出されたことを確認する。<br>
* (状態変化) getMessageFormat(code.locales.get(i)):指定された引数に より呼び出されたことを確認する。<br>
* <br>
* 指定された引数でメッセージフォーマットを決定できず、新たに作成した引数に よりメッセージフォーマットを決定し、返却する。 また、ロケールがnullでもエラーにならないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCode02() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
// cachedMergedProperties生成
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
Locale formatlocale = new Locale("ja", "", "");
MessageFormat mFormat = new MessageFormat("");
mFormat.setLocale(formatlocale);
mFormat.applyPattern("テストメッセージ01");
map.put(formatlocale, mFormat);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat mfreturn = ds.resolveCode(code, locale);
// 判定
assertSame(mFormat, mfreturn);
}
/**
* testResolveCode03() <br>
* <br>
* (正常系)<br>
* 観点:A<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","kansai")<br>
* (状態) getMessageFormat(code,locale):null<br>
* (状態) defaultLocale:Locale("en","","")<br>
* (状態) メッセージのロケール:Locale("en","","")<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja","JP","")<br>
* Locale("ja","","")<br>
* Locale("en","","")<br>
* }<br>
* (状態) getMessageFormat(code.locales.get(i)):1回目の戻り値<br>
* null<br>
* 2回目の戻り値<br>
* null<br>
* 3回目の戻り値<br>
* "テストメッセージ01"<br>
* <br>
* 期待値:(戻り値) messageFormat:"テストメッセージ01"<br>
* (状態変化) getAlternativeLocale:指定された引数により呼び出された ことを確認する。<br>
* (状態変化) getMessageFormat(code,locale):指定された引数により 呼び出されたことを確認する。<br>
* (状態変化) getMessageFormat(code.locales.get(i)):指定された引数 により呼び出されたことを確認する。<br>
* <br>
* 指定された引数でメッセージフォーマットを決定できず、新たに作成した引数 によりメッセージフォーマットを決定し、返却する。 また、ロケールがnullでもエラーにならないことを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCode03() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "kansai");
Locale defaultLocale = new Locale("en", "", "");
ds.defaultLocale = defaultLocale;
// cachedMergedProperties生成
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
Locale formatlocale = new Locale("en", "", "");
MessageFormat mFormat = new MessageFormat("");
mFormat.setLocale(formatlocale);
mFormat.applyPattern("テストメッセージ01");
map.put(formatlocale, mFormat);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat mfreturn = ds.resolveCode(code, locale);
// 判定
assertSame(mFormat, mfreturn);
}
/**
* testResolveCode04() <br>
* <br>
* (正常系)<br>
* 観点:A <br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","JP","kansai")<br>
* (状態) getMessageFormat(code,locale):null<br>
* (状態) defaultLocale:Locale("en","","")<br>
* (状態) メッセージのロケール:Locale("en","US","NY")<br>
* (状態) getAlternativeLocales():List{<br>
* Locale("ja","JP","")<br>
* Locale("ja","","")<br>
* Locale("en","","")<br>
* }<br>
* (状態) getMessageFormat(code.locales.get(i)):1回目の戻り値<br>
* null<br>
* 2回目の戻り値<br>
* null<br>
* 3回目の戻り値<br>
* null<br>
* <br>
* 期待値:(戻り値) messageFormat:null<br>
* (状態変化) getAlternativeLocale:指定された引数により呼び出された ことを確認する。<br>
* (状態変化) getMessageFormat(code,locale):指定された引数により 呼び出されたことを確認する。<br>
* (状態変化) getMessageFormat(code.locales.get(i)):指定された引数 により呼び出されたことを確認する。<br>
* <br>
* 指定された引数及び新たに生成した引数より、メッセージフォーマットが 決定できない場合はnullを返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCode04() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "kansai");
Locale defaultLocale = new Locale("en", "", "");
ds.defaultLocale = defaultLocale;
// cachedMergedProperties生成
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
Locale formatlocale = new Locale("en", "US", "NY");
MessageFormat mFormat = new MessageFormat("");
mFormat.setLocale(formatlocale);
mFormat.applyPattern("テストメッセージ01");
map.put(formatlocale, mFormat);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat mfreturn = ds.resolveCode(code, locale);
// 判定
assertNull(mfreturn);
}
/**
* testResolveCode05() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja","","")<br>
* (状態) getMessageFormat(code,locale):null<br>
* (状態) defaultLocale:null<br>
* (状態) メッセージのロケール:Locale("en","US","NY")<br>
* (状態) getAlternativeLocales():List{<br>
* }<br>
* <br>
* 期待値:(戻り値) messageFormat:null<br>
* (状態変化) getAlternativeLocale:指定された引数で呼び出されている ことを確認する。<br>
* (状態変化) getMessageFormat(code,locale):指定された引数で 呼び出されていることを確認する。<br>
* <br>
* ロケールを取得できない場合、nullを返却する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testResolveCode05() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "", "");
ds.defaultLocale = null;
// cachedMergedProperties生成
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
Locale formatlocale = new Locale("en", "US", "NY");
MessageFormat mFormat = new MessageFormat("");
mFormat.setLocale(formatlocale);
mFormat.applyPattern("テストメッセージ01");
map.put(formatlocale, mFormat);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat mfreturn = ds.resolveCode(code, locale);
// 判定
assertNull(mfreturn);
}
/**
* testGetMessageFormat01() <br>
* <br>
* (正常系)<br>
* 観点:A<br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja",JP","")<br>
* (状態) cashedMessageFormats:<"code01",<Locale("ja","JP"), MessageFormat("")>><br>
* (状態) メッセージフォーマットのlocale:Locale("ja",JP","")<br>
* <br>
* 期待値:(戻り値) result:メッセージフォーマットオブジェクト<br>
* <br>
* 引数に対応する値がすでにキャッシュされたMapにあり、かつ取り出した値が nullでない場合。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessageFormat01() throws Exception {
// 前処理
DataSourceMessageSource ds = new DataSourceMessageSource();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
MessageFormat mf = new MessageFormat("");
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
map.put(locale, mf);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat result = ds.getMessageFormat(code, locale);
// 判定
assertSame(mf, result);
}
/**
* testGetMessageFormat02() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja",JP","")<br>
* (状態) cashedMessageFormats:<"code01",<Locale("ja","JP"),null>><br>
* (状態) メッセージフォーマットのlocale:Locale("ja",JP","")<br>
* (状態) getMessage(locale):Properties<"code01","テストメッセージ01"><br>
* <br>
* 期待値:(戻り値) result:メッセージフォーマットオブジェクト<br>
* <br>
* 引数に対応する値がすでにキャッシュされたMapにあるが取り出した値がnull、 かつメッセージリソースに引数に対応する値があり、 メッセージフォーマットの生成に成功した場合。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessageFormat02() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub18 ds = new DataSourceMessageSource_DataSourceMessageSourceStub18();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
MessageFormat mf = null;
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
map.put(locale, mf);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat result = ds.getMessageFormat(code, locale);
// 判定
assertSame(mf, result);
assertTrue(ds.isRead_A1);
}
/**
* testGetMessageFormat03() <br>
* <br>
* (正常系) <br>
* 観点:A <br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja",JP","")<br>
* (状態) cashedMessageFormats:<"code01",<Locale("ja","JP"),null><br>
* (状態) メッセージフォーマットのlocale:Locale("ja",JP","")<br>
* (状態) getMessage(locale):Properties<"abc",""><br>
* <br>
* 期待値:(戻り値) result:null<br>
* <br>
* 引数に対応する値がすでにキャッシュされたMapにあるが取り出した値がnull、 かつメッセージリソースに引数に対応する値がない場合。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessageFormat03() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub19 ds = new DataSourceMessageSource_DataSourceMessageSourceStub19();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
MessageFormat mf = null;
Map<Locale, MessageFormat> map = new HashMap<Locale, MessageFormat>();
map.put(locale, mf);
ds.cachedMessageFormats.put(code, map);
// テスト実施
MessageFormat result = ds.getMessageFormat(code, locale);
// 判定
assertNull(result);
assertTrue(ds.isRead_A1);
}
/**
* testGetMessageFormat04() <br>
* <br>
* (正常系)<br>
* 観点:A <br>
* <br>
* 入力値:(引数) code:"code01"<br>
* (引数) locale:Locale("ja",JP","")<br>
* (状態) cashedMessageFormats:<"code01",null><br>
* (状態) メッセージフォーマットのlocale:Locale("ja",JP","")<br>
* (状態) getMessage(locale):Properties<"code01","テストメッセージ01"><br>
* <br>
* 期待値:(戻り値) result:メッセージフォーマットオブジェクト<br>
* <br>
* 引数に対応する値がすでにキャッシュされたMapになく、かつメッセージリソース に引数に対応する値があり、メッセージフォーマットの生成に成功した場合。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testGetMessageFormat04() throws Exception {
// 前処理
DataSourceMessageSource_DataSourceMessageSourceStub18 ds = new DataSourceMessageSource_DataSourceMessageSourceStub18();
String code = "code01";
Locale locale = new Locale("ja", "JP", "");
ds.cachedMessageFormats.put(code, null);
MessageFormat mf = new MessageFormat("");
ds.messageFormat = mf;
ds.cachedMessageFormats.clear();
// テスト実施
MessageFormat result = ds.getMessageFormat(code, locale);
// 判定
assertSame(locale, ds.locale);
assertSame("テストメッセージ01", ds.msg);
assertSame(mf, result);
assertEquals(1, ds.cachedMessageFormats.size());
Map<Locale, MessageFormat> hm = ds.cachedMessageFormats.get(code);
assertSame(mf, hm.get(locale));
assertEquals(1, ds.cachedMessageFormats.size());
assertTrue(ds.isRead_A1);
}
}