Class TypeMatcher<T>

java.lang.Object
org.hamcrest.BaseMatcher<T>
org.hamcrest.TypeSafeMatcher<String>
org.xmlunit.matchers.TypeMatcher<T>
Type Parameters:
T - target type
All Implemented Interfaces:
org.hamcrest.Matcher<String>, org.hamcrest.SelfDescribing

public abstract class TypeMatcher<T> extends org.hamcrest.TypeSafeMatcher<String>
This Hamcrest Matcher is base Matcher to verify whether examined string value is convertible to the specified type and whether converted value corresponds to the given value valueMatcher. Examined string value can be evaluation of an XPath expression.

Currently BigDecimal, Double, Integer and Boolean types are supported.

Simple examples

     assertThat("3.0", asDouble(greaterThanOrEqualTo(2.0)));
     assertThat("1.0e1", asBigDecimal(equalTo(BigDecimal.TEN)));
     assertThat("3", asInt(lessThan(4)));
     assertThat("false", asBoolean(equalTo(false)));
     assertThat("True", asBoolean(equalTo(true)));
 

Examples with XPath evaluation

     String xml = "<fruits>" +
             "<fruit name=\"apple\"/>" +
             "<fruit name=\"orange\"/>" +
             "<fruit name=\"banana\"/>" +
             "<fruit name=\"pear\" fresh=\"false\"/>" +
             "</fruits>";

     assertThat(xml, hasXPath("count(//fruits/fruit)", asDouble(equalTo(4.0))));
     assertThat(xml, hasXPath("count(//fruits/fruit)", asBigDecimal(greaterThan(BigDecimal.ONE))));
     assertThat(xml, hasXPath("count(//fruits/fruit)", asInt(lessThan(5))));
     assertThat(xml, hasXPath("//fruits/fruit[@name=\"pear\"]/@fresh", asBoolean(equalTo(false))));
 
Since:
XMLUnit 2.6.2
  • Constructor Summary

    Constructors
    Constructor
    Description
    TypeMatcher(Class<T> clazz, org.hamcrest.Matcher<? extends T> valueMatcher)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    asBigDecimal(org.hamcrest.Matcher<? extends BigDecimal> valueMatcher)
    Creates a matcher that matches when the examined string is convertible to BigDecimal and converted value satisfies the specified valueMatcher.
    asBoolean(org.hamcrest.Matcher<? extends Boolean> valueMatcher)
    Creates a matcher that matches when the examined string is convertible to Boolean and converted value satisfies the specified valueMatcher.
    asDouble(org.hamcrest.Matcher<? extends Double> valueMatcher)
    Creates a matcher that matches when the examined string is convertible to Double and converted value satisfies the specified valueMatcher.
    asInt(org.hamcrest.Matcher<? extends Integer> valueMatcher)
    Creates a matcher that matches when the examined string is convertible to Integer and converted value satisfies the specified valueMatcher.
    protected abstract T
    Converts the item.
    protected void
    describeMismatchSafely(String item, org.hamcrest.Description mismatchDescription)
     
    void
    describeTo(org.hamcrest.Description description)
     
    protected boolean
     

    Methods inherited from class org.hamcrest.TypeSafeMatcher

    describeMismatch, matches

    Methods inherited from class org.hamcrest.BaseMatcher

    _dont_implement_Matcher___instead_extend_BaseMatcher_, toString

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • Constructor Details

    • TypeMatcher

      public TypeMatcher(Class<T> clazz, org.hamcrest.Matcher<? extends T> valueMatcher)
      Parameters:
      clazz - expected type to convert value to
      valueMatcher - matcher to apply to converted value
  • Method Details

    • matchesSafely

      protected boolean matchesSafely(String item)
      Specified by:
      matchesSafely in class org.hamcrest.TypeSafeMatcher<String>
    • describeTo

      public void describeTo(org.hamcrest.Description description)
    • describeMismatchSafely

      protected void describeMismatchSafely(String item, org.hamcrest.Description mismatchDescription)
      Overrides:
      describeMismatchSafely in class org.hamcrest.TypeSafeMatcher<String>
    • convert

      protected abstract T convert(String item)
      Converts the item.
      Parameters:
      item - value as String
      Returns:
      converted value
    • asBigDecimal

      public static TypeMatcher<BigDecimal> asBigDecimal(org.hamcrest.Matcher<? extends BigDecimal> valueMatcher)
      Creates a matcher that matches when the examined string is convertible to BigDecimal and converted value satisfies the specified valueMatcher.

      For example:

           assertThat("1.0e1", asBigDecimal(equalTo(BigDecimal.TEN)));
           assertThat(xml, hasXPath("count(//fruits/fruit)", asBigDecimal(greaterThan(BigDecimal.ONE))));
       
      Parameters:
      valueMatcher - valueMatcher for the converted value
      Returns:
      the BigDecimal matcher
    • asDouble

      public static TypeMatcher<Double> asDouble(org.hamcrest.Matcher<? extends Double> valueMatcher)
      Creates a matcher that matches when the examined string is convertible to Double and converted value satisfies the specified valueMatcher.

      For example:

           assertThat("3.0", asDouble(greaterThanOrEqualTo(2.0)));
           assertThat(xml, hasXPath("count(//fruits/fruit)", asDouble(equalTo(3.0))));
       
      Parameters:
      valueMatcher - valueMatcher for the converted value
      Returns:
      the Double matcher
    • asInt

      public static TypeMatcher<Integer> asInt(org.hamcrest.Matcher<? extends Integer> valueMatcher)
      Creates a matcher that matches when the examined string is convertible to Integer and converted value satisfies the specified valueMatcher.

      For example:

           assertThat("3", asInt(lessThan(4)));
           assertThat(xml, hasXPath("count(//fruits/fruit)", asInt(lessThan(4))));
       
      Parameters:
      valueMatcher - valueMatcher for the converted value
      Returns:
      the Integer matcher
    • asBoolean

      public static TypeMatcher<Boolean> asBoolean(org.hamcrest.Matcher<? extends Boolean> valueMatcher)
      Creates a matcher that matches when the examined string is convertible to Boolean and converted value satisfies the specified valueMatcher.

      For example:

           assertThat("false", asBoolean(equalTo(false)));
           assertThat(xml, hasXPath("//fruits/fruit[@name=\"apple\"]/@fresh", asBoolean(equalTo(true))));
       
      Parameters:
      valueMatcher - valueMatcher for the converted value
      Returns:
      the Boolean matcher