Package com.alibaba.citrus.service.form.impl.validation

Source Code of com.alibaba.citrus.service.form.impl.validation.NumberValidatorTests

/*
* Copyright (c) 2002-2012 Alibaba Group Holding Limited.
* All rights reserved.
*
* 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 com.alibaba.citrus.service.form.impl.validation;

import static com.alibaba.citrus.service.form.support.CompareOperator.*;
import static com.alibaba.citrus.service.form.support.NumberSupport.Type.*;
import static com.alibaba.citrus.test.TestUtil.*;
import static org.junit.Assert.*;

import com.alibaba.citrus.service.form.support.NumberSupport;
import com.alibaba.citrus.service.form.support.NumberSupport.Type;
import org.junit.Test;

public class NumberValidatorTests extends AbstractNumberValidatorTests<NumberValidator> {
    @Override
    protected String getGroupName() {
        return "d";
    }

    @Test
    public void init_operands() throws Exception {
        assertOperand(INT, "123.4", null);
        assertOperand(INT, "123", 123);
    }

    private void assertOperand(Type type, String value, Number result) throws Exception {
        for (int i = 0; i < 6; i++) {
            NumberValidator v = newValidator();
            v.setMessage("message");
            v.setNumberType(type);

            switch (i) {
                case 0:
                    v.setEqualTo(value);
                    break;

                case 1:
                    v.setNotEqualTo(value);
                    break;

                case 2:
                    v.setLessThan(value);
                    break;

                case 3:
                    v.setGreaterThan(value);
                    break;

                case 4:
                    v.setLessThanOrEqualTo(value);
                    break;

                case 5:
                    v.setGreaterThanOrEqualTo(value);
                    break;

                default:
                    fail();
            }

            if (result != null) {
                v.afterPropertiesSet();
                NumberSupport num = null;
                String numStr = null;

                switch (i) {
                    case 0:
                        num = v.getOperand(equalTo);
                        numStr = v.getEqualTo();
                        break;

                    case 1:
                        num = v.getOperand(notEqualTo);
                        numStr = v.getNotEqualTo();
                        break;

                    case 2:
                        num = v.getOperand(lessThan);
                        numStr = v.getLessThan();
                        break;

                    case 3:
                        num = v.getOperand(greaterThan);
                        numStr = v.getGreaterThan();
                        break;

                    case 4:
                        num = v.getOperand(lessThanOrEqualTo);
                        numStr = v.getLessThanOrEqualTo();
                        break;

                    case 5:
                        num = v.getOperand(greaterThanOrEqualTo);
                        numStr = v.getGreaterThanOrEqualTo();
                        break;

                    default:
                        fail();
                }

                assertEquals(result, num.getValue());
                assertEquals(result.toString(), numStr);
            } else {
                assertInitError(v, exception(NumberFormatException.class, value)); // For input string: value
            }
        }
    }

    @Test
    public void validate_equalTo() throws Exception {
        request("invalid");
        assertEquals(false, field1.isValid());
        assertEquals("field1 must equal to 123", field1.getMessage());

        request("1");
        assertEquals(false, field1.isValid());
        assertEquals("field1 must equal to 123", field1.getMessage());

        request(" 123 ");
        assertEquals(true, field1.isValid());
        assertEquals(null, field1.getMessage());
    }

    @Test
    public void validate_notEqualTo() throws Exception {
        request(null, "invalid");
        assertEquals(false, field2.isValid());
        assertEquals("field2 must not equal to 123", field2.getMessage());

        request(null, "123");
        assertEquals(false, field2.isValid());
        assertEquals("field2 must not equal to 123", field2.getMessage());

        request(null, " 1 ");
        assertEquals(true, field2.isValid());
        assertEquals(null, field2.getMessage());
    }

    @Test
    public void validate_lessThan() throws Exception {
        request(null, null, "invalid");
        assertEquals(false, field3.isValid());
        assertEquals("field3 must be less than 123", field3.getMessage());

        request(null, null, "123");
        assertEquals(false, field3.isValid());
        assertEquals("field3 must be less than 123", field3.getMessage());

        request(null, null, "234");
        assertEquals(false, field3.isValid());
        assertEquals("field3 must be less than 123", field3.getMessage());

        request(null, null, " 1 ");
        assertEquals(true, field3.isValid());
        assertEquals(null, field3.getMessage());
    }

    @Test
    public void validate_greaterThan() throws Exception {
        request(null, null, null, "invalid");
        assertEquals(false, field4.isValid());
        assertEquals("field4 must be greater than 123", field4.getMessage());

        request(null, null, null, "123");
        assertEquals(false, field4.isValid());
        assertEquals("field4 must be greater than 123", field4.getMessage());

        request(null, null, null, "1");
        assertEquals(false, field4.isValid());
        assertEquals("field4 must be greater than 123", field4.getMessage());

        request(null, null, null, " 234 ");
        assertEquals(true, field4.isValid());
        assertEquals(null, field4.getMessage());
    }

    @Test
    public void validate_lessThanOrEqualTo() throws Exception {
        request(null, null, null, null, "invalid");
        assertEquals(false, field5.isValid());
        assertEquals("field5 must be less than or equal to 123", field5.getMessage());

        request(null, null, null, null, "234");
        assertEquals(false, field5.isValid());
        assertEquals("field5 must be less than or equal to 123", field5.getMessage());

        request(null, null, null, null, "123");
        assertEquals(true, field5.isValid());
        assertEquals(null, field5.getMessage());

        request(null, null, null, null, " 1 ");
        assertEquals(true, field5.isValid());
        assertEquals(null, field5.getMessage());
    }

    @Test
    public void validate_greaterThanOrEqualTo() throws Exception {
        request(null, null, null, null, null, "invalid");
        assertEquals(false, field6.isValid());
        assertEquals("field6 must be greater than or equal to 123", field6.getMessage());

        request(null, null, null, null, null, "1");
        assertEquals(false, field6.isValid());
        assertEquals("field6 must be greater than or equal to 123", field6.getMessage());

        request(null, null, null, null, null, "123");
        assertEquals(true, field6.isValid());
        assertEquals(null, field6.getMessage());

        request(null, null, null, null, null, " 234 ");
        assertEquals(true, field6.isValid());
        assertEquals(null, field6.getMessage());
    }

    @Test
    public void validate_noLimit() throws Exception {
        request(null, null, null, null, null, null, "invalid");
        assertEquals(false, field7.isValid());
        assertEquals("field7 must be of type INT", field7.getMessage());

        request(null, null, null, null, null, null, "123");
        assertEquals(true, field7.isValid());
        assertEquals(null, field7.getMessage());
    }

    @Test
    public void validate_combine() throws Exception {
        request(null, null, null, null, null, null, null, "invalid");
        assertEquals(false, field8.isValid());
        assertEquals("field8 must between 100 and 200", field8.getMessage());

        request(null, null, null, null, null, null, null, "100");
        assertEquals(false, field8.isValid());
        assertEquals("field8 must between 100 and 200", field8.getMessage());

        request(null, null, null, null, null, null, null, "123");
        assertEquals(true, field8.isValid());
        assertEquals(null, field8.getMessage());

        request(null, null, null, null, null, null, null, "200");
        assertEquals(true, field8.isValid());
        assertEquals(null, field8.getMessage());

        request(null, null, null, null, null, null, null, "201");
        assertEquals(false, field8.isValid());
        assertEquals("field8 must between 100 and 200", field8.getMessage());
    }
}
TOP

Related Classes of com.alibaba.citrus.service.form.impl.validation.NumberValidatorTests

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.