package org.ow2.mind.adl.singleton; import java.util.HashMap; import java.util.Map; import org.objectweb.fractal.adl.Definition; import org.objectweb.fractal.adl.Loader; import org.ow2.mind.CommonFrontendModule; import org.ow2.mind.adl.ADLFrontendModule; import org.ow2.mind.adl.ASTChecker; import org.ow2.mind.adl.ErrorLoader; import org.ow2.mind.idl.IDLFrontendModule; import org.ow2.mind.plugin.PluginLoaderModule; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Key; import com.google.inject.name.Names; public class TestSingleton { Loader loader; ASTChecker checker; Map<Object, Object> context; @BeforeMethod(alwaysRun = true) protected void setUp() throws Exception { final Injector injector = Guice.createInjector(new CommonFrontendModule(), new PluginLoaderModule(), new IDLFrontendModule(), new ADLFrontendModule() { protected void configureErrorLoader() { bind(Loader.class).annotatedWith(Names.named("ErrorLoader")) .toChainStartingWith(ErrorLoader.class) .endingWith(Loader.class); } }); loader = injector.getInstance(Key.get(Loader.class, Names.named("ErrorLoader"))); checker = new ASTChecker(); context = new HashMap<Object, Object>(); } @Test(groups = {"functional", "checkin"}) public void test1() throws Exception { final Definition def = loader.load("pkg1.singleton.SingletonPrimitive", context); checker.assertDefinition(def).isSingleton(); } @Test(groups = {"functional", "checkin"}) public void test2() throws Exception { final Definition def = loader.load("pkg1.singleton.Composite1", context); checker.assertDefinition(def).isSingleton().containsComponent("subComp1") .isAnInstanceOf("pkg1.singleton.SingletonPrimitive").isSingleton(); } @Test(groups = {"functional", "checkin"}) public void test3() throws Exception { final Definition def1 = loader.load("pkg1.generic.Generic1", context); checker.assertDefinition(def1).isMultiton(); final Definition def = loader.load("pkg1.singleton.Composite2", context); checker .assertDefinition(def) .isSingleton() .containsComponent("subComp1") .isAnInstanceOf( "pkg1.generic.Generic1<pkg1.singleton.SingletonPrimitive>") .isSingleton().containsComponent("subComp1") .isAnInstanceOf("pkg1.singleton.SingletonPrimitive").isSingleton(); checker.assertDefinition(def1).isMultiton(); } @Test(groups = {"functional", "checkin"}) public void test4() throws Exception { final Definition def1 = loader.load("pkg1.generic.Generic1", context); checker.assertDefinition(def1).isMultiton(); final Definition def2 = loader.load("pkg1.generic.Generic2", context); checker.assertDefinition(def2).isMultiton(); final Definition def = loader.load("pkg1.singleton.Composite3", context); checker .assertDefinition(def) .isSingleton() .containsComponent("subComp1") .isAnInstanceOf( "pkg1.generic.Generic2<pkg1.generic.Generic1<pkg1.singleton.SingletonPrimitive>,pkg1.generic.Generic1<pkg1.pkg2.Primitive1>>") .isSingleton().containsComponents("c1", "c2").whereFirst() .isAnInstanceOfSingleton().andNext().isAnInstanceOfMultiton(); checker.assertDefinition(def1).isMultiton(); checker.assertDefinition(def2).isMultiton(); } }