package org.jnario.jnario.test.util;
import com.google.common.base.Objects;
import com.google.inject.Inject;
import java.util.List;
import org.eclipse.xtext.preferences.MapBasedPreferenceValues;
import org.eclipse.xtext.xbase.formatting.BasicFormatterPreferenceKeys;
import org.eclipse.xtext.xbase.junit.formatter.AssertingFormatterData;
import org.eclipse.xtext.xbase.junit.formatter.FormatterTester;
import org.eclipse.xtext.xbase.lib.Conversions;
import org.eclipse.xtext.xbase.lib.Functions.Function1;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.eclipse.xtext.xbase.lib.ListExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
@SuppressWarnings("all")
public abstract class AbstractXbaseFormatterTest {
@Inject
private FormatterTester tester;
public void assertFormatted(final CharSequence toBeFormatted) {
this.assertFormatted(toBeFormatted, toBeFormatted);
}
public void assertFormattedExpression(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence toBeFormatted) {
this.assertFormattedExpression(cfg, toBeFormatted, toBeFormatted);
}
public void assertFormattedExpression(final CharSequence toBeFormatted) {
this.assertFormattedExpression(null, toBeFormatted, toBeFormatted);
}
public void assertFormattedExpression(final String expectation, final CharSequence toBeFormatted) {
this.assertFormattedExpression(null, expectation, toBeFormatted);
}
public void assertFormattedExpression(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence expectation, final CharSequence toBeFormatted) {
this.assertFormattedExpression(cfg, expectation, toBeFormatted, false);
}
public void assertFormattedExpression(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence expectation, final CharSequence toBeFormatted, final boolean allowErrors) {
String _string = expectation.toString();
String _trim = _string.trim();
String _indent = this.indent(_trim, "\t");
String _string_1 = toBeFormatted.toString();
String _trim_1 = _string_1.trim();
String _indent_1 = this.indent(_trim_1, "\t");
this.assertFormatted(cfg, _indent, _indent_1,
"{\n\t",
"\n}", allowErrors);
}
protected String indent(final String string, final String indent) {
String[] _split = string.split("\\r?\\n");
final Function1<String, String> _function = new Function1<String, String>() {
public String apply(final String it) {
String _xifexpression = null;
boolean _equals = Objects.equal(it, "");
if (_equals) {
_xifexpression = it;
} else {
_xifexpression = (indent + it);
}
return _xifexpression;
}
};
List<String> _map = ListExtensions.<String, String>map(((List<String>)Conversions.doWrapArray(_split)), _function);
return IterableExtensions.join(_map, "\n");
}
public void assertFormatted(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence expectation) {
this.assertFormatted(cfg, expectation, expectation);
}
public void assertFormatted(final CharSequence expectation, final CharSequence toBeFormatted) {
this.assertFormatted(null, expectation, toBeFormatted);
}
public void assertFormatted(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence expectation, final CharSequence toBeFormatted) {
this.assertFormatted(cfg, expectation, toBeFormatted, "", "", true);
}
public void assertFormatted(final Procedure1<? super MapBasedPreferenceValues> cfg, final CharSequence expectation, final CharSequence toBeFormatted, final String prefix, final String postfix, final boolean allowErrors) {
final Procedure1<AssertingFormatterData> _function = new Procedure1<AssertingFormatterData>() {
public void apply(final AssertingFormatterData it) {
MapBasedPreferenceValues _config = it.getConfig();
AbstractXbaseFormatterTest.this.initConfig(_config, cfg);
it.setExpectation(expectation);
it.setToBeFormatted(toBeFormatted);
it.setPrefix(prefix);
it.setPostfix(postfix);
it.setAllowErrors(allowErrors);
}
};
this.tester.assertFormatted(_function);
}
public void initConfig(final MapBasedPreferenceValues target, final Procedure1<? super MapBasedPreferenceValues> cfg) {
String _id = BasicFormatterPreferenceKeys.maxLineWidth.getId();
String _string = Integer.valueOf(80).toString();
target.put(_id, _string);
boolean _notEquals = (!Objects.equal(cfg, null));
if (_notEquals) {
cfg.apply(target);
}
}
}