/*
* 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 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 ValidationUtilTest05 extends PropertyTestCase {
/**
* 初期化処理を行う。
* @throws Exception このメソッドで発生した例外
*/
@Before
public void setUpData() throws Exception {
}
/**
* 終了処理を行う。
* @throws Exception このメソッドで発生した例外
*/
@After
public void cleanUpData() throws Exception {
}
/**
* testIsByteInRange01() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:null<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueがnullの場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange01() throws Exception {
// 前処理
String value = null;
String encoding = null;
int min = 0;
int max = 0;
// テスト実施
boolean result = ValidationUtil.isByteInRange(value, encoding, min,
max);
// 判定
assertTrue(result);
}
/**
* testIsByteInRange02() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:""<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueが空白の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange02() throws Exception {
// 前処理
String value = "";
String encoding = null;
int min = 0;
int max = 0;
// テスト実施
boolean result = ValidationUtil.isByteInRange(value, encoding, min,
max);
// 判定
assertTrue(result);
}
/**
* testIsByteInRange03() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"abc"<br>
* (引数) encoding:null<br>
* (引数) min:0<br>
* (引数) max:10<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueがNotNull、encodingがnullで、正常に長さがとれ、指定範囲内の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange03() throws Exception {
// 前処理
String value = "abc";
String encoding = null;
int min = 0;
int max = 10;
// テスト実施
boolean result = ValidationUtil.isByteInRange(value, encoding, min,
max);
// 判定
assertTrue(result);
}
/**
* testIsByteInRange04() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"abc"<br>
* (引数) encoding:""<br>
* (引数) min:5<br>
* (引数) max:10<br>
* <br>
* 期待値:(戻り値) boolean:false<br>
* <br>
* 引数valueがNotNull、encodingが空白で、正常に長さがとれ、指定範囲外の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange04() throws Exception {
// 前処理
String value = "abc";
String encoding = "";
int min = 5;
int max = 10;
// テスト実施
boolean result = ValidationUtil.isByteInRange(value, encoding, min,
max);
// 判定
assertFalse(result);
}
/**
* testIsByteInRange05() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"abc"<br>
* (引数) encoding:"UTF-8"<br>
* (引数) min:3<br>
* (引数) max:3<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueがNotNull、encodingがNotNullで、正常に長さがとれ、指定範囲内の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange05() throws Exception {
// 前処理
String value = "abc";
String encoding = "UTF-8";
int min = 3;
int max = 3;
// テスト実施
boolean result = ValidationUtil.isByteInRange(value, encoding, min,
max);
// 判定
assertTrue(result);
}
/**
* testIsByteInRange06() <br>
* <br>
* (異常系) <br>
* 観点:G <br>
* <br>
* 入力値:(引数) value:"abc"<br>
* (引数) encoding:"aaa"<br>
* <br>
* 期待値:(状態変化) 例外:例外:IllegalArgumentException<br>
* <br>
* 引数valueがNotNull、encodingが不正な文字列の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsByteInRange06() throws Exception {
// 前処理
String value = "abc";
String encoding = "aaa";
int min = 5;
int max = 10;
// テスト実施
try {
ValidationUtil.isByteInRange(value, encoding, min, max);
fail("例外が発生しない。");
} catch (IllegalArgumentException e) {
// 判定
// 例外が発生すればOK。
assertNotNull(e);
}
}
/**
* testIsDateInRange01() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:null<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueがnullの場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange01() throws Exception {
// 前処理
String value = null;
String startDateStr = null;
String endDateStr = null;
String datePattern = null;
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange02() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:""<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数valueが空白の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange02() throws Exception {
// 前処理
String value = "";
String startDateStr = null;
String endDateStr = null;
String datePattern = null;
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange03() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
* <br>
* 期待値:(戻り値) boolean:false<br>
* <br>
* 引数valueが正常に日付に変換できない場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange03() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = null;
String endDateStr = null;
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertFalse(result);
}
/**
* testIsDateInRange04() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/01"<br>
* (引数) startDateStr:null<br>
* (引数) endDateStr:null<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数startDateStr、endDateStrがnullの場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange04() throws Exception {
// 前処理
String value = "2005/11/01";
String startDateStr = null;
String endDateStr = null;
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange05() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:""<br>
* (引数) endDateStr:""<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数startDateStr、endDateStrが空白の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange05() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "";
String endDateStr = "";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange06() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/01"<br>
* (引数) startDateStr:"2005/12/1"<br>
* (引数) endDateStr:null<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
* <br>
* 期待値:(戻り値) boolean:-<br>
* (状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"startDate is unparseable[2005/12/1]"<br>
* <br>
* 引数startDateStrがNotNullだが、日付に変換できない場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange06() throws Exception {
// 前処理
String value = "2005/11/01";
String startDateStr = "2005/12/1";
String endDateStr = null;
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("startDate is unparseable[2005/12/1]", e.getMessage());
}
}
/**
* testIsDateInRange07() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:"2005/12/1"<br>
* (引数) endDateStr:null<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:false<br>
* <br>
* 引数startDateStrが正常に日付に変換できだが、valueがstartDateStrより以前だった場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange07() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/12/1";
String endDateStr = null;
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertFalse(result);
}
/**
* testIsDateInRange08() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/01"<br>
* (引数) startDateStr:null<br>
* (引数) endDateStr:"2005/10/1"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"yyyy/MM/dd"<br>
* <br>
* 期待値:(戻り値) boolean:-<br>
* (状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"endDate is unparseable[2005/10/1]"<br>
* <br>
* 引数endDateStrがNotNullだが、日付に変換できない場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange08() throws Exception {
// 前処理
String value = "2005/11/01";
String startDateStr = null;
String endDateStr = "2005/10/1";
String datePattern = null;
String datePatternStrict = "yyyy/MM/dd";
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("endDate is unparseable[2005/10/1]", e.getMessage());
}
}
/**
* testIsDateInRange09() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:null<br>
* (引数) endDateStr:"2005/10/1"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:false<br>
* <br>
* 引数endDateStrが正常に日付に変換できだが、valueがendDateStrより以後だった場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange09() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = null;
String endDateStr = "2005/10/1";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertFalse(result);
}
/**
* testIsDateInRange10() <br>
* <br>
* (正常系) <br>
* 観点:C <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:"2005/10/1"<br>
* (引数) endDateStr:"2005/12/1"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 引数value、startDateStr、endDateStrすべて正常に日付に変換でき、valueがstartDateStrとendDateStrの間の日付の場合 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange10() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/10/1";
String endDateStr = "2005/12/1";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange11() <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の場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange11() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/10/1";
String endDateStr = "2005/12/1";
String datePattern = null;
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("datePattern or datePatternStrict must be specified.",
e.getMessage());
}
}
/**
* testIsDateInRange12() <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が空文字の場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange12() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/10/1";
String endDateStr = "2005/12/1";
String datePattern = "";
String datePatternStrict = "";
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("datePattern or datePatternStrict must be specified.",
e.getMessage());
}
}
/**
* testIsDateInRange13() <br>
* <br>
* (異常系) <br>
* 観点:F,G <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:"abc"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:<br>
* "Illegal pattern character 'b'"<br>
* <br>
* datePatternが不正な場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange13() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/10/1";
String endDateStr = "2005/12/1";
String datePattern = "abc";
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("Illegal pattern character 'b'", e.getMessage());
}
}
/**
* testIsDateInRange14() <br>
* <br>
* (異常系) <br>
* 観点:F,G <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) datePattern:null<br>
* (引数) datePatternStrict:"abc"<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:<br>
* "Illegal pattern character 'b'"<br>
* <br>
* datePatternStrictが不正な場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange14() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/10/1";
String endDateStr = "2005/12/1";
String datePattern = null;
String datePatternStrict = "abc";
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("Illegal pattern character 'b'", e.getMessage());
}
}
/**
* testIsDateInRange15() <br>
* <br>
* (異常系) <br>
* 観点:F,G <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:"test"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"startDate is unparseable[test]"<br>
* <br>
* startDateStrが日付に変換できない場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange15() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "test";
String endDateStr = null;
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("startDate is unparseable[test]", e.getMessage());
}
}
/**
* testIsDateInRange16() <br>
* <br>
* (異常系) <br>
* 観点:F,G <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) endDateStr:"test"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(状態変化) 例外:IllegalArgumentException<br>
* メッセージ:"endDate is unparseable[test]"<br>
* <br>
* endDateStrが日付に変換できない場合、IllegalArgumentExceptionが発生することを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange16() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = null;
String endDateStr = "test";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
try {
ValidationUtil.isDateInRange(value, startDateStr, endDateStr,
datePattern, datePatternStrict);
fail();
} catch (IllegalArgumentException e) {
assertEquals("endDate is unparseable[test]", e.getMessage());
}
}
/**
* testIsDateInRange17() <br>
* <br>
* (異常系) <br>
* 観点:F,G <br>
* <br>
* 入力値:(引数) value:"2005/11/1"<br>
* (引数) startDateStr:"2005/11/1"<br>
* (引数) endDateStr:"2005/11/1"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:true<br>
* <br>
* 入力値とstartDateStr、endDateStrの日付が等しい場合、trueが取得できることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange17() throws Exception {
// 前処理
String value = "2005/11/1";
String startDateStr = "2005/11/1";
String endDateStr = "2005/11/1";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertTrue(result);
}
/**
* testIsDateInRange18() <br>
* <br>
* (正常系) <br>
* 観点:F <br>
* <br>
* 入力値:(引数) value:"test"<br>
* (引数) startDateStr:"2005/1/1"<br>
* (引数) endDateStr:"2005/12/31"<br>
* (引数) datePattern:"yyyy/MM/dd"<br>
* (引数) datePatternStrict:null<br>
* <br>
* 期待値:(戻り値) boolean:false<br>
* <br>
* 入力値が日付に変換できない場合、falseが取得できることを確認する。 <br>
* @throws Exception このメソッドで発生した例外
*/
@Test
public void testIsDateInRange18() throws Exception {
// 前処理
String value = "test";
String startDateStr = "2005/11/1";
String endDateStr = "2005/12/31";
String datePattern = "yyyy/MM/dd";
String datePatternStrict = null;
// テスト実施
boolean result = ValidationUtil.isDateInRange(value, startDateStr,
endDateStr, datePattern, datePatternStrict);
// 判定
assertFalse(result);
}
}