package org.erlide.engine.model.erlang; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.io.File; import java.util.List; import org.erlide.engine.internal.model.root.ErlProject; import org.erlide.engine.model.ErlElementKind; import org.erlide.engine.model.IErlElement; import org.erlide.engine.model.root.IErlExternal; import org.erlide.engine.util.ErlideTestUtils; import org.junit.After; import org.junit.Before; import org.junit.Test; public class IErlExternalTest extends ErlModelTestBase { private static final String XX_ERLIDEX = "xx.erlidex"; private File externalFile; private File externalsFile; private String externalModulesString; @Before @Override public void setUp() throws Exception { super.setUp(); externalModulesString = project.getProperties().getExternalModules(); final String externalFileName = "external.erl"; externalFile = ErlideTestUtils.createTmpFile(externalFileName, "-module(external).\nf([_ | _]=L ->\n atom_to_list(L).\n"); final String absolutePath = externalFile.getAbsolutePath(); externalsFile = ErlideTestUtils.createTmpFile(XX_ERLIDEX, absolutePath); ((ErlProject) project).setExternalModulesFile(externalsFile.getAbsolutePath()); project.open(null); } @After @Override public void tearDown() throws Exception { if (externalFile != null && externalFile.exists()) { externalFile.delete(); } if (externalsFile != null && externalsFile.exists()) { externalsFile.delete(); } ((ErlProject) project).setExternalModulesFile(externalModulesString); super.tearDown(); } // boolean isOTP(); @Test public void isOTP() throws Exception { final List<IErlElement> externals = project .getChildrenOfKind(ErlElementKind.EXTERNAL_ROOT); final IErlExternal external = (IErlExternal) externals.get(0); external.open(null); assertFalse(external.isOTP()); final IErlExternal external2 = (IErlExternal) externals.get(1); external2.open(null); assertTrue(external2.isOTP()); final IErlExternal external3 = (IErlExternal) external.getChildren().get(0); assertFalse(external3.isOTP()); final IErlExternal external4 = (IErlExternal) external2.getChildren().get(0); assertTrue(external4.isOTP()); } // boolean hasIncludes(); @Test public void hasIncludes() throws Exception { final List<IErlElement> externals = project .getChildrenOfKind(ErlElementKind.EXTERNAL_ROOT); final IErlExternal external = (IErlExternal) externals.get(0); external.open(null); final IErlExternal externalOTP = (IErlExternal) externals.get(1); externalOTP.open(null); final IErlExternal externalDialyzer = (IErlExternal) externalOTP .getChildNamed("dialyzer"); assertTrue(external.hasIncludes()); assertTrue(externalOTP.hasIncludes()); assertFalse(externalDialyzer.hasIncludes()); } }