/* * 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.util; import java.text.DateFormatSymbols; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import jp.terasoluna.fw.util.PropertyTestCase; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; /** * DateUtil ブラックボックステスト。<br> * 前提条件<br> * ・test.propertiesがクラスパスに設定されている必要がある<br> * ・プロパティファイルに以下のような設定をしておく<br> * wareki.gengo.0.name = 平成<br> * wareki.gengo.0.roman = H<br> * wareki.gengo.0.startDate = 1989/01/08<br> * wareki.gengo.1.name = 昭和<br> * wareki.gengo.1.roman = S<br> * wareki.gengo.1.startDate = 1926/12/25<br> * wareki.gengo.2.name = 大正<br> * wareki.gengo.2.roman = T<br> * wareki.gengo.2.startDate = 1912/07/30<br> * wareki.gengo.3.name = 明治<br> * wareki.gengo.3.roman = M<br> * wareki.gengo.3.startDate = 1868/09/04<br> * wareki.gengo.4.name = 平成<br> * wareki.gengo.4.roman = H<br> * wareki.gengo.5.name = 平成<br> * wareki.gengo.5.roman = H<br> * wareki.gengo.5.startDate = asdf<br> */ public class DateUtilTest01 extends PropertyTestCase { /** * 日時を設定するためのフィールド */ private SimpleDateFormat df = null; /** * 日時を設定するためのフィールド */ private Date date = null; @Before public void setUpData() throws Exception { addProperty("wareki.gengo.0.name", "平成"); addProperty("wareki.gengo.0.roman", "H"); addProperty("wareki.gengo.0.startDate", "1989/01/08"); addProperty("wareki.gengo.1.name", "昭和"); addProperty("wareki.gengo.1.roman", "S"); addProperty("wareki.gengo.1.startDate", "1926/12/25"); addProperty("wareki.gengo.2.name", "大正"); addProperty("wareki.gengo.2.roman", "T"); addProperty("wareki.gengo.2.startDate", "1912/07/30"); addProperty("wareki.gengo.3.name", "明治"); addProperty("wareki.gengo.3.roman", "M"); addProperty("wareki.gengo.3.startDate", "1868/09/04"); addProperty("wareki.gengo.4.name", "平成"); addProperty("wareki.gengo.4.roman", "H"); addProperty("wareki.gengo.5.name", "平成"); addProperty("wareki.gengo.5.roman", "H"); addProperty("wareki.gengo.5.startDate", "asdf"); } @After public void cleanUpData() throws Exception { clearProperty(); } /** * testGetSystemTime01。<br> * (正常系)<br> * 観点:A<br> * 入力値:なし<br> * 期待値:テスト実行時のシステム時刻<br> * ・システム時刻が取得できることを確認する。<br> * テストの実行環境により、期待値となるシステム時刻と 実行結果時刻で取得の時の誤差が生じることがあるため、 結果確認ではテスト対象の内容と誤差が1秒未満としている。<br> * @throws Exception 例外 */ @SuppressWarnings("deprecation") @Test public void testGetSystemTime01() throws Exception { // 入力値の設定 // システム時刻の取得のため、入力なし // テスト対象の実行 Date result = DateUtil.getSystemTime(); // 結果確認 Date hope = Calendar.getInstance().getTime(); assertTrue(Math.abs(hope.getTime() - result.getTime()) < 1000L); } // ************************************************************************ // 和暦変換用メソッドに関する確認 // ************************************************************************ // ************************************************************************ // 元号のフォーマット「G」に関する確認 // ************************************************************************ /** * testDateToWarekiString01。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="G"<br> * date="2001.01.01 00:00:00"<br> * 期待値:date="H"<br> * ・元号のフォーマットを「G」と1文字にし、元号の出力形式を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString01() throws Exception { // 入力値の設定 String format = "G"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("H", str); } /** * testDateToWarekiString02。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="G"<br> * currentTime="1980年1月1日 0時0分0秒"<br> * 期待値:"S"<br> * ・元号のフォーマットを「G」と1文字にし、元号の出力形式を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString02() throws Exception { // 入力値の設定 String format = "G"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1980.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("S", str); } /** * testDateToWarekiString03。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"H"<br> * ・元号のフォーマットを「GGG」と3文字にし、元号の出力形式を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString03() throws Exception { // 入力値の設定 String format = "GGG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("H", str); } /** * testDateToWarekiString04。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGGG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"平成"<br> * ・元号のフォーマットを「GGGG」と4文字にし、元号の出力形式を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString04() throws Exception { // 入力値の設定 String format = "GGGG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("平成", str); } /** * testDateToWarekiString05。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGGGGGGGGG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"平成"<br> * ・元号のフォーマットを「GGGGGGGGGG」と10文字にし、 元号の出力形式を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString05() throws Exception { // 入力値の設定 String format = "GGGGGGGGGG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("平成", str); } // ************************************************************************ // 年のフォーマット「y」に関する確認 // ************************************************************************ /** * testDateToWarekiString06。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="y"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"13"<br> * ・元号のフォーマットを「y」と1文字にし、和暦年が出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString06() throws Exception { // 入力値の設定 String format = "y"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("13", str); } /** * testDateToWarekiString07。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="y"<br> * currentTime="1869年1月1日 0時0分0秒"<br> * 期待値:"2"<br> * ・元号のフォーマットを「y」と1文字にし、和暦年が出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString07() throws Exception { // 入力値の設定 String format = "y"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1869.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("2", str); } /** * testDateToWarekiString08。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="yy"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"13"<br> * ・元号のフォーマットを「yy」と2文字にし、和暦年が出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString08() throws Exception { // 入力値の設定 String format = "yy"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("13", str); } /** * testDateToWarekiString09。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="yyyyyyyyyy"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"13"<br> * ・元号のフォーマットを「yyyyyyyyyy」と10文字にし、和暦年が出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString09() throws Exception { // 入力値の設定 String format = "yyyyyyyyyy"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("13", str); } // ************************************************************************ // 曜日のフォーマット「E」に関する確認 // ************************************************************************ /** * testDateToWarekiString10。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="E"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"月"<br> * ・曜日のフォーマットを「E」と1文字にした場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString10() throws Exception { // 入力値の設定 String format = "E"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("月", str); } /** * testDateToWarekiString11。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="E"<br> * currentTime="1868年9月3日 0時0分0秒"<br> * 期待値:"木"<br> * ・曜日のフォーマットを「E」と1文字にし、入力する日付が<br> * 明治最初の日の前日の場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString11() throws Exception { // 入力値の設定 String format = "E"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("木", str); } /** * testDateToWarekiString12。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="EEE"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"月"<br> * ・曜日のフォーマットを「EEE」と3文字にした場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString12() throws Exception { // 入力値の設定 String format = "EEE"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("月", str); } /** * testDateToWarekiString13。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="EEEE"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"月曜日"<br> * ・曜日のフォーマットを「EEEE」と4文字にした場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString13() throws Exception { // 入力値の設定 String format = "EEEE"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("月曜日", str); } /** * testDateToWarekiString14。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="EEEEEEEEEE"<br> * currentTime="2001年1月2日 0時0分0秒"<br> * 期待値:"火曜日"<br> * ・曜日のフォーマットを「EEEEEEEEEE」と10文字にした場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString14() throws Exception { // 入力値の設定 String format = "EEEEEEEEEE"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.02 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("火曜日", str); } // ************************************************************************ // 元号と年の出力順に関する確認 // ************************************************************************ /** * testDateToWarekiString15。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="Gy"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"H13"<br> * ・フォーマットを「Gy」とし、元号(ローマ字)+年の順に出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString15() throws Exception { // 入力値の設定 String format = "Gy"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("H13", str); } /** * testDateToWarekiString16。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="yG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"13H"<br> * ・フォーマットを「yG」とし、年+元号(ローマ字)の順に出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString16() throws Exception { // 入力値の設定 String format = "yG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("13H", str); } /** * testDateToWarekiString17。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGGGy"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"平成13"<br> * ・フォーマットを「GGGGy」とし、元号(漢字)+年の順に出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString17() throws Exception { // 入力値の設定 String format = "GGGGy"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("平成13", str); } /** * testDateToWarekiString18。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="yGGGG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"13平成"<br> * ・フォーマットを「yGGGG」とし、年+元号(漢字)の順に出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString18() throws Exception { // 入力値の設定 String format = "yGGGG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("13平成", str); } /** * testDateToWarekiString19。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="G GGGG"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"H 平成"<br> * ・フォーマットを「G GGGG」とし、元号(ローマ字)+元号(漢字)の順に<br> * 出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString19() throws Exception { // 入力値の設定 String format = "G GGGG"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("H 平成", str); } /** * testDateToWarekiString20。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGGG G"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"平成 H"<br> * ・フォーマットを「GGGG G」とし、元号(漢字)+元号(ローマ字)の順に<br> * 出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString20() throws Exception { // 入力値の設定 String format = "GGGG G"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("平成 H", str); } /** * testDateToWarekiString21。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="GGGGG E"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"平成 月"<br> * ・フォーマットを「GGGGG E」とし、元号(漢字)+曜日の順に<br> * 出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString21() throws Exception { // 入力値の設定 String format = "GGGGG E"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("平成 月", str); } /** * testDateToWarekiString22。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="MM.dd HH:mm:ss z"<br> * currentTime="2001年2月1日 3時4分5秒"<br> * 期待値:"02.01 03:04:05 JST"<br> * ・y,G,Eを含まないフォーマットの場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString22() throws Exception { // 入力値の設定 String format = "MM.dd HH:mm:ss z"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.02.01 03:04:05").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("02.01 03:04:05 " + this.getTimeZoneName(date), str); } /** * タイムゾーンの略名を取得。 SimpleDateFormatクラスと同様の方法でタイムゾーンの略名を取得している。 * @param dt 時刻データ * @return タイムゾーンの略名 * @throws Exception 例外 */ private String getTimeZoneName(Date dt) throws Exception { Calendar calender = Calendar.getInstance(); calender.setTime(dt); // DateFormatSymbols は、月、曜日、タイムゾーンデータなど、 // 地域対応が可能な日付/時刻フォーマットデータをカプセル化するための public クラス。 DateFormatSymbols formatData = new DateFormatSymbols(Locale .getDefault()); // タイムゾーン文字列の取得 String zoneStrings[][] = formatData.getZoneStrings(); // zoneIndexの取得 int zoneIndex = -1; String zoneID = calender.getTimeZone().getID(); for (int index = 0; index < zoneStrings.length; index++) { if (zoneID.equalsIgnoreCase(zoneStrings[index][0])) { zoneIndex = index; break; } } // 特別の略名は存在しない時 if (zoneIndex == -1) { return zoneID; } // 略名のインデックスの取得 int index = -1; if (calender.get(Calendar.DST_OFFSET) == 0) { index = 2; } else { index = 4; } return zoneStrings[zoneIndex][index]; } // ************************************************************************ // 入力が不正な場合の確認 // ************************************************************************ /** * testDateToWarekiString23。<br> * (正常系)<br> * 観点:A,C<br> * 入力値:format=""<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:""<br> * ・フォーマットを空文字にし、空文字が出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString23() throws Exception { // 入力値の設定 String format = ""; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("", str); } /** * testDateToWarekiString24。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="#!--0"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"#!--0"<br> * ・フォーマットをパターン文字以外にし、<br> * そのまま出力されることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString24() throws Exception { // 入力値の設定 String format = "#!--0"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("#!--0", str); } /** * testDateToWarekiString25。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="'GGGG' G 'dd' dd"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:"GGGG H dd 01"<br> * ・フォーマットキャラクタをシングルクォーテーションで囲んだ場合、<br> * 文字列としてエスケープされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString25() throws Exception { // 入力値の設定 String format = "'GGGG' G 'dd' dd"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("GGGG H dd 01", str); } /** * testDateToWarekiString26。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="'y' y 'E' E"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:y 13 E 月<br> * ・フォーマットキャラクタをシングルクォーテーションで囲んだ場合、<br> * "y"と"E"は文字列としてエスケープされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString26() throws Exception { // 入力値の設定 String format = "'y' y 'E' E"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("y 13 E 月", str); } /** * testDateToWarekiString27。<br> * (異常系)<br> * 観点:G<br> * 入力値:format="A"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:IllegalArgumentExceptionがスローされる<br> * ・フォーマット文字にない「A」を指定した場合、<br> * IllegalArgumentExceptionがスローされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString27() throws Exception { // 入力値の設定 String format = "A"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.dateToWarekiString(format, date); fail(); } catch (IllegalArgumentException e) { return; } } /** * testDateToWarekiString28。<br> * (異常系)<br> * 観点:G<br> * 入力値:format="G"<br> * currentTime="1868年9月3日 0時0分0秒"<br> * 期待値:IllegalArgumentExceptionがスローされる<br> * ・プロパティファイルで指定された最古日付以前の日付をdateで渡した場合、<br> * フォーマットに"G"を指定するとIllegalArgumentExceptionがスローされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString28() throws Exception { // 入力値の設定 String format = "G"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.dateToWarekiString(format, date); fail(); } catch (IllegalArgumentException e) { return; } } /** * testDateToWarekiString29。<br> * (異常系)<br> * 観点:G<br> * 入力値:format="y"<br> * currentTime="1868年9月3日 0時0分0秒"<br> * 期待値:IllegalArgumentExceptionがスローされる<br> * ・プロパティファイルで指定された最古日付以前の日付をdateで渡した場合、<br> * フォーマットに"y"を指定するとIllegalArgumentExceptionがスローされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString29() throws Exception { // 入力値の設定 String format = "y"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.dateToWarekiString(format, date); fail(); } catch (IllegalArgumentException e) { return; } } /** * testDateToWarekiString30。<br> * (異常系)<br> * 観点:C,G<br> * 入力値:format=null<br> * currentTime=*<br> * 期待値:NullPointerExceptionがスローされる<br> * ・フォーマットにnullを指定した場合、<br> * NullPointerExceptionがスローされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString30() throws Exception { // 入力値の設定 String format = null; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.dateToWarekiString(format, date); fail(); } catch (NullPointerException e) { return; } } /** * testDateToWarekiString31。<br> * (異常系)<br> * 観点:C,G<br> * 入力値:format=not null<br> * currentTime=null<br> * 期待値:NullPointerExceptionがスローされる<br> * ・日付にnullを指定した場合、<br> * NullPointerExceptionがスローされることを確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString31() throws Exception { // 入力値の設定 String format = "G"; date = null; // テスト対象の実行 try { DateUtil.dateToWarekiString(format, date); fail(); } catch (NullPointerException e) { return; } } /** * testDateToWarekiString32。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="G 'G' ''G'' '''G''' ''''G'''' y 'y' ''y'' '''y''' ''''y'''' E 'E' ''E'' '''E''' ''''E''''"<br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:H G 'H' 'G' ''H'' 13 y '13' 'y' ''13'' 月 E '月' 'E' ''月''<br> * ・フォーマットキャラクタをシングルクォーテーションで囲んだ場合、<br> * エスケープされることを確認する。<br> * ・フォーマットキャラクタをシングルクォーテーション2つで囲んだ場合、<br> * シングルクオーテーション自体が表示されることを確認する。<br> * ・和暦元号・曜日が省略表記の場合<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString32() throws Exception { // 入力値の設定 String format = "G 'G' ''G'' '''G''' ''''G'''' y 'y' ''y'' '''y''' ''''y'''' E 'E' ''E'' '''E''' ''''E''''"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("H G 'H' 'G' ''H'' 13 y '13' 'y' ''13'' 月 E '月' 'E' ''月''", str); } /** * testDateToWarekiString33。<br> * (正常系)<br> * 観点:A<br> * 入力値:format= * "GGGG 'GGGG' ''GGGG'' '''GGGG''' ''''GGGG'''' yyyy 'yyyy' ''yyyy'' '''yyyy''' ''''y'''' EEEE 'EEEE' ''EEEE'' '''EEEE''' ''''EEEE''''" * <br> * currentTime="2001年1月1日 0時0分0秒"<br> * 期待値:平成 GGGG '平成' 'GGGG' ''平成'' 13 yyyy '13' 'yyyy' ''13'' 月曜日 EEEE '月曜日' 'EEEE' ''月曜日''<br> * ・フォーマットキャラクタをシングルクォーテーションで囲んだ場合、<br> * エスケープされることを確認する。<br> * ・フォーマットキャラクタをシングルクォーテーション2つで囲んだ場合、<br> * シングルクオーテーション自体が表示されることを確認する。<br> * ・和暦元号・曜日が完全表記の場合<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString33() throws Exception { // 入力値の設定 String format = "GGGG 'GGGG' ''GGGG'' '''GGGG''' ''''GGGG'''' yyyy 'yyyy' ''yyyy'' '''yyyy''' ''''y'''' EEEE 'EEEE' ''EEEE'' '''EEEE''' ''''EEEE''''"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.01.01 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals( "平成 GGGG '平成' 'GGGG' ''平成'' 13 yyyy '13' 'yyyy' ''13'' 月曜日 EEEE '月曜日' 'EEEE' ''月曜日''", str); } /** * testDateToWarekiString34。<br> * (正常系)<br> * 観点:A<br> * 入力値:format="'MM.dd HH:mm:ss z'"<br> * currentTime="2001年2月1日 3時4分5秒"<br> * 期待値:"MM.dd HH:mm:ss z"<br> * ・y,G,Eを含まないフォーマットをシングルクォーテーションで囲んだ場合を確認する。<br> * @throws Exception 例外 */ @Test public void testDateToWarekiString34() throws Exception { // 入力値の設定 String format = "'MM.dd HH:mm:ss z'"; // 時刻の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("2001.02.01 03:04:05").getTime()); // テスト対象の実行 String str = DateUtil.dateToWarekiString(format, date); // 結果確認 assertEquals("MM.dd HH:mm:ss z", str); } // ************************************************************************ // getWarekiGengoName // ************************************************************************ /** * testGetWarekiGengoName01。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分0秒<br> * 期待値:"平成"<br> * ・平成最初の日の午前0時ちょうどを確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoName01() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoName(date); // 結果確認 assertEquals("平成", str); } /** * testGetWarekiGengoName02。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月7日23時59分59秒<br> * 期待値:"昭和"<br> * ・平成最初の日の午前0時の1秒前を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoName02() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.07 23:59:59").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoName(date); // 結果確認 assertEquals("昭和", str); } /** * testGetWarekiGengoName03。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分1秒<br> * 期待値:"平成"<br> * ・平成最初の日の午前0時の1秒後を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoName03() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:01").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoName(date); // 結果確認 assertEquals("平成", str); } /** * testGetWarekiGengoName04。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=1868年9月3日<br> * 期待値:IllegalArgumentException<br> * ・入力する日付が明治最初の日の前日の場合を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoName04() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.getWarekiGengoName(date); fail(); } catch (IllegalArgumentException e) { assertEquals("Wareki Gengo Name not found for " + date, e .getMessage()); return; } } /** * testGetWarekiGengoName05。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=null<br> * 期待値:NullPointerExceptionがスローされる<br> * ・入力する日付がnullの時、NullPointerExceptionが発生する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoName05() throws Exception { // 入力値の設定 date = null; // テスト対象の実行 try { DateUtil.getWarekiGengoName(date); fail(); } catch (NullPointerException e) { return; } } // ************************************************************************ // getWarekiGengoRoman // ************************************************************************ /** * testGetWarekiGengoRoman01。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分0秒<br> * 期待値:"平成"<br> * ・平成最初の日の午前0時ちょうどを確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoRoman01() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:00").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoRoman(date); // 結果確認 assertEquals("H", str); } /** * testGetWarekiGengoRoman02。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月7日23時59分59秒<br> * 期待値:"昭和"<br> * ・平成最初の日の午前0時の1秒前を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoRoman02() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.07 23:59:59").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoRoman(date); // 結果確認 assertEquals("S", str); } /** * testGetWarekiGengoRoman03。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分1秒<br> * 期待値:"平成"<br> * ・平成最初の日の午前0時の1秒後を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoRoman03() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:01").getTime()); // テスト対象の実行 String str = DateUtil.getWarekiGengoRoman(date); // 結果確認 assertEquals("H", str); } /** * testGetWarekiGengoRoman04。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=1868年9月3日<br> * 期待値:IllegalArgumentExceptionがスローされる<br> * ・入力する日付が明治最初の日の前日の場合を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoRoman04() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.getWarekiGengoRoman(date); fail(); } catch (IllegalArgumentException e) { assertEquals("Wareki Gengo Roman not found for " + date, e .getMessage()); return; } } /** * testGetWarekiGengoRoman05。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=null<br> * 期待値:NullPointerExceptionがスローされる<br> * ・入力する日付がNullの時、NullPointerExceptionが発生する<br> * @throws Exception 例外 */ @Test public void testGetWarekiGengoRoman05() throws Exception { // 入力値の設定 date = null; // テスト対象の実行 try { DateUtil.getWarekiGengoRoman(date); fail(); } catch (NullPointerException e) { return; } } // ************************************************************************ // getWarekiGengoYear // ************************************************************************ /** * testGetWarekiYear01。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分0秒<br> * 期待値:1<br> * ・平成最初の日の午前0時ちょうどを確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiYear01() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:00").getTime()); // テスト対象の実行 int year = DateUtil.getWarekiYear(date); // 結果確認 assertEquals(1, year); } /** * testGetWarekiYear02。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月7日23時59分59秒<br> * 期待値:64<br> * ・平成最初の日の午前0時の1秒前を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiYear02() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.07 23:59:59").getTime()); // テスト対象の実行 int year = DateUtil.getWarekiYear(date); // 結果確認 assertEquals(64, year); } /** * testGetWarekiYear03。<br> * (正常系)<br> * 観点:A<br> * 入力値:date=1989年1月8日0時0分1秒<br> * 期待値:1<br> * ・平成最初の日の午前0時の1秒後を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiYear03() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1989.01.08 00:00:01").getTime()); // テスト対象の実行 int year = DateUtil.getWarekiYear(date); // 結果確認 assertEquals(1, year); } /** * testGetWarekiYear04。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=1868年9月3日<br> * 期待値:IllegalArgumentExceptionがスローされる<br> * ・入力する日付が明治最初の日の前日の場合を確認する。<br> * @throws Exception 例外 */ @Test public void testGetWarekiYear04() throws Exception { // 入力値の設定 df = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss"); date = new Date(df.parse("1868.09.03 00:00:00").getTime()); // テスト対象の実行 try { DateUtil.getWarekiYear(date); fail(); } catch (IllegalArgumentException e) { assertEquals("Wareki Gengo not found for " + date, e.getMessage()); return; } } /** * testGetWarekiYear05。<br> * (異常系)<br> * 観点:G<br> * 入力値:date=null<br> * 期待値:NullPointerExceptionがスローされる<br> * ・NullPointerExceptionが発生する<br> * @throws Exception 例外 */ @Test public void testGetWarekiYear05() throws Exception { // 入力値の設定 try { // テスト対象の実行 DateUtil.getWarekiYear(null); fail(); } catch (NullPointerException e) { return; } } }