package jetbrains.mps.lang.extension.tests.testExtension; /*Generated by MPS */ import junit.framework.TestCase; import jetbrains.mps.lang.extension.tests.plugin.TestObject; import jetbrains.mps.MPSLaunch; import jetbrains.mps.smodel.structure.Extension; import jetbrains.mps.smodel.structure.ExtensionPoint; import junit.framework.Assert; import java.util.Iterator; import java.util.NoSuchElementException; import jetbrains.mps.lang.extension.tests.plugin.LazyTestObject; import jetbrains.mps.internal.collections.runtime.IterableUtils; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.ISelector; import com.intellij.openapi.application.ex.ApplicationManagerEx; import com.intellij.openapi.application.ApplicationAdapter; public class Extension_Test extends TestCase { private static TestObject TEST_OBJECT; @MPSLaunch public void test_testObject() throws Exception { Iterable<? extends Extension<TestObject>> extensions = ((ExtensionPoint<TestObject>) new ExtensionPoint<TestObject>("jetbrains.mps.lang.extension.tests.testExtensionPoint")).getExtensions(); Assert.assertNotNull(extensions); Iterator<? extends Extension<TestObject>> it = extensions.iterator(); Assert.assertTrue(it.hasNext()); Extension<TestObject> ext = it.next(); try { it.next(); Assert.fail("unexpected value"); } catch (NoSuchElementException e) { // expected exception } TestObject to = ext.get(); TEST_OBJECT = to; Assert.assertEquals("foobar", to.getValue()); Assert.assertFalse(to.isShutDown()); } @MPSLaunch public void test_testLazyObject() throws Exception { Assert.assertNull(LazyTestObject.INSTANCE); Iterable<? extends Extension<LazyTestObject>> extensions = ((ExtensionPoint<LazyTestObject>) new ExtensionPoint<LazyTestObject>("jetbrains.mps.lang.extension.tests.lazyTestExtensionPoint")).getExtensions(); LazyTestObject lzo = extensions.iterator().next().get(); Assert.assertNotNull(lzo); Assert.assertSame(LazyTestObject.INSTANCE, lzo); } @MPSLaunch public void test_extensionPointExpression() throws Exception { String string = IterableUtils.join(Sequence.fromIterable(new ExtensionPoint<String>("jetbrains.mps.lang.extension.tests.multiExtensionPoint").getObjects()).sort(new ISelector<String, String>() { public String select(String it) { return it; } }, false), ", "); Assert.assertEquals("salam, dunya", string); } public void tearDown() { if (TEST_OBJECT != null) { Assert.assertFalse(TEST_OBJECT.isShutDown()); ApplicationManagerEx.getApplicationEx().addApplicationListener(new ApplicationAdapter() { @Override public void applicationExiting() { if (!(Extension_Test.TEST_OBJECT.isShutDown())) { throw new RuntimeException("!TestObject.shutDown"); } } }); } } public Extension_Test() { } }