package org.erlide.core.services.builder;
import java.util.List;
import org.eclipse.xtext.xbase.lib.Pair;
import org.erlide.core.builder.CompilerOption;
import org.erlide.core.builder.CompilerOption.BooleanOption;
import org.erlide.core.builder.CompilerOption.DefineOption;
import org.erlide.core.builder.CompilerOption.WarningOption;
import org.erlide.util.erlang.OtpParserException;
import org.junit.Assert;
import org.junit.Test;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.google.common.collect.Lists;
public class CompilerOptionTest {
@Test
public void testFind() {
final CompilerOption option = CompilerOption.WARN_EXPORT_ALL;
Assert.assertEquals("warn_export_all", option.getName());
Assert.assertEquals(WarningOption.class, option.getClass());
}
@Test
public void testToTerm_1() {
final BooleanOption option = CompilerOption.WARN_EXPORT_ALL;
final OtpErlangObject actual = option.toTerm(true);
final String expected = "warn_export_all";
Assert.assertEquals(expected, actual.toString());
}
@Test
public void testToTerm_2() {
final BooleanOption option = CompilerOption.WARN_EXPORT_ALL;
final OtpErlangObject actual = option.toTerm(false);
final String expected = "nowarn_export_all";
Assert.assertEquals(expected, actual.toString());
}
@Test
public void testToTerm_3() {
final BooleanOption option = CompilerOption.DEBUG_INFO;
final OtpErlangObject actual = option.toTerm(true);
final String expected = "debug_info";
Assert.assertEquals(expected, actual.toString());
}
@Test
public void testToTerm_4() {
final BooleanOption option = CompilerOption.DEBUG_INFO;
final OtpErlangObject actual = option.toTerm(false);
final String expected = null;
Assert.assertEquals(expected, actual);
}
@Test
public void testToTerm_5() throws OtpParserException {
final DefineOption option = CompilerOption.DEFINE;
@SuppressWarnings("unchecked")
final List<Pair<String, String>> values = Lists
.newArrayList(new Pair<>("Macro", "[hej,1]"));
final OtpErlangObject actual = option.toTerm(values);
final String expected = "[{d,'Macro',[hej,1]}]";
Assert.assertEquals(expected, actual.toString());
}
@Test
public void testToTerm_5a() throws OtpParserException {
final DefineOption option = CompilerOption.DEFINE;
@SuppressWarnings("unchecked")
final List<Pair<String, String>> values = Lists
.newArrayList(new Pair<>("Macro", ""));
final OtpErlangObject actual = option.toTerm(values);
final String expected = "[{d,'Macro'}]";
Assert.assertEquals(expected, actual.toString());
}
@Test
public void testToTerm_6() {
final BooleanOption option = CompilerOption.WARN_EXPORT_ALL;
final OtpErlangObject actual = option.toTerm(false);
final String expected = "nowarn_export_all";
Assert.assertEquals(expected, actual.toString());
}
}