Class TypeMatcher<T>

java.lang.Object
org.hamcrest.BaseMatcher<String>
org.hamcrest.TypeSafeMatcher<String>
org.xmlunit.matchers.TypeMatcher<T>
Type Parameters:
T - target type
All Implemented Interfaces:
org.hamcrest.Matcher<String>, org.hamcrest.SelfDescribing
Direct Known Subclasses:
TypeMatcher.BigDecimalTypeMatcher, TypeMatcher.BooleanTypeMatcher, TypeMatcher.DoubleTypeMatcher, TypeMatcher.IntegerTypeMatcher

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
  • Field Details

    • value

      private T value
    • exception

      private Exception exception
    • clazz

      private final Class<T> clazz
    • valueMatcher

      private final org.hamcrest.Matcher<? extends T> valueMatcher
  • 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>
    • nullSafeConvert

      private T nullSafeConvert(String item)
    • 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