package org.hamcrest.number;

import org.hamcrest.Matcher;
import org.hamcrest.comparator.ComparatorMatcherBuilder;

public class OrderingComparison {

    
private OrderingComparison() {
    
}

    
/**
     
* Creates a matcher of {@link Comparable} object that matches when the examined object is
     
* equal to the specified value, as reported by the <code>compareTo</code> method of the
     
* <b>examined</b> object.
     
* For example:
     
* <pre>assertThat(1, comparesEqualTo(1))</pre>
     
*
     
* @param value the value which, when passed to the compareTo method of the examined object, should return zero
     
*/

    
public static <T extends Comparable<T>> Matcher<T> comparesEqualTo(T value) {
        
return ComparatorMatcherBuilder.<T>usingNaturalOrdering().comparesEqualTo(value);
    
}

    
/**
     
* Creates a matcher of {@link Comparable} object that matches when the examined object is
     
* greater than the specified value, as reported by the <code>compareTo</code> method of the
     
* <b>examined</b> object.
     
* For example:
     
* <pre>assertThat(2, greaterThan(1))</pre>
     
*
     
* @param value the value which, when passed to the compareTo method of the examined object, should return greater
     
*
              
than zero
     
*/

    
public static <T extends Comparable<T>> Matcher<T> greaterThan(T value) {
        
return ComparatorMatcherBuilder.<T>usingNaturalOrdering().greaterThan(value);
    
}

    
/**
     
* Creates a matcher of {@link Comparable} object that matches when the examined object is
     
* greater than or equal to the specified value, as reported by the <code>compareTo</code> method
     
* of the <b>examined</b> object.
     
* For example:
     
* <pre>assertThat(1, greaterThanOrEqualTo(1))</pre>
     
*
     
* @param value the value which, when passed to the compareTo method of the examined object, should return greater
     
*
              
than or equal to zero
     
*/

    
public static <T extends Comparable<T>> Matcher<T> greaterThanOrEqualTo(T value) {
        
return ComparatorMatcherBuilder.<T>usingNaturalOrdering().greaterThanOrEqualTo(value);
    
}

    
/**
     
* Creates a matcher of {@link Comparable} object that matches when the examined object is
     
* less than the specified value, as reported by the <code>compareTo</code> method of the
     
* <b>examined</b> object.
     
* For example:
     
* <pre>assertThat(1, lessThan(2))</pre>
     
*
     
* @param value the value which, when passed to the compareTo method of the examined object, should return less
     
*
              
than zero
     
*/

    
public static <T extends Comparable<T>> Matcher<T> lessThan(T value) {
        
return ComparatorMatcherBuilder.<T>usingNaturalOrdering().lessThan(value);
    
}

    
/**
     
* Creates a matcher of {@link Comparable} object that matches when the examined object is
     
* less than or equal to the specified value, as reported by the <code>compareTo</code> method
     
* of the <b>examined</b> object.
     
* For example:
     
* <pre>assertThat(1, lessThanOrEqualTo(1))</pre>
     
*
     
* @param value the value which, when passed to the compareTo method of the examined object, should return less
     
*
              
than or equal to zero
     
*/

    
public static <T extends Comparable<T>> Matcher<T> lessThanOrEqualTo(T value) {
        
return ComparatorMatcherBuilder.<T>usingNaturalOrdering().lessThanOrEqualTo(value);
    
}
}