package com.sandwich.koan.path;
import java.util.Map;
import java.util.Map.Entry;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.sandwich.koan.Koan;
import com.sandwich.koan.KoanMethod;
import com.sandwich.koan.constant.KoanConstants;
import com.sandwich.koan.path.xmltransformation.KoanElementAttributes;
public class DefaultKoanDescriptionTest extends CommandLineTestCase {
@Before
public void setUp(){
super.setUp();
}
@After
public void tearDown(){
super.tearDown();
}
@Test
public void defaultKoanDescriptions() throws Exception {
StringBuilder exceptionStringBuilder = new StringBuilder(KoanConstants.EOL);
for (Entry<String, Map<String, KoanElementAttributes>> suiteAndKoans :
PathToEnlightenment.getPathToEnlightenment().getKoanMethodsBySuiteByPackage().next().getValue().entrySet()) {
for(Entry<String, KoanElementAttributes> koanEntry : suiteAndKoans.getValue().entrySet()){
KoanMethod koan = KoanMethod.getInstance(koanEntry.getValue());
Koan annotation = koan.getMethod().getAnnotation(Koan.class);
if (annotation != null && KoanConstants.DEFAULT_KOAN_DESC.equals(koan.getLesson())) {
exceptionStringBuilder.append(suiteAndKoans.getKey().getClass().getName()).append('.')
.append(koan.getMethod().getName()).append(KoanConstants.EOL);
}
}
}
String exceptionString = exceptionStringBuilder.toString();
if(exceptionString.trim().length() != 0){
throw new RuntimeException(new StringBuilder(KoanConstants.EOL).append(
"Following still have default Koan description:").append(exceptionString).toString());
}
}
}