jp.terasoluna.fw.validation.FieldChecksTest10.java Source code

Java tutorial

Introduction

Here is the source code for jp.terasoluna.fw.validation.FieldChecksTest10.java

Source

/*
 * 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 static java.util.Arrays.asList;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsEqual.equalTo;
import static org.hamcrest.core.IsInstanceOf.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import static uk.org.lidalia.slf4jtest.LoggingEvent.error;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.ValidatorException;
import org.apache.commons.validator.Var;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import uk.org.lidalia.slf4jtest.TestLogger;
import uk.org.lidalia.slf4jtest.TestLoggerFactory;

/**
 * {@link jp.terasoluna.fw.validation.FieldChecks} ?
 * <p>
 * <h4>???</h4> TERASOLUNA?????
 * <p>
 * @see jp.terasoluna.fw.validation.FieldChecks
 */
public class FieldChecksTest10 {

    private TestLogger logger = TestLoggerFactory.getTestLogger(FieldChecks.class);

    /**
     * 
     */
    private ValidatorAction va = null;

    /**
     * 
     */
    private Field field = null;

    /**
     * 
     */
    private FieldChecks_ValidationErrorsImpl01 errors = null;

    /**
     * ???
     */
    @Before
    public void setUp() {
        va = new ValidatorAction();
        field = new Field();
        errors = new FieldChecks_ValidationErrorsImpl01();
    }

    /**
     * ??
     */
    @After
    public void tearDown() {
        logger.clear();
    }

    /**
     * testValidateDateRange01() <br>
     * <br>
     * () <br>
     * C,F <br>
     * <br>
     * () bean:null<br>
     * () va:not null<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () boolean:true<br>
     * () errors:????<br>
     * <br>
     * ?bean?null???true??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange01() throws Exception {
        // 
        // 
        assertTrue(new FieldChecks().validateDateRange(null, va, field, errors));

        // addErrors?
        assertEquals(0, errors.addErrorCount);
    }

    /**
     * testValidateDateRange02() <br>
     * <br>
     * () <br>
     * C,F <br>
     * <br>
     * () bean:""<br>
     * () va:not null<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () boolean:true<br>
     * () errors:????<br>
     * <br>
     * ?bean????true??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange02() throws Exception {
        // 
        // 
        assertTrue(new FieldChecks().validateDateRange("", va, field, errors));

        // addErrors?
        assertEquals(0, errors.addErrorCount);
    }

    /**
     * testValidateDateRange03() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var<br>
     * datePattern="abc"<br>
     * datePatternStrict="yyyy.MM.dd"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * Illegal pattern character 'b'<br>
     * () :<br>
     * Illegal pattern character 'b'<br>
     * <br>
     * var?datePattern???????? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange03() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("abc");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("datePatternStrict");
        var2.setValue("yyyy.MM.dd");
        field.addVar(var2);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("Illegal pattern character 'b'", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error("Illegal pattern character 'b'"))));
        }
    }

    /**
     * testValidateDateRange04() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var<br>
     * datePatternStrict="abc"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * Illegal pattern character 'b'<br>
     * () :<br>
     * Illegal pattern character 'b'<br>
     * <br>
     * var?datePatternStrict???????? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange04() throws Exception {
        // ??
        Var var = new Var();
        var.setName("datePatternStrict");
        var.setValue("abc");
        field.addVar(var);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("Illegal pattern character 'b'", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error("Illegal pattern character 'b'"))));
        }
    }

    /**
     * testValidateDateRange05() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern=null<br>
     * datePatternStrict=null<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * datePattern or datePatternStrict must be specified.<br>
     * () :<br>
     * datePattern or datePatternStrict must be specified.<br>
     * <br>
     * var?datePattern?datePatternStrict?null??? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange05() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue(null);
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("datePatternStrict");
        var2.setValue(null);
        field.addVar(var2);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("datePattern or datePatternStrict must be specified.", e.getMessage());
            assertThat(logger.getLoggingEvents(),
                    is(asList(error("datePattern or datePatternStrict must be specified."))));
        }
    }

    /**
     * testValidateDateRange06() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern=""<br>
     * datePatternStrict=""<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * datePattern or datePatternStrict must be specified.<br>
     * () :<br>
     * datePattern or datePatternStrict must be specified.<br>
     * <br>
     * var?datePattern?datePatternStrict????ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange06() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("datePatternStrict");
        var2.setValue("");
        field.addVar(var2);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("datePattern or datePatternStrict must be specified.", e.getMessage());
            assertThat(logger.getLoggingEvents(),
                    is(asList(error("datePattern or datePatternStrict must be specified."))));
        }
    }

    /**
     * testValidateDateRange07() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:"test"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:bean,field,va???addErrors???<br>
     * <br>
     * bean????????????false??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange07() throws Exception {
        // ??
        Var var = new Var();
        var.setName("datePattern");
        var.setValue("yyyy/MM/dd");
        field.addVar(var);

        // 
        // 
        assertFalse(new FieldChecks().validateDateRange("test", va, field, errors));
        assertEquals(1, errors.addErrorCount);
        assertEquals("test", errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertSame(field, errors.fieldList.get(0));
    }

    /**
     * testValidateDateRange08() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * startDate="test"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * startDate is unparseable[test]<br>
     * () :<br>
     * startDate is unparseable[test]<br>
     * <br>
     * startDate??????????ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange08() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("startDate");
        var2.setValue("test");
        field.addVar(var2);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("startDate is unparseable[test]", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error("startDate is unparseable[test]"))));
        }
    }

    /**
     * testValidateDateRange09() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * endDate="test"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * endDate is unparseable[test]<br>
     * () :<br>
     * endDate is unparseable[test]<br>
     * <br>
     * endDate??????????ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange09() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("endDate");
        var2.setValue("test");
        field.addVar(var2);

        // 
        // 
        try {
            new FieldChecks().validateDateRange("2005/11/22", va, field, errors);
            fail();
        } catch (ValidatorException e) {
            assertEquals("endDate is unparseable[test]", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error("endDate is unparseable[test]"))));
        }
    }

    /**
     * testValidateDateRange10() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * startDate="2005/11/23"<br>
     * endDate="2005/12/31"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:bean,field,va??? addErrors???<br>
     * <br>
     * bean??startDate????? ??false??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange10() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("startDate");
        var2.setValue("2005/11/23");
        field.addVar(var2);

        Var var3 = new Var();
        var3.setName("endDate");
        var3.setValue("2005/12/31");
        field.addVar(var3);

        // 
        // 
        assertFalse(new FieldChecks().validateDateRange("2005/11/22", va, field, errors));
        assertEquals(1, errors.addErrorCount);
        assertEquals("2005/11/22", errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertSame(field, errors.fieldList.get(0));
    }

    /**
     * testValidateDateRange11() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * startDate="2005/1/1"<br>
     * endDate="2005/11/21"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:bean,field,va???addErrors???<br>
     * <br>
     * bean??endDate???????false??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange11() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("startDate");
        var2.setValue("2005/1/1");
        field.addVar(var2);

        Var var3 = new Var();
        var3.setName("endDate");
        var3.setValue("2005/11/21");
        field.addVar(var3);

        // 
        // 
        assertFalse(new FieldChecks().validateDateRange("2005/11/22", va, field, errors));
        assertEquals(1, errors.addErrorCount);
        assertEquals("2005/11/22", errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertSame(field, errors.fieldList.get(0));
    }

    /**
     * testValidateDateRange12() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:"2005/11/22"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePattern="yyyy/MM/dd"<br>
     * startDate="2005/11/22"<br>
     * endDate="2005/11/22"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:true<br>
     * () errors:????<br>
     * <br>
     * bean??startDate,endDate??????true??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange12() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePattern");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("startDate");
        var2.setValue("2005/11/22");
        field.addVar(var2);

        Var var3 = new Var();
        var3.setName("endDate");
        var3.setValue("2005/11/22");
        field.addVar(var3);

        // 
        // 
        assertTrue(new FieldChecks().validateDateRange("2005/11/22", va, field, errors));
        assertEquals(0, errors.addErrorCount);
    }

    /**
     * testValidateDateRange13() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:"2005/1/1"<br>
     * () va:not null<br>
     * () field:var:<br>
     * datePatternStrict="yyyy/MM/dd"<br>
     * startDate="2005/01/01"<br>
     * endDate="2005/01/01"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:bean,field,va???addErrors???<br>
     * <br>
     * bean??datePatternStrict?????????? ??false??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateDateRange13() throws Exception {
        // ??
        Var var1 = new Var();
        var1.setName("datePatternStrict");
        var1.setValue("yyyy/MM/dd");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("startDate");
        var2.setValue("2005/01/01");
        field.addVar(var2);

        Var var3 = new Var();
        var3.setName("endDate");
        var3.setValue("2005/01/01");
        field.addVar(var3);

        // 
        // 
        assertFalse(new FieldChecks().validateDateRange("2005/1/1", va, field, errors));
        assertEquals(1, errors.addErrorCount);
        assertEquals("2005/1/1", errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertSame(field, errors.fieldList.get(0));
    }

    /**
     * testValidateArraysIndex01() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:null<br>
     * () va:not null<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * "validation target bean is null."<br>
     * () :<br>
     * "validation target bean is null."<br>
     * <br>
     * ?bean?null???ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex01() throws Exception {
        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(null, va, field, errors);
        } catch (ValidatorException e) {
            assertEquals("validation target bean is null.", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error("validation target bean is null."))));
        }
    }

    /**
     * testValidateArraysIndex02() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:not null<br>
     * () va:mehodParams=""<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * "Mistake on validation rule file. - Can not get argument class. You'll have to check it over. "<br>
     * () :<br>
     * "Mistake on validation rule file. - Can not get argument class. You'll have to check it over. "<br>
     * <br>
     * va?methodParams????????? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex02() throws Exception {
        // ??
        va.setMethodParams("");

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(new Object(), va, field, errors);
        } catch (ValidatorException e) {
            String expect = "Mistake on validation rule file. "
                    + "- Can not get argument class. You'll have to check it over. ";
            assertEquals(expect, e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error(expect))));
        }
    }

    /**
     * testValidateArraysIndex03() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:not null<br>
     * () va:mehodParams="aaaaa"<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * "Mistake on validation rule file. - Can not get argument class. You'll have to check it over. "<br>
     * () :<br>
     * "Mistake on validation rule file. - Can not get argument class. You'll have to check it over. "<br>
     * <br>
     * va?methodParams?????????ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex03() throws Exception {
        // ??
        va.setMethodParams("aaaaa");

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(new Object(), va, field, errors);
        } catch (ValidatorException e) {
            String expect = "Mistake on validation rule file. "
                    + "- Can not get argument class. You'll have to check it over. ";
            assertEquals(expect, e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error(expect))));
        }
    }

    /**
     * testValidateArraysIndex04() <br>
     * <br>
     * () <br>
     * F,G <br>
     * <br>
     * () bean:not null<br>
     * () va:mehodParams="java.lang.String"<br>
     * name="hoge"<br>
     * () field:not null<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * "Mistake on validation rule file. - Can not get validateMethod. You'll have to check it over. "<br>
     * () :<br>
     * "Mistake on validation rule file. - Can not get validateMethod. You'll have to check it over. "<br>
     * <br>
     * va???name???????ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex04() throws Exception {
        // ??
        va.setMethodParams("java.lang.String");
        va.setName("hoge");

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(new Object(), va, field, errors);
        } catch (ValidatorException e) {
            String expect = "Mistake on validation rule file. "
                    + "- Can not get validateMethod. You'll have to check it over. ";
            assertEquals(expect, e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error(expect))));
        }
    }

    /**
     * testValidateArraysIndex05() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {<br>
     * "a", "b", "c"<br>
     * };<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="array"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:true<br>
     * () errors:????<br>
     * <br>
     * var????????? ??????va?name???????????? true????????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex05() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] { "a", "b", "c" });

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("array");

        // 
        // 
        assertTrue(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(0, errors.addErrorCount);
    }

    /**
     * testValidateArraysIndex06() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * List list = {<br>
     * "a", null, null, "d"<br>
     * };<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="list"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:2??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="lsit[1]"<br>
     * property="list[1]"<br>
     * va=?va??<br>
     * bean=?bean??l<br>
     * field:<br>
     * key="list[2]"<br>
     * property="list[2]"<br>
     * va=?va??<br>
     * <br>
     * var?????Collection??? va?name???????????? ???errors?addErrors??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex06() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        List<String> list = new ArrayList<String>();
        list.add("a");
        list.add(null);
        list.add(null);
        list.add("d");
        bean.setList(list);

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("list");

        // 
        // 
        assertFalse(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(2, errors.addErrorCount);
        assertSame(bean, errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertEquals("list[1]", ((Field) errors.fieldList.get(0)).getKey());
        assertEquals("list[1]", ((Field) errors.fieldList.get(0)).getProperty());

        assertSame(bean, errors.beanList.get(1));
        assertSame(va, errors.vaList.get(1));
        assertEquals("list[2]", ((Field) errors.fieldList.get(1)).getKey());
        assertEquals("list[2]", ((Field) errors.fieldList.get(1)).getProperty());
    }

    /**
     * testValidateArraysIndex07() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * int[] intArray = {<br>
     * 0,2,5<br>
     * };<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="intRangeArray"<br>
     * () field:property="intArray"<br>
     * var:<br>
     * intRangeMin=1<br>
     * intRangeMax=3<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:2??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="intArray[0]"<br>
     * property="intArray[0]"<br>
     * var:<br>
     * intRangeMin="1"<br>
     * intRangeMax="3"<br>
     * va=?va??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="intArray[2]"<br>
     * property="intArray[2]"<br>
     * var:<br>
     * intRangeMin="1"<br>
     * intRangeMax="3"<br>
     * va=?va??<br>
     * <br>
     * var????????? va?name???????????? ???errors?addErrors??????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex07() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setIntArray(new int[] { 0, 2, 5 });

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("intRangeArray");

        // Field
        field.setProperty("intArray");
        Var var1 = new Var();
        var1.setName("intRangeMin");
        var1.setValue("1");
        field.addVar(var1);

        Var var2 = new Var();
        var2.setName("intRangeMax");
        var2.setValue("3");
        field.addVar(var2);

        // 
        // 
        assertFalse(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(2, errors.addErrorCount);
        assertSame(bean, errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertEquals("intArray[0]", ((Field) errors.fieldList.get(0)).getKey());
        assertEquals("intArray[0]", ((Field) errors.fieldList.get(0)).getProperty());

        assertSame(bean, errors.beanList.get(1));
        assertSame(va, errors.vaList.get(1));
        assertEquals("intArray[2]", ((Field) errors.fieldList.get(1)).getKey());
        assertEquals("intArray[2]", ((Field) errors.fieldList.get(1)).getProperty());
    }

    /**
     * testValidateArraysIndex08() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * String field = null;<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="field"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:bean=?bean??<br>
     * field:<br>
     * key="field"<br>
     * property="field"<br>
     * va=?va??<br>
     * <br>
     * var???????Collection?????? ?????????????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex08() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setField(null);

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("field");

        // 
        // 
        assertFalse(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(1, errors.addErrorCount);
        assertSame(bean, errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertEquals("field", ((Field) errors.fieldList.get(0)).getKey());
        assertEquals("field", ((Field) errors.fieldList.get(0)).getProperty());
    }

    /**
     * testValidateArraysIndex09() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * JavaBean[] beanArray?<br>
     * JavaBean[0]<br>
     * String[] array = {<br>
     * "a", null, "c"<br>
     * };<br>
     * JavaBean[1]=null<br>
     * JavaBean[2]<br>
     * String[] array = {<br>
     * "a", null, null<br>
     * };<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="beanArray.array"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:false<br>
     * () errors:3??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="beanArray[0].array[1]"<br>
     * property="beanArray[0].array[1]"<br>
     * va=?va??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="beanArray[2].array[1]"<br>
     * property="beanArray[2].array[1]"<br>
     * va=?va??<br>
     * bean=?bean??<br>
     * field:<br>
     * key="beanArray[2].array[2]"<br>
     * property="beanArray[2].array[2]"<br>
     * va=?va??<br>
     * <br>
     * var????????? ??????va?name???????????? true????????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex09() throws Exception {
        // ??
        // JavaBean-beanArray[0]
        FieldChecks_JavaBeanStub01 beanArray0 = new FieldChecks_JavaBeanStub01();
        beanArray0.setArray(new String[] { "a", null, "c" });

        // JavaBean-beanArray[1]
        FieldChecks_JavaBeanStub01 beanArray1 = null;

        // JavaBean-beanArray[2]
        FieldChecks_JavaBeanStub01 beanArray2 = new FieldChecks_JavaBeanStub01();
        beanArray2.setArray(new String[] { "a", null, null });

        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setBeanArray(new Object[] { beanArray0, beanArray1, beanArray2 });

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("beanArray.array");

        // 
        // 
        assertFalse(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(3, errors.addErrorCount);
        assertSame(bean, errors.beanList.get(0));
        assertSame(va, errors.vaList.get(0));
        assertEquals("beanArray[0].array[1]", ((Field) errors.fieldList.get(0)).getKey());
        assertEquals("beanArray[0].array[1]", ((Field) errors.fieldList.get(0)).getProperty());

        assertSame(bean, errors.beanList.get(1));
        assertSame(va, errors.vaList.get(1));
        assertEquals("beanArray[2].array[1]", ((Field) errors.fieldList.get(1)).getKey());
        assertEquals("beanArray[2].array[1]", ((Field) errors.fieldList.get(1)).getProperty());

        assertSame(bean, errors.beanList.get(2));
        assertSame(va, errors.vaList.get(1));
        assertEquals("beanArray[2].array[2]", ((Field) errors.fieldList.get(2)).getKey());
        assertEquals("beanArray[2].array[2]", ((Field) errors.fieldList.get(2)).getProperty());
    }

    /**
     * testValidateArraysIndex10() <br>
     * <br>
     * () <br>
     * F <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {};<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="array"<br>
     * () errors:not null<br>
     * <br>
     * () boolean:true<br>
     * () errors:????<br>
     * <br>
     * var????????? ?????true????????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex10() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] {});

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("array");

        // 
        // 
        assertTrue(new FieldChecks().validateArraysIndex(bean, va, field, errors));
        assertEquals(0, errors.addErrorCount);
    }

    /**
     * testValidateArraysIndex11() <br>
     * <br>
     * () <br>
     * G <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {};<br>
     * () va:null<br>
     * ??????????<br>
     * () field:property="array"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * null<br>
     * () :<br>
     * null<br>
     * NullPointerException<br>
     * <br>
     * ??ValidatorException?InvocationTargetException?????? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex11() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] {});

        // ValidatorAction
        va = null;

        // Field
        field.setProperty("array");

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(bean, va, field, errors);
            fail();
        } catch (ValidatorException e) {
            // OK
            assertNull(e.getMessage());
            assertThat(logger.getLoggingEvents().get(0).getMessage(), is(equalTo("null")));
            assertThat(logger.getLoggingEvents().get(0).getThrowable().get(),
                    instanceOf(NullPointerException.class));
        }
    }

    /**
     * testValidateArraysIndex12() <br>
     * <br>
     * () <br>
     * G <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {<br>
     * "a"<br>
     * };<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="maskArray"<br>
     * () field:property="array"<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * "var[mask] must be specified."<br>
     * <br>
     * ??ValidatorException??InvocationTargetException????? ??ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex12() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] { "a" });

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("maskArray");

        // Field
        field.setProperty("array");

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(bean, va, field, errors);
            fail();
        } catch (ValidatorException e) {
            // OK
            assertEquals("var[mask] must be specified.", e.getMessage());
            assertThat(logger.getLoggingEvents(), is(asList(error(e.getMessage()))));
        }
    }

    /**
     * testValidateArraysIndex13() <br>
     * <br>
     * () <br>
     * G <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {"a", null, "c"}<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:property="array"<br>
     * () errors:addErrors?RuntimeException?<br>
     * <br>
     * () :ValidatorException<br>
     * RuntimeException.getMessage();<br>
     * () :<br>
     * RuntimeException.getMessage();<br>
     * RuntimeException<br>
     * <br>
     * ??ValidatorException??? InvocationTargetException????? ???????ValidatorException??????
     * <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex13() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] { "a", null, "c" });

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field.setProperty("array");

        // errors ???
        FieldChecks_ValidationErrorsImpl02 errors2 = new FieldChecks_ValidationErrorsImpl02();

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(bean, va, field, errors2);
            fail();
        } catch (ValidatorException e) {
            // OK
            assertEquals(new RuntimeException().getMessage(), e.getMessage());
        }
    }

    /**
     * testValidateArraysIndex14() <br>
     * <br>
     * () <br>
     * G <br>
     * <br>
     * () bean:JavaBean<br>
     * String[] array = {};<br>
     * () va:methodParams="java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field,
     * jp.terasoluna.fw.validation.ValidationErrors"<br>
     * name="requiredArray"<br>
     * () field:null<br>
     * ??????????<br>
     * () errors:not null<br>
     * <br>
     * () :ValidatorException<br>
     * null<br>
     * () :<br>
     * null<br>
     * NullPointerException<br>
     * <br>
     * ??ValidatorException?InvocationTargetException?????? ValidatorException?????? <br>
     * @throws Exception ?????
     */
    @Test
    public void testValidateArraysIndex14() throws Exception {
        // ??
        // JavaBean
        FieldChecks_JavaBeanStub01 bean = new FieldChecks_JavaBeanStub01();
        bean.setArray(new String[] {});

        // ValidatorAction
        va.setMethodParams("java.lang.Object," + "org.apache.commons.validator.ValidatorAction,"
                + "org.apache.commons.validator.Field," + "jp.terasoluna.fw.validation.ValidationErrors");
        va.setName("requiredArray");

        // Field
        field = null;

        // 
        // 
        try {
            new FieldChecks().validateArraysIndex(bean, va, field, errors);
            fail();
        } catch (ValidatorException e) {
            // OK
            assertNull(e.getMessage());
            assertThat(logger.getLoggingEvents().get(0).getMessage(), is(equalTo("null")));
            assertThat(logger.getLoggingEvents().get(0).getThrowable().get(),
                    instanceOf(NullPointerException.class));
        }
    }
}