package uk.ac.ebi.fg.annotare2.magetabcheck.checker; import org.junit.Test; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.Check; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.MageTabCheck; import uk.ac.ebi.fg.annotare2.magetabcheck.checker.annotation.Visit; import static org.junit.Assert.*; import static uk.ac.ebi.fg.annotare2.magetabcheck.checker.CheckApplicationType.MICRO_ARRAY_ONLY; import static uk.ac.ebi.fg.annotare2.magetabcheck.checker.ClassInstanceProvider.DEFAULT_CLASS_INSTANCE_PROVIDER; import static uk.ac.ebi.fg.annotare2.magetabcheck.checker.ExperimentType.HTS; import static uk.ac.ebi.fg.annotare2.magetabcheck.checker.ExperimentType.MICRO_ARRAY; /** * @author Olga Melnichuk */ public class ClassBasedCheckDefinitionTest { @MageTabCheck(value = "class hierarchy check", application = MICRO_ARRAY_ONLY) private static class B extends A<String> { } private static class A<T> { @Visit public void visit(T t) { } @Check public void check() { } } @MageTabCheck(value = "plain single visit check", application = CheckApplicationType.HTS_ONLY) private static class C { @Visit public void visit(Integer i) { } @Check public void check() { } } @MageTabCheck(value = "plain muti-visit check", application = CheckApplicationType.ANY) private static class D { @Visit public void visi1(Integer i) { } @Visit public void visit2(String s) { } @Check public void check() { } } @Test public void testB() { ClassBasedCheckDefinition def = new ClassBasedCheckDefinition(B.class, DEFAULT_CLASS_INSTANCE_PROVIDER); assertNotNull(def.getMethodMarkedAsCheck()); assertNotNull(def.getMethodMarkedAsVisit(String.class)); assertNull(def.getMethodMarkedAsVisit(Integer.class)); assertTrue(def.isApplicable(String.class, MICRO_ARRAY)); assertFalse(def.isApplicable(Integer.class, MICRO_ARRAY)); assertFalse(def.isApplicable(String.class, HTS)); } @Test public void testC() { ClassBasedCheckDefinition def = new ClassBasedCheckDefinition(C.class, DEFAULT_CLASS_INSTANCE_PROVIDER); assertNotNull(def.getMethodMarkedAsCheck()); assertNotNull(def.getMethodMarkedAsVisit(Integer.class)); assertNull(def.getMethodMarkedAsVisit(String.class)); assertTrue(def.isApplicable(Integer.class, HTS)); assertFalse(def.isApplicable(String.class, HTS)); assertFalse(def.isApplicable(String.class, MICRO_ARRAY)); } @Test public void testD() { ClassBasedCheckDefinition def = new ClassBasedCheckDefinition(D.class, DEFAULT_CLASS_INSTANCE_PROVIDER); assertNotNull(def.getMethodMarkedAsCheck()); assertNotNull(def.getMethodMarkedAsVisit(String.class)); assertNotNull(def.getMethodMarkedAsVisit(Integer.class)); assertTrue(def.isApplicable(String.class, MICRO_ARRAY)); assertTrue(def.isApplicable(Integer.class, MICRO_ARRAY)); assertTrue(def.isApplicable(String.class, HTS)); assertTrue(def.isApplicable(Integer.class, HTS)); assertNull(def.getMethodMarkedAsVisit(Long.class)); } }