package com.airbnb.epoxy;
import com.google.testing.compile.JavaFileObjects;
import org.junit.Test;
import javax.tools.JavaFileObject;
import static com.google.common.truth.Truth.assert_;
import static com.google.testing.compile.JavaSourcesSubjectFactory.javaSources;
import static java.util.Arrays.asList;
@SuppressWarnings("ResultOfMethodCallIgnored")
public class DataBindingModelTest {
private static final JavaFileObject R = JavaFileObjects.forSourceString("com.airbnb.epoxy.R", ""
+ "package com.airbnb.epoxy;\n"
+ "public final class R {\n"
+ " public static final class array {\n"
+ " public static final int res = 0x7f040001;\n"
+ " }\n"
+ " public static final class bool {\n"
+ " public static final int res = 0x7f040002;\n"
+ " }\n"
+ " public static final class color {\n"
+ " public static final int res = 0x7f040003;\n"
+ " }\n"
+ " public static final class layout {\n"
+ " public static final int res = 0x7f040008;\n"
+ " public static final int model_with_data_binding=0x7f040009;\n"
+ " }\n"
+ " public static final class integer {\n"
+ " public static final int res = 0x7f040004;\n"
+ " }\n"
+ " public static final class styleable {\n"
+ " public static final int[] ActionBar = { 0x7f010001, 0x7f010003 };\n"
+ " }\n"
+ "}"
);
private static final JavaFileObject BR_CLASS = JavaFileObjects
.forSourceString("com.airbnb.epoxy.BR",
"package com.airbnb.epoxy;\n"
+ "\n"
+ "public class BR {\n"
+ " public static final int _all = 0;\n"
+ " public static final int valueInt = 1;\n"
+ " public static final int valueInteger = 2;\n"
+ " public static final int valueShort = 3;\n"
+ " public static final int valueShortWrapper = 4;\n"
+ " public static final int valueChar = 5;\n"
+ " public static final int valueCharacter = 6;\n"
+ " public static final int valuebByte = 7;\n"
+ " public static final int valueByteWrapper = 8;\n"
+ " public static final int valueLong = 9;\n"
+ " public static final int valueLongWrapper = 10;\n"
+ " public static final int valueDouble = 11;\n"
+ " public static final int valueDoubleWrapper = 12;\n"
+ " public static final int valueFloat = 13;\n"
+ " public static final int valueFloatWrapper = 14;\n"
+ " public static final int valueBoolean = 15;\n"
+ " public static final int valueBooleanWrapper = 16;\n"
+ " public static final int valueIntArray = 17;\n"
+ " public static final int valueObjectArray = 18;\n"
+ " public static final int valueString = 19;\n"
+ " public static final int valueObject = 20;\n"
+ " public static final int valueList = 21;\n"
+ " public static final int stringValue = 22;\n"
+ "}");
@Test
public void testSimpleModel() {
JavaFileObject model = JavaFileObjects
.forResource("DataBindingModelWithAllFieldTypes.java");
JavaFileObject generatedModel =
JavaFileObjects.forResource("DataBindingModelWithAllFieldTypes_.java");
assert_().about(javaSources())
.that(asList(model, BR_CLASS, R))
.processedWith(new EpoxyProcessor())
.compilesWithoutError()
.and()
.generatesSources(generatedModel);
}
@Test
public void testSimpleModelNoValidation() {
JavaFileObject model = JavaFileObjects
.forResource("DataBindingModelWithAllFieldTypesNoValidation.java");
JavaFileObject generatedModel =
JavaFileObjects.forResource("DataBindingModelWithAllFieldTypesNoValidation_.java");
assert_().about(javaSources())
.that(asList(model, BR_CLASS, R))
.processedWith(EpoxyProcessor.withNoValidation())
.compilesWithoutError()
.and()
.generatesSources(generatedModel);
}
@Test
public void testFullyGeneratedModel() {
JavaFileObject packageInfo = JavaFileObjects
.forResource("package-info.java");
JavaFileObject binding = JavaFileObjects
.forResource("ModelWithDataBindingBinding.java");
JavaFileObject generatedModel =
JavaFileObjects.forResource("ModelWithDataBindingBindingModel_.java");
assert_().about(javaSources())
.that(asList(packageInfo, binding, BR_CLASS, R))
.processedWith(new EpoxyProcessor())
.compilesWithoutError()
.and()
.generatesSources(generatedModel);
}
}