1/* 2 * Copyright (c) 2007 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 6package org.mockito.internal.matchers; 7 8import org.mockito.ArgumentMatcher; 9 10import java.io.Serializable; 11 12public 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