コレクション内の選択された値に最も近い値を見つけるメソッドを作成しました。Junitでテストケースを書く方法がわからないので、うまくいくかどうかわかりません。この方法は機能しますか、またはテスト ケースのアイデアはありますか。最も近いのは距離によって決まります。制限により、このメソッドには配列リストを使用できません。
テレメータ
public interface Telemeter<E> extends Comparator<E> {
/**
* Returns the distance between e1 and e2.
*
* @param e1 the first object
* @param e2 the second object
* @return the distance between e1 and e2
*
*/
public double distance(E e1, E e2);
}
最寄りの方法
/**
* Return the element of c nearest to val.
* The Collection c is not changed as a result of calling this method.
*
* @param <T> the type variable for this method
* @param c the Collection to be searched
* @param val the reference value
* @param tm the Telemeter that measures distance
* @return the element e in c such that its distance from
* val is minimum for all elements in c
*
*/
public static <T> T nearest(Collection<T> c, T val, Telemeter<T> tm) {
if (c == null || c.size() == 0 || tm == null) {
throw new IllegalArgumentException();
}
T answer = null;
Iterator<T> itr = c.iterator();
T one = itr.next();
while(itr.hasNext()) {
T two = itr.next();
if(Math.abs((tm.distance(one, val))) > Math.abs(tm.distance(two, val))) {
answer = two;
}
}
return answer;
}