/*
* 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.validation;
import java.text.SimpleDateFormat;
import java.util.Date;
import jp.terasoluna.fw.validation.PropertyTestCase;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* {@link jp.terasoluna.fw.validation.ValidationUtil} クラスのブラックボックステスト。
*
* <p>
* <h4>【クラスの概要】</h4>
* 検証ロジックのユーティリティクラス。
* <p>
*
* @see jp.terasoluna.fw.validation.ValidationUtil
*/
public class ValidationUtilTest06 extends PropertyTestCase {
/**
* 初期化処理を行う。
*
* @throws Exception このメソッドで発生した例外
*/
@Before
public void setUpData() throws Exception {
}
/**
* 終了処理を行う。
*
* @throws Exception このメソッドで発生した例外
*/
@After
public void cleanUpData() throws Exception {
}
/**
* testToDate01()
* <br><br>
*
* (正常系)
* <br>
* 観点:C
* <br><br>
* 入力値:(引数) value:null<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 引数valueがnullの場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate01() throws Exception {
// 前処理
String value = null;
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
/**
* testToDate02()
* <br><br>
*
* (正常系)
* <br>
* 観点:C
* <br><br>
* 入力値:(引数) value:""<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 引数valueが空白の場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate02() throws Exception {
// 前処理
String value = "";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
/**
* testToDate03()
* <br><br>
*
* (異常系)
* <br>
* 観点:F,G
* <br><br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:null<br>
*
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"datePattern or datePatternStrict must be specified."<br>
*
* <br>
* 引数datePattern、datePatternStrictがnullの場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate03() throws Exception {
// 前処理
String value = "2005/11/1";
String datePattern = null;
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.toDate(value, datePattern, datePatternStrict);
fail("例外が発生しない。");
} catch (Exception e) {
//判定
assertEquals("datePattern or datePatternStrict must be specified.",
e.getMessage());
}
}
/**
* testToDate04()
* <br><br>
*
* (異常系)
* <br>
* 観点:F,G
* <br><br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:""<br>
* (引数) datePatternStrict:""<br>
*
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"datePattern or datePatternStrict must be specified."<br>
*
* <br>
* 引数datePattern、datePatternStrictが空白の場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate04() throws Exception {
// 前処理
String value = "2005/11/1";
String datePattern = "";
String datePatternStrict = "";
// テスト実施
try {
ValidationUtil.toDate(value, datePattern, datePatternStrict);
fail("例外が発生しない。");
} catch (Exception e) {
//判定
assertEquals("datePattern or datePatternStrict must be specified.",
e.getMessage());
}
}
/**
* testToDate05()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:"yyyy.MM.dd"<br>
*
* <br>
* 期待値:(戻り値) Date:"2005/11/1"のDate型<br>
*
* <br>
* 引数datePattern,datePatternStrictがNotNullで正常にDateに変換できる場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate05() throws Exception {
// 前処理
String value = "2005/11/1";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = "yyyy.MM.dd";
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
SimpleDateFormat format = new SimpleDateFormat(datePattern);
Date hope = format.parse(value);
assertEquals(hope, result);
assertEquals("2005/11/01", format.format(result));
}
/**
* testToDate06()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 引数datePatternStrictがNotNullでDateに変換できず、nullとなる場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate06() throws Exception {
// 前処理
String value = "2005/11/1";
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
/**
* testToDate07()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/11/24"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:"2005/11/24"のDate型<br>
*
* <br>
* 引数datePatternがNotNullで正常にDateに変換できる場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate07() throws Exception {
// 前処理
String value = "2005/11/24";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
SimpleDateFormat format = new SimpleDateFormat(datePattern);
Date hope = format.parse(value);
assertEquals(hope, result);
assertEquals(value, format.format(result));
}
/**
* testToDate08()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/11/24"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:"2005/11/24"のDate型<br>
*
* <br>
* 引数datePatternStrictがNotNullで正常にDateに変換できる場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate08() throws Exception {
// 前処理
String value = "2005/11/24";
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
SimpleDateFormat format = new SimpleDateFormat(datePatternStrict);
Date hope = format.parse(value);
assertEquals(hope, result);
assertEquals(value, format.format(result));
}
/**
* testToDate09()
* <br><br>
*
* (異常系)
* <br>
* 観点:F,G
* <br><br>
* 入力値:(引数) value:"2005/11/24"<br>
* (引数) datePattern:"asdf"<br>
*
* <br>
* 期待値:(状態変化) 例外:例外:IllegalArgumentException<br>
* メッセージ:Illegal pattern character 'f'<br>
*
* <br>
* datePatternに無効な文字列がある場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate09() throws Exception {
// 前処理
String value = "2005/11/24";
String datePattern = "asdf";
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.toDate(value, datePattern, datePatternStrict);
fail("例外が発生しない。");
} catch (IllegalArgumentException e) {
assertEquals("Illegal pattern character 'f'", e.getMessage());
}
}
/**
* testToDate10()
* <br><br>
*
* (異常系)
* <br>
* 観点:F,G
* <br><br>
* 入力値:(引数) value:"2005/11/24"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"asdf"<br>
*
* <br>
* 期待値:(状態変化) 例外:例外:IllegalArgumentException<br>
* メッセージ:Illegal pattern character 'f'<br>
*
* <br>
* datePatternStrictに無効な文字列がある場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate10() throws Exception {
// 前処理
String value = "2005/11/24";
String datePattern = null;
String datePatternStrict = "asdf";
// テスト実施
try {
ValidationUtil.toDate(value, datePattern, datePatternStrict);
fail("例外が発生しない。");
} catch (IllegalArgumentException e) {
assertEquals("Illegal pattern character 'f'", e.getMessage());
}
}
/**
* testToDate11()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/2/29"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 入力値が存在しない日付の場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate11() throws Exception {
// 前処理
String value = "2005/2/29";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
/**
* testToDate12()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"2005/02/29"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 入力値が存在しない日付の場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate12() throws Exception {
// 前処理
String value = "2005/02/29";
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
/**
* testToDate13()
* <br><br>
*
* (正常系)
* <br>
* 観点:F
* <br><br>
* 入力値:(引数) value:"test"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
*
* <br>
* 期待値:(戻り値) Date:null<br>
*
* <br>
* 入力値が日付に変換できない場合
* <br>
*
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testToDate13() throws Exception {
// 前処理
String value = "test";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
Date result = ValidationUtil.toDate(
value, datePattern, datePatternStrict);
// 判定
assertNull(result);
}
}