package com.gh.mygreen.xlsmapper.validation.fieldvalidation; import static com.gh.mygreen.xlsmapper.TestUtils.*; import static org.hamcrest.Matchers.*; import static org.junit.Assert.*; import java.awt.Point; import java.util.LinkedHashMap; import java.util.Map; import org.junit.Test; import com.gh.mygreen.xlsmapper.validation.CellFieldError; import com.gh.mygreen.xlsmapper.validation.SheetBindingErrors; /** * 数値型に関するテスタ。 * <p>テスト対象のValidator。 * <ul> * <li>{@link MinValidator}</li> * <li>{@link MaxValidator}</li> * <li>{@link RangeValidator}</li> * </ul> * * @since 0.5 * @author T.TSUCHIE * */ public class NumberValidatorTest { /** * 数値型の必須チェック - Integer型 */ @Test public void test_validation_numI_required() throws Exception { // フィールド名の定義 String fieldName = "numI"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A5")).addLabel(fieldName, "値1"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Integer> field; CellFieldError fieldError; // 必須チェック(値がnull) errors.clearAllErrors(); sheet.numI = null; field = new CellField<Integer>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.required")); // 必須チェック(値が0) errors.clearAllErrors(); sheet.numI = 0; field = new CellField<Integer>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値がある) errors.clearAllErrors(); sheet.numI = 123; field = new CellField<Integer>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型のオプションチェック - Integer型 */ @Test public void test_validation_numI_optional() throws Exception { // フィールド名の定義 String fieldName = "numI"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A5")).addLabel(fieldName, "値1"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Integer> field; CellFieldError fieldError; // 必須チェック(値がnull) errors.clearAllErrors(); sheet.numI = null; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値が0) errors.clearAllErrors(); sheet.numI = 0; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値がある) errors.clearAllErrors(); sheet.numI = 123; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の最大値チェック - Integer型 */ @Test public void test_validation_numI_max() throws Exception { // フィールド名の定義 String fieldName = "numI"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A5")).addLabel(fieldName, "値1"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Integer> field; CellFieldError fieldError; // 最大値チェック(値がnull) errors.clearAllErrors(); sheet.numI = null; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 最大値チェック(値が不正) errors.clearAllErrors(); sheet.numI = 11; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.max")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"11")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10")); // 最大値チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numI = 1234567; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Integer>(123456, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.max")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"1,234,567.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)123456)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"123,456.0")); // 最大値チェック(値が正しい) errors.clearAllErrors(); sheet.numI = 10; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の最小値チェック - Integer型 */ @Test public void test_validation_numI_min() throws Exception { // フィールド名の定義 String fieldName = "numI"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A5")).addLabel(fieldName, "値1"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Integer> field; CellFieldError fieldError; // 最小値チェック(値がnull) errors.clearAllErrors(); sheet.numI = null; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 最小値チェック(値が不正) errors.clearAllErrors(); sheet.numI = 9; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.min")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"9")); assertThat(fieldError.getVars(), hasEntry("min", (Object)10)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"10")); // 最小値チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numI = 123456; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Integer>(1234567, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.min")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"123,456.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)1234567)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"1,234,567.0")); // 最小値チェック(値が正しい) errors.clearAllErrors(); sheet.numI = 10; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Integer>(10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の範囲チェック - Integer型 */ @Test public void test_validation_numI_range() throws Exception { // フィールド名の定義 String fieldName = "numI"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A5")).addLabel(fieldName, "値1"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Integer> field; CellFieldError fieldError; // 範囲チェック(値がnull) errors.clearAllErrors(); sheet.numI = null; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Integer>(0, 10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 範囲チェック(値が不正)(小さい) errors.clearAllErrors(); sheet.numI = -1; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Integer>(0, 10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"-1")); assertThat(fieldError.getVars(), hasEntry("min", (Object)0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10")); // 範囲チェック(値が不正)(大きい) errors.clearAllErrors(); sheet.numI = 11; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Integer>(0, 10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"11")); assertThat(fieldError.getVars(), hasEntry("min", (Object)0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10")); // 範囲チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numI = 12345678; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Integer>(-1234567, 1234567, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numI)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"12,345,678.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)(-1234567))); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"-1,234,567.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)1234567)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"1,234,567.0")); // 範囲チェック(値が正しい) errors.clearAllErrors(); sheet.numI = 10; field = new CellField<Integer>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Integer>(0, 10)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の必須チェック - Double型 */ @Test public void test_validation_numD_required() throws Exception { // フィールド名の定義 String fieldName = "numD"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A6")).addLabel(fieldName, "値2"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Double> field; CellFieldError fieldError; // 必須チェック(値がnull) errors.clearAllErrors(); sheet.numD = null; field = new CellField<Double>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.required")); // 必須チェック(値が0) errors.clearAllErrors(); sheet.numD = 0.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値がある) errors.clearAllErrors(); sheet.numD = 123.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(true); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型のオプションチェック - Double型 */ @Test public void test_validation_numD_optional() throws Exception { // フィールド名の定義 String fieldName = "numD"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A6")).addLabel(fieldName, "値2"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Double> field; CellFieldError fieldError; // 必須チェック(値がnull) errors.clearAllErrors(); sheet.numD = null; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値が0) errors.clearAllErrors(); sheet.numD = 0.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 必須チェック(値がある) errors.clearAllErrors(); sheet.numD = 123.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の最大値チェック - Double型 */ @Test public void test_validation_numD_max() throws Exception { // フィールド名の定義 String fieldName = "numD"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A6")).addLabel(fieldName, "値2"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Double> field; CellFieldError fieldError; // 最大値チェック(値がnull) errors.clearAllErrors(); sheet.numD = null; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 最大値チェック(値が不正) errors.clearAllErrors(); sheet.numD = 11.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.max")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"11.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10.0)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10.0")); // 最大値チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numD = 1234567.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Double>(123456.0, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.max")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"1,234,567.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)123456.0)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"123,456.0")); // 最大値チェック(値が正しい) errors.clearAllErrors(); sheet.numD = 10.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MaxValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の最小値チェック - Double型 */ @Test public void test_validation_numD_min() throws Exception { // フィールド名の定義 String fieldName = "numD"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A6")).addLabel(fieldName, "値2"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Double> field; CellFieldError fieldError; // 最小値チェック(値がnull) errors.clearAllErrors(); sheet.numD = null; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 最小値チェック(値が不正) errors.clearAllErrors(); sheet.numD = 9.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.min")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"9.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)10.0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"10.0")); // 最小値チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numD = 123456.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Double>(1234567.0, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.min")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"123,456.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)1234567.0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"1,234,567.0")); // 最小値チェック(値が正しい) errors.clearAllErrors(); sheet.numD = 10.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new MinValidator<Double>(10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } /** * 数値型の範囲チェック - Double型 */ @Test public void test_validation_numD_range() throws Exception { // フィールド名の定義 String fieldName = "numD"; // オブジェクトの定義 SampleSheet sheet = new SampleSheet(); sheet.addPosition(fieldName, toPointAddress("A6")).addLabel(fieldName, "値2"); SheetBindingErrors errors = new SheetBindingErrors(SampleSheet.class); errors.setSheetName("サンプルシート"); CellField<Double> field; CellFieldError fieldError; // 範囲チェック(値がnull) errors.clearAllErrors(); sheet.numD = null; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Double>(0.0, 10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); // 範囲チェック(値が不正)(小さい) errors.clearAllErrors(); sheet.numD = -1.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Double>(0.0, 10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"-1.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)0.0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"0.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10.0)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10.0")); // 範囲チェック(値が不正)(大きい) errors.clearAllErrors(); sheet.numD = 11.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Double>(0.0, 10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"11.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)0.0)); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"0.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)10.0)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"10.0")); // 範囲チェック(値が不正)(フォーマット指定あり) errors.clearAllErrors(); sheet.numD = 12345678.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Double>(-1234567.0, 1234567.0, "##,##0.0")); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError.getCellAddress(), is(sheet.positions.get(fieldName))); assertThat(fieldError.getLabel(), is(sheet.labels.get(fieldName))); assertThat(fieldError.getCodes(), hasItemInArray("cellFieldError.range")); assertThat(fieldError.getVars(), hasEntry("validatedValue", (Object)sheet.numD)); assertThat(fieldError.getVars(), hasEntry("formattedValidatedValue", (Object)"12,345,678.0")); assertThat(fieldError.getVars(), hasEntry("min", (Object)(-1234567.0))); assertThat(fieldError.getVars(), hasEntry("formattedMin", (Object)"-1,234,567.0")); assertThat(fieldError.getVars(), hasEntry("max", (Object)1234567.0)); assertThat(fieldError.getVars(), hasEntry("formattedMax", (Object)"1,234,567.0")); // 範囲チェック(値が正しい) errors.clearAllErrors(); sheet.numD = 10.0; field = new CellField<Double>(sheet, fieldName); field.setRequired(false); field.add(new RangeValidator<Double>(0.0, 10.0)); field.validate(errors); fieldError = errors.getFirstCellFieldError(fieldName); assertThat(fieldError, is(nullValue())); } private static class SampleSheet { private Map<String, Point> positions; private Map<String, String> labels; private Integer numI; private Double numD; private SampleSheet addPosition(String field, Point position) { if(positions == null) { this.positions = new LinkedHashMap<>(); } this.positions.put(field, position); return this; } private SampleSheet addLabel(String field, String label) { if(labels == null) { this.labels = new LinkedHashMap<>(); } this.labels.put(field, label); return this; } } }