package com.sandwich.util;
import static org.junit.Assert.assertSame;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import com.sandwich.koan.Koan;
import com.sandwich.koan.KoanMethod;
import com.sandwich.koan.path.CommandLineTestCase;
public class KoanComparatorTest extends CommandLineTestCase {
@Test
public void testThatKomparatorBombsWhenNotFound() throws Exception {
Method m = new Object(){
@Koan public void someMethod(){}
}.getClass().getDeclaredMethod("someMethod");
KoanComparator comparator = new KoanComparator("meh");
try{
comparator.compare(KoanMethod.getInstance("2",m), KoanMethod.getInstance("1",m));
}catch(RuntimeException fileNotFound){}
}
@Test
public void testComparatorRanksByOrder() throws Exception {
Class<? extends Object> clazz = new Object(){
@Koan public void someMethodOne(){}
@Koan public void someMethodTwo(){}
}.getClass();
KoanMethod m1 = KoanMethod.getInstance("",clazz.getDeclaredMethod("someMethodOne"));
KoanMethod m2 = KoanMethod.getInstance("",clazz.getDeclaredMethod("someMethodTwo"));
List<KoanMethod> methods = Arrays.asList(m2,m1);
Collections.sort(methods, new KoanComparator("someMethodOne","someMethodTwo"));
assertSame(m1,methods.get(0));
assertSame(m2,methods.get(1));
}
}