All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.gwt.test.assertions.BaseValueBoxBaseAssert Maven / Gradle / Ivy

There is a newer version: 0.63
Show newest version
package com.googlecode.gwt.test.assertions;

import com.google.gwt.i18n.client.HasDirection.Direction;
import com.google.gwt.i18n.shared.DirectionEstimator;
import com.google.gwt.user.client.ui.ValueBoxBase;

import java.text.ParseException;

import static org.assertj.core.util.Objects.areEqual;

/**
 * Base class for {@link ValueBoxBase} assertions.
 *
 * @param  used to simulate "self types." For more information please read "Emulating 'self types' using Java Generics to simplify fluent API
 *            implementation."
 * @param  the type of the "actual" value.
 * @param  the type of the ValueBoxBase value.
 * @author Gael Lazzari
 */
public class BaseValueBoxBaseAssert, A extends ValueBoxBase, T>
        extends BaseFocusWidgetAssert {

    /**
     * Creates a new {@link BaseValueBoxBaseAssert}.
     *
     * @param actual   the actual value to verify.
     * @param selfType the "self type."
     */
    protected BaseValueBoxBaseAssert(A actual, Class selfType) {
        super(actual, selfType);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} cursor position is equal to the given one.
     *
     * @param expected the given cursor position value to compare its actual value to.
     * @return this assertion object.
     * @throws AssertionError if the actual cursor position value is not equal to the given one.
     * @see ValueBoxBase#getCursorPos()
     */
    public S cursorPosEquals(int expected) {
        int cursorPos = actual.getCursorPos();
        if (areEqual(cursorPos, expected))
            return myself;
        throw propertyComparisonFailed("cursorPos", cursorPos, expected);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} direction is equal to the given one.
     *
     * @param expected the given direction to compare the actual direction value to.
     * @return this assertion object.
     * @throws AssertionError if the actual direction is not equal to the given one.
     * @see ValueBoxBase#getDirection()
     */
    public S directionEquals(Direction expected) {
        Direction direction = actual.getDirection();
        if (areEqual(direction, expected))
            return myself;
        throw propertyComparisonFailed("Direction", direction, expected);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} directionEstimator is equal to the given one.
     *
     * @param expected the given directionEstimator to compare the actual direction value to.
     * @return this assertion object.
     * @throws AssertionError if the actual directionEstimator is not equal to the given one.
     * @see ValueBoxBase#getDirectionEstimator()
     */
    public S directionEstimatorEquals(DirectionEstimator expected) {
        DirectionEstimator directionEstimator = actual.getDirectionEstimator();
        if (areEqual(directionEstimator, expected))
            return myself;
        throw propertyComparisonFailed("DirectionEstimator", directionEstimator, expected);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} is not ready-only.
     *
     * @return this assertion object.
     * @throws AssertionError if the actual {@link ValueBoxBase} is ready-only.
     * @see ValueBoxBase#isReadOnly()
     */
    public S isNotReadOnly() {
        if (actual.isReadOnly())
            failWithMessage("should not be read-only");

        return myself;
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} is ready-only.
     *
     * @return this assertion object.
     * @throws AssertionError if the actual {@link ValueBoxBase} is not ready-only.
     * @see ValueBoxBase#isReadOnly()
     */
    public S isReadOnly() {
        if (!actual.isReadOnly())
            failWithMessage("should be read-only");

        return myself;
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} name is equal to the given one.
     *
     * @param expected the given name to compare the actual name value to.
     * @return this assertion object.
     * @throws AssertionError if the actual name value is not equal to the given one.
     * @see ValueBoxBase#getName()
     */
    public S nameEquals(String expected) {
        String name = actual.getName();
        if (areEqual(name, expected))
            return myself;
        throw propertyComparisonFailed("name", name, expected);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} value is equal to the given one.
     *
     * @param expected the given value to compare the actual value to.
     * @return this assertion object.
     * @throws AssertionError if the actual value is not equal to the given one.
     * @see ValueBoxBase#getValue()
     */
    public S valueEquals(T expected) {
        T value = actual.getValue();
        if (areEqual(value, expected))
            return myself;
        throw propertyComparisonFailed("value", value, expected);
    }

    /**
     * Verifies that the actual {@link ValueBoxBase} value is equal to the given one.
     *
     * @param expected the given value to compare the actual value to.
     * @return this assertion object.
     * @throws AssertionError if the actual value is not equal to the given one or if a
     *                        {@link ParseException} is thrown while converting the value.
     * @see ValueBoxBase#getValueOrThrow()
     */
    public S valueOrThrowEquals(T expected) {
        try {
            T value = actual.getValueOrThrow();
            if (areEqual(value, expected))
                return myself;
            throw propertyComparisonFailed("value", value, expected);
        } catch (ParseException e) {
            throw new AssertionError(
                    "unexpected ParseException while getting the value of the tested "
                            + actual.getClass().getSimpleName() + ": " + e.getMessage());
        }
    }

}