package org.erlide.core.services.builder; import org.eclipse.xtext.xbase.lib.Pair; import org.erlide.core.builder.CompilerOption; import org.erlide.core.builder.CompilerOptions; import org.junit.Assert; import org.junit.Test; import com.google.common.base.Splitter; public class CompilerOptionsTest { private static final String DEF_VALUES = "nowarn_export_all,nowarn_export_vars,nowarn_shadow_vars,warn_unused_function,warn_deprecated_function,nowarn_obsolete_guard,nowarn_unused_import,warn_unused_vars,warn_unused_record"; @Test public void test_0() { final CompilerOptions prefs = new CompilerOptions(); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_1() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.DEBUG_INFO, true); final String actual = prefs.export().toString(); final String expect = "[debug_info," + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_2() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.DEBUG_INFO, false); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @SuppressWarnings("unchecked") @Test public void test_3() { final CompilerOptions prefs = new CompilerOptions(); prefs.setListOption(CompilerOption.DEFINE, new Pair<String, String>("Macro", null)); final String actual = prefs.export().toString(); final String expect = "[{d,'Macro'}," + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @SuppressWarnings("unchecked") @Test public void test_4() { final CompilerOptions prefs = new CompilerOptions(); prefs.setListOption(CompilerOption.DEFINE, new Pair<>("Macro", "[value,1]")); final String actual = prefs.export().toString(); final String expect = "[{d,'Macro',[value,1]}," + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_5() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.WARN_UNUSED_FUNCTION, true); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_6() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.WARN_UNUSED_FUNCTION, false); final String actual = prefs.export().toString(); final String expect = "[nowarn_export_all,nowarn_export_vars,nowarn_shadow_vars,nowarn_unused_function,warn_deprecated_function,nowarn_obsolete_guard,nowarn_unused_import,warn_unused_vars,warn_unused_record]"; Assert.assertEquals(expect, actual); } @SuppressWarnings("unchecked") @Test public void test_7() { final CompilerOptions prefs = new CompilerOptions(); prefs.setListOption(CompilerOption.DEFINE, new Pair<String, String>("Macro", null)); prefs.removeOption(CompilerOption.DEFINE); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_8() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.WARN_EXPORT_ALL, true); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES.substring(2) + "]"; Assert.assertEquals(expect, actual); } @Test public void test_9() { final CompilerOptions prefs = new CompilerOptions(); prefs.setBooleanOption(CompilerOption.WARN_EXPORT_ALL, false); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } private Iterable<String> parseIncludes(final String s) { return Splitter.on(',').trimResults().omitEmptyStrings().split(s); } @Test public void test_10() { final CompilerOptions prefs = new CompilerOptions(); prefs.setPathOption(CompilerOption.INCLUDE_DIRS, parseIncludes("")); final String actual = prefs.export().toString(); final String expect = "[" + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_11() { final CompilerOptions prefs = new CompilerOptions(); prefs.setPathOption(CompilerOption.INCLUDE_DIRS, parseIncludes("/tmp/x")); final String actual = prefs.export().toString(); final String expect = "[{i,\"/tmp/x\"}," + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } @Test public void test_12() { final CompilerOptions prefs = new CompilerOptions(); prefs.setPathOption(CompilerOption.INCLUDE_DIRS, parseIncludes("/tmp/x,/tmp/y")); final String actual = prefs.export().toString(); final String expect = "[{i,\"/tmp/x\"},{i,\"/tmp/y\"}," + DEF_VALUES + "]"; Assert.assertEquals(expect, actual); } }