package com.framework.utils.matchers;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
import org.hamcrest.Factory;
import org.hamcrest.Matcher;
/**
* Created with IntelliJ IDEA ( LivePerson : www.liveperson.com )
*
* Package: com.framework.utils.matchers
*
* Name : IsAllUpperCase
*
* User : solmarkn / Dani Vainstein
*
* Date : 2015-03-01
*
* Time : 00:25
*
*/
public class CharSequenceIsMatcher extends CharSequenceMatcher
{
//region CharSequenceIsMatcher - Constructor
private static String toStringMsg;
public CharSequenceIsMatcher( CharSequence cs, ValidationType vt )
{
super( cs, vt );
}
//endregion
@Factory
public static Matcher<CharSequence> isAllUpperCase( CharSequence cs )
{
toStringMsg = "is all uppercase";
return new CharSequenceIsMatcher( cs, ValidationType.UPPER );
}
@Factory
public static Matcher<CharSequence> isAllLowerCase( CharSequence cs )
{
toStringMsg = "is all lowercase";
return new CharSequenceIsMatcher( cs, ValidationType.LOWER );
}
@Factory
public static Matcher<CharSequence> isAlpha( CharSequence cs )
{
toStringMsg = "is alpha";
return new CharSequenceIsMatcher( cs, ValidationType.ALPHA );
}
@Factory
public static Matcher<CharSequence> isAlphaNumeric( CharSequence cs )
{
toStringMsg = "is alpha-numeric";
return new CharSequenceIsMatcher( cs, ValidationType.ALPHANUMERIC );
}
@Factory
public static Matcher<CharSequence> isNumber( CharSequence cs )
{
toStringMsg = "is number";
return new CharSequenceIsMatcher( cs, ValidationType.NUMBER );
}
@Factory
public static Matcher<CharSequence> isNumeric( CharSequence cs )
{
toStringMsg = "is numeric";
return new CharSequenceIsMatcher( cs, ValidationType.NUMERIC );
}
@Factory
public static Matcher<CharSequence> isDigits( CharSequence cs )
{
toStringMsg = "is all digits";
return new CharSequenceIsMatcher( cs, ValidationType.DIGITS );
}
@Override
protected boolean evalCharSequenceOf( CharSequence cs, ValidationType vt )
{
switch ( vt )
{
case LOWER: return StringUtils.isAllLowerCase( cs );
case UPPER: return StringUtils.isAllUpperCase( cs );
case ALPHA: return StringUtils.isAlpha( cs );
case ALPHANUMERIC: return StringUtils.isAlphanumeric( cs );
case NUMERIC: return StringUtils.isNumeric( cs );
case NUMBER: return NumberUtils.isNumber( cs.toString() );
case DIGITS: return NumberUtils.isDigits( cs.toString() );
}
return false;
}
@Override
protected String relationship()
{
return toStringMsg;
}
}