Home | History | Annotate | Download | only in matchers
      1 /*
      2  * Copyright (c) 2007 Mockito contributors
      3  * This program is made available under the terms of the MIT License.
      4  */
      5 
      6 package org.mockito.internal.matchers;
      7 
      8 import org.mockito.ArgumentMatcher;
      9 
     10 import java.io.Serializable;
     11 
     12 public abstract class CompareTo<T extends Comparable<T>> implements ArgumentMatcher<T>, Serializable {
     13     private final T wanted;
     14 
     15     public CompareTo(T value) {
     16         this.wanted = value;
     17     }
     18 
     19     @Override
     20     public final boolean matches(T actual) {
     21         if (actual == null) {
     22             return false;
     23         }
     24         if (!actual.getClass().isInstance(wanted)){
     25             return false;
     26         }
     27 
     28         int result = actual.compareTo(wanted);
     29         return matchResult(result);
     30     }
     31 
     32     @Override
     33     public final String toString() {
     34         return getName() + "(" + wanted + ")";
     35     }
     36 
     37     protected abstract String getName();
     38 
     39     protected abstract boolean matchResult(int result);
     40 }
     41