@Test public void generatedFile_shouldHandleClassNameOnlyShadows() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowClassNameOnly.java"), forResource("org/robolectric/annotation/processing/shadows/ShadowDummy.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError() .and() .generatesSources(forResource("org/robolectric/Robolectric_ClassNameOnly.java")); }
@Test public void shouldGenerateGenericShadowOf() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowDummy.java"), forResource("org/robolectric/annotation/processing/shadows/ShadowParameterizedDummy.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError() .and() .generatesSources(forResource("org/robolectric/Robolectric_Parameterized.java")); }
@Test public void shouldGenerateMetaInfServicesFile() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowClassNameOnly.java"), forResource("org/robolectric/annotation/processing/shadows/ShadowDummy.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError() .and() .generatesFiles(forResource("META-INF/services/org.robolectric.internal.ShadowProvider")); }
@Test public void generatedFile_shouldNotGenerateShadowOfMethodsForExcludedClasses() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowExcludedFromAndroidSdk.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError() .and() .generatesSources(forResource("org/robolectric/Robolectric_NoExcludedTypes.java")); }
public SingleClassSubject(FailureMetadata failureMetadata, String subject) { super(failureMetadata, subject); source = JavaFileObjects.forResource(Utils.toResourcePath(subject)); tester = assertAbout(javaSources()) .that(ImmutableList.of(source, Utils.SHADOW_EXTRACTOR_SOURCE)) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)); }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/EnumModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/EnumModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/SimpleGenericModelWithExtends.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/SimpleGenericModelWithExtends$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/SimpleCollectionModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/SimpleCollectionModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/PrivateFieldModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/PrivateFieldModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/SimpleWrapperModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/SimpleWrapperModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/SimpleGenericModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/SimpleGenericModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/DateModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/DateModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/LowerCaseNamingPolicyModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/LowerCaseNamingPolicyModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/ParentModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/ParentModel$$JsonObjectMapper.java")); } }
@Test public void generatedSource() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/good/MultipleFieldNamesModel.java")) .processedWith(new JsonAnnotationProcessor()) .compilesWithoutError() .and() .generatesSources(JavaFileObjects.forResource("generated/MultipleFieldNamesModel$$JsonObjectMapper.java")); } }
@Test public void shouldGracefullyHandleUnrecognisedAnnotation() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/TestWithUnrecognizedAnnotation.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError(); }
@Test public void realObjectWithCorrectClassName_shouldCompile() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowRealObjectWithCorrectClassName.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .compilesWithoutError(); }
@Test public void generatedFile_shouldComplainAboutNonStaticInnerClasses() { assertAbout(javaSources()) .that(ImmutableList.of( SHADOW_PROVIDER_SOURCE, SHADOW_EXTRACTOR_SOURCE, forResource("org/robolectric/annotation/processing/shadows/ShadowOuterDummyWithErrs.java"))) .processedWith(new RobolectricProcessor(DEFAULT_OPTS)) .failsToCompile() .withErrorContaining("inner shadow classes must be static"); }
@Test public void methodWithArgs() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/bad/MethodWithArgsModel.java")) .processedWith(new JsonAnnotationProcessor()) .failsToCompile() .withErrorContaining("@OnJsonParseComplete methods must not take any parameters."); }
@Test public void multipleMethods() { ASSERT.about(javaSource()) .that(JavaFileObjects.forResource("model/bad/MultipleMethodsModel.java")) .processedWith(new JsonAnnotationProcessor()) .failsToCompile() .withErrorContaining("There can only be one @OnJsonParseComplete method per class"); } }