com.google.testing.compile.JavaSourcesSubjectFactory Java Examples

The following examples show how to use com.google.testing.compile.JavaSourcesSubjectFactory. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ProcessorIntegrationTest.java    From litho with Apache License 2.0 6 votes vote down vote up
@Ignore("T41117446") // Starts failing after updating gradle plugin to 3.3.1
@Test
public void failsToCompileClassBasedTestSpec() throws IOException {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "IncorrectClassBasedTestSpec.java"));
  final JavaFileObject layoutSpecObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "BasicLayoutSpec.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(ImmutableList.of(javaFileObject, layoutSpecObject))
      .processedWith(new ComponentsTestingProcessor(), new ComponentsProcessor())
      .failsToCompile()
      .withErrorCount(1)
      .withErrorContaining(
          "Specs annotated with @TestSpecs must be interfaces and cannot be of kind CLASS.")
      .in(javaFileObject)
      .onLine(23);
}
 
Example #2
Source File: ProcessorIntegrationTest.java    From litho with Apache License 2.0 6 votes vote down vote up
@Ignore("T41117446") // Starts failing after updating gradle plugin to 3.3.1
@Test
public void failsToCompileNonEmptyTestSpecInterface() throws IOException {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "IncorrectNonEmptyTestSpec.java"));
  final JavaFileObject layoutSpecObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "BasicLayoutSpec.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(ImmutableList.of(javaFileObject, layoutSpecObject))
      .processedWith(new ComponentsTestingProcessor(), new ComponentsProcessor())
      .failsToCompile()
      .withErrorCount(1)
      .withErrorContaining(
          "TestSpec interfaces must not contain any members. Please remove these function declarations: ()void test, ()java.util.List<java.lang.Integer> list")
      .in(javaFileObject)
      .onLine(24);
}
 
Example #3
Source File: SQLiteCompilerTest.java    From alchemy with Apache License 2.0 6 votes vote down vote up
@Test
public void generatedFiles() throws Exception {
    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(Arrays.asList(
                    JavaFileObjects.forResource("models/groups/Group.java"),
                    JavaFileObjects.forResource("models/users/User.java")
            ))
            .processedWith(new SQLiteCompiler())
            .compilesWithoutError()
            .and()
            .generatesSources(
                    JavaFileObjects.forResource("generated/alchemy/sqlite/DefaultSchema.java"),
                    JavaFileObjects.forResource("generated/alchemy/sqlite/Group_Table.java"),
                    JavaFileObjects.forResource("generated/alchemy/sqlite/User_Table.java"),
                    JavaFileObjects.forResource("generated/models/groups/Group_Entry.java"),
                    JavaFileObjects.forResource("generated/models/groups/Group_Admin.java"),
                    JavaFileObjects.forResource("generated/models/groups/Group_Users.java"),
                    JavaFileObjects.forResource("generated/models/groups/GroupContract.java"),
                    JavaFileObjects.forResource("generated/models/users/User_Entry.java"),
                    JavaFileObjects.forResource("generated/models/users/UserContract.java")
            );
}
 
Example #4
Source File: SectionsProcessorIntegrationTest.java    From litho with Apache License 2.0 5 votes vote down vote up
@Ignore("T41117446") //  Enable them after switching target to AndroidX
@Test
public void compilesFullGroupSectionSpecWithoutError() {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "FullGroupSectionSpec.java"));

  final JavaFileObject testEventFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestEvent.java"));

  final JavaFileObject testTagFileObject =
      JavaFileObjects.forResource(Resources.getResource(getClass(), RES_PREFIX + "TestTag.java"));

  final JavaFileObject expectedOutput =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "FullGroupSection.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(ImmutableList.of(javaFileObject, testEventFileObject, testTagFileObject))
      .processedWith(new SectionsComponentProcessor())
      .compilesWithoutError()
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullGroupSection.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT,
          RES_PACKAGE,
          "FullGroupSection$FullGroupSectionStateContainer.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullGroupSection$Builder.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullGroupSectionSpec.class")
      .and()
      .generatesSources(expectedOutput);
}
 
Example #5
Source File: SectionsProcessorIntegrationTest.java    From litho with Apache License 2.0 5 votes vote down vote up
@Ignore("T41117446") //  Enable them after switching target to AndroidX
@Test
public void compilesFullDiffSectionSpecWithoutError() {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "FullDiffSectionSpec.java"));

  final JavaFileObject testEventFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestEvent.java"));

  final JavaFileObject testTagFileObject =
      JavaFileObjects.forResource(Resources.getResource(getClass(), RES_PREFIX + "TestTag.java"));

  final JavaFileObject expectedOutput =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "FullDiffSection.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(ImmutableList.of(javaFileObject, testEventFileObject, testTagFileObject))
      .processedWith(new SectionsComponentProcessor())
      .compilesWithoutError()
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullDiffSection.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT,
          RES_PACKAGE,
          "FullDiffSection$FullDiffSectionStateContainer.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullDiffSection$Builder.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "FullDiffSectionSpec.class")
      .and()
      .generatesSources(expectedOutput);
}
 
Example #6
Source File: ProcessorIntegrationTest.java    From litho with Apache License 2.0 5 votes vote down vote up
@Ignore("T41117446") //  Enable them after switching target to AndroidX
@Test
public void compilesTestLayoutSpecWithoutError() {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestLayoutSpec.java"));

  final JavaFileObject testTreePropFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestTreeProp.java"));

  final JavaFileObject testEventFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestEvent.java"));

  final JavaFileObject testTagFileObject =
      JavaFileObjects.forResource(Resources.getResource(getClass(), RES_PREFIX + "TestTag.java"));

  final JavaFileObject expectedOutput =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestLayout.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(
          ImmutableList.of(
              javaFileObject, testTreePropFileObject, testEventFileObject, testTagFileObject))
      .processedWith(new ComponentsProcessor())
      .compilesWithoutError()
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestLayout.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestLayout$TestLayoutStateContainer.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestLayout$Builder.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestLayoutSpec.class")
      .and()
      .generatesSources(expectedOutput);
}
 
Example #7
Source File: ProcessorIntegrationTest.java    From litho with Apache License 2.0 5 votes vote down vote up
@Ignore("T41117446") //  Enable them after switching target to AndroidX
@Test
public void compilesBasicTestSampleSpec() {
  final JavaFileObject testSpecObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "BasicTestSampleSpec.java"));
  final JavaFileObject layoutSpecObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "BasicLayoutSpec.java"));

  final JavaFileObject expectedOutput =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "BasicTestSample.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(ImmutableList.of(testSpecObject, layoutSpecObject))
      .processedWith(new ComponentsTestingProcessor(), new ComponentsProcessor())
      .compilesWithoutError()
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "BasicTestSample.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "BasicTestSample$Matcher.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "BasicTestSample$Matcher$1.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "BasicTestSampleSpec.class")
      .and()
      .generatesSources(expectedOutput);
}
 
Example #8
Source File: MyProcessorTest.java    From AnnotationProcessorStarter with Apache License 2.0 5 votes vote down vote up
@Test
public void process_A_with_annotated_method() throws IOException {
    final JavaFileObject lInput = JavaFileObjects.forResource("assets/A.java");
    final JavaFileObject lOutput = JavaFileObjects.forResource("assets/A$$MyAnnotation.java");

    assert_()
            .about(JavaSourcesSubjectFactory.javaSources())
            .that(Arrays.asList(lInput))
            .processedWith(new MyProcessor())
            .compilesWithoutError()
            .and()
            .generatesSources(lOutput);
}
 
Example #9
Source File: ProcessorIntegrationTest.java    From litho with Apache License 2.0 4 votes vote down vote up
@Ignore("T41117446") //  Enable them after switching target to AndroidX
@Test
public void compilesTestMountSpec() {
  final JavaFileObject javaFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestMountSpec.java"));

  final JavaFileObject testTreePropFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestTreeProp.java"));

  final JavaFileObject testEventFileObject =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestEvent.java"));

  final JavaFileObject testTagFileObject =
      JavaFileObjects.forResource(Resources.getResource(getClass(), RES_PREFIX + "TestTag.java"));

  final JavaFileObject expectedOutput =
      JavaFileObjects.forResource(
          Resources.getResource(getClass(), RES_PREFIX + "TestMount.java"));

  Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
      .that(
          ImmutableList.of(
              javaFileObject, testTreePropFileObject, testEventFileObject, testTagFileObject))
      .processedWith(new ComponentsProcessor())
      .compilesWithoutError()
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestMount.class")
      .and()
      .generatesFileNamed(
          StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestMount$TestMountStateContainer.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestMount$1.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestMount$Builder.class")
      .and()
      .generatesFileNamed(StandardLocation.CLASS_OUTPUT, RES_PACKAGE, "TestMountSpec.class")
      .and()
      .generatesSources(expectedOutput);
}
 
Example #10
Source File: CompilerTest.java    From Moxy with MIT License 4 votes vote down vote up
protected CompileTester getThat(Collection<? extends Processor> processors, final JavaFileObject... target) {
	return Truth.assert_().about(JavaSourcesSubjectFactory.javaSources())
			.that(Arrays.asList(target))
			.processedWith(processors);
}
 
Example #11
Source File: FragmentInjectionTest.java    From lightcycle with Apache License 2.0 4 votes vote down vote up
@Test
public void shouldGenerateInjectorForLightCycleFragment() {
    JavaFileObject validTestLightCycleFragment = JavaFileObjects.forSourceString("com/test/ValidTestLightCycleFragment", Joiner.on("\n").join(
            "package com.test;",
            "",
            "import com.soundcloud.lightcycle.DefaultFragmentLightCycle;",
            "import com.soundcloud.lightcycle.LightCycle;",
            "import com.soundcloud.lightcycle.LightCycleDispatcher;",
            "import com.soundcloud.lightcycle.LightCycleFragment;",
            "",
            "import android.app.Activity;",
            "",
            "public class ValidTestLightCycleFragment ",
            "        extends LightCycleFragment<ValidTestLightCycleFragment> {",
            "    @LightCycle LightCycle1 lightCycle1;",
            "    @LightCycle LightCycle2 lightCycle2;",
            "",
            "}",
            "",
            "class LightCycle1 extends DefaultFragmentLightCycle<ValidTestLightCycleFragment> {",
            "}",
            "",
            "class LightCycle2 extends DefaultFragmentLightCycle<ValidTestLightCycleFragment> {",
            "}"));

    // Because neither the processor or the lib (java libraries) can depend on the api (Android library),
    // we have to create a fake `LightCycleFragment` here for testing purpose.
    JavaFileObject fakeLightCycleFragment = JavaFileObjects.forSourceString("com/soundcloud/lightcycle/LightCycleFragment", Joiner.on("\n").join(
            "package com.soundcloud.lightcycle;",
            "",
            "import android.app.Fragment;",
            "",
            "public abstract class LightCycleFragment<FragmentType extends Fragment>",
            "        extends Fragment",
            "        implements LightCycleDispatcher<FragmentLightCycle<FragmentType>> {",
            "",
            "    @Override",
            "    public void bind(FragmentLightCycle<FragmentType> lifeCycleComponent) { }",
            "",
            "}"));

    JavaFileObject expectedSource = JavaFileObjects.forSourceString("com.test.ValidTestLightCycleFragment$LightCycleBinder", Joiner.on("\n").join(
            "package com.test;",
            "",
            "public final class ValidTestLightCycleFragment$LightCycleBinder {",
            "",
            "    public static void bind(ValidTestLightCycleFragment target) {",
            "        final com.soundcloud.lightcycle.FragmentLightCycle<com.test.ValidTestLightCycleFragment> lightCycle1$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle1);",
            "        target.bind(lightCycle1$Lifted);",
            "        final com.soundcloud.lightcycle.FragmentLightCycle<com.test.ValidTestLightCycleFragment> lightCycle2$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle2);",
            "        target.bind(lightCycle2$Lifted);",
            "    }",
            "}"));

    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(ImmutableList.of(validTestLightCycleFragment, fakeLightCycleFragment))
            .processedWith(new LightCycleProcessor())
            .compilesWithoutError()
            .and().generatesSources(expectedSource);
}
 
Example #12
Source File: AndroidXFragmentInjectionTest.java    From lightcycle with Apache License 2.0 4 votes vote down vote up
@Test
public void shouldGenerateInjectorForLightCycleSupportFragment() {
    JavaFileObject validTestLightCycleSupportFragment = JavaFileObjects.forSourceString("com/test/ValidTestLightCycleSupportFragment", Joiner.on("\n").join(
            "package com.test;",
            "",
            "import com.soundcloud.lightcycle.ActivityLightCycle;",
            "import com.soundcloud.lightcycle.DefaultSupportFragmentLightCycle;",
            "import com.soundcloud.lightcycle.LightCycle;",
            "import com.soundcloud.lightcycle.LightCycleDispatcher;",
            "import com.soundcloud.lightcycle.LightCycleSupportFragment;",
            "",
            "import android.app.Activity;",
            "",
            "public class ValidTestLightCycleSupportFragment ",
            "        extends LightCycleSupportFragment<ValidTestLightCycleSupportFragment> {",
            "    @LightCycle LightCycle1 lightCycle1;",
            "    @LightCycle LightCycle2 lightCycle2;",
            "",
            "}",
            "",
            "class LightCycle1 extends DefaultSupportFragmentLightCycle<ValidTestLightCycleSupportFragment> {",
            "}",
            "",
            "class LightCycle2 extends DefaultSupportFragmentLightCycle<ValidTestLightCycleSupportFragment> {",
            "}"));

    // Because neither the processor or the lib (java libraries) can depend on the api (Android library),
    // we have to create a fake `LightCycleSupportFragment` here for testing purpose.
    JavaFileObject fakeLightCycleSupportFragment = JavaFileObjects.forSourceString("com/soundcloud/lightcycle/LightCycleSupportFragment", Joiner.on("\n").join(
            "package com.soundcloud.lightcycle;",
            "",
            "import android.app.Fragment;",
            "",
            "public abstract class LightCycleSupportFragment<FragmentType extends Fragment>",
            "        extends Fragment",
            "        implements LightCycleDispatcher<SupportFragmentLightCycle<FragmentType>> {",
            "",
            "    @Override",
            "    public void bind(SupportFragmentLightCycle<FragmentType> lifeCycleComponent) { }",
            "",
            "}"));

    JavaFileObject expectedSource = JavaFileObjects.forSourceString("com.test.ValidTestLightCycleSupportFragment$LightCycleBinder", Joiner.on("\n").join(
            "package com.test;",
            "",
            "public final class ValidTestLightCycleSupportFragment$LightCycleBinder {",
            "",
            "    public static void bind(ValidTestLightCycleSupportFragment target) {",
            "        final com.soundcloud.lightcycle.SupportFragmentLightCycle<com.test.ValidTestLightCycleSupportFragment> lightCycle1$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle1);",
            "        target.bind(lightCycle1$Lifted);",
            "        final com.soundcloud.lightcycle.SupportFragmentLightCycle<com.test.ValidTestLightCycleSupportFragment> lightCycle2$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle2);",
            "        target.bind(lightCycle2$Lifted);",
            "    }",
            "}"));

    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(ImmutableList.of(validTestLightCycleSupportFragment, fakeLightCycleSupportFragment))
            .processedWith(new LightCycleProcessor())
            .compilesWithoutError()
            .and().generatesSources(expectedSource);
}
 
Example #13
Source File: AndroidXFragmentInjectionTest.java    From lightcycle with Apache License 2.0 4 votes vote down vote up
@Test
public void shouldGenerateInjectorForLightCycleSupportDialogFragment() {
    JavaFileObject validTestLightCycleSupportDialogFragment = JavaFileObjects.forSourceString("com/test/ValidTestLightCycleSupportDialogFragment", Joiner.on("\n").join(
            "package com.test;",
            "",
            "import com.soundcloud.lightcycle.ActivityLightCycle;",
            "import com.soundcloud.lightcycle.DefaultSupportFragmentLightCycle;",
            "import com.soundcloud.lightcycle.LightCycle;",
            "import com.soundcloud.lightcycle.LightCycleDispatcher;",
            "import com.soundcloud.lightcycle.LightCycleSupportDialogFragment;",
            "",
            "import android.app.DialogFragment;",
            "",
            "public class ValidTestLightCycleSupportDialogFragment ",
            "        extends LightCycleSupportDialogFragment<ValidTestLightCycleSupportDialogFragment> {",
            "    @LightCycle DialogLightCycle1 lightCycle1;",
            "    @LightCycle DialogLightCycle2 lightCycle2;",
            "",
            "}",
            "",
            "class DialogLightCycle1 ",
            "        extends DefaultSupportFragmentLightCycle<ValidTestLightCycleSupportDialogFragment> {",
            "}",
            "",
            "class DialogLightCycle2 ",
            "        extends DefaultSupportFragmentLightCycle<ValidTestLightCycleSupportDialogFragment> {",
            "}"));

    // Because neither the processor or the lib (java libraries) can depend on the api (Android library),
    // we have to create a fake `LightCycleSupportDialogFragment` here for testing purpose.
    JavaFileObject fakeLightCycleSupportDialogFragment = JavaFileObjects.forSourceString("com/soundcloud/lightcycle/LightCycleSupportDialogFragment", Joiner.on("\n").join(
            "package com.soundcloud.lightcycle;",
            "",
            "import android.app.DialogFragment;",
            "import android.app.Fragment;",
            "",
            "public abstract class LightCycleSupportDialogFragment<FragmentType extends Fragment>",
            "        extends DialogFragment",
            "        implements LightCycleDispatcher<SupportFragmentLightCycle<FragmentType>> {",
            "",
            "    @Override",
            "    public void bind(SupportFragmentLightCycle<FragmentType> lifeCycleComponent) { }",
            "",
            "}"));

    JavaFileObject expectedSource = JavaFileObjects.forSourceString("com.test.ValidTestLightCycleSupportDialogFragment$LightCycleBinder", Joiner.on("\n").join(
            "package com.test;",
            "",
            "public final class ValidTestLightCycleSupportDialogFragment$LightCycleBinder {",
            "",
            "    public static void bind(ValidTestLightCycleSupportDialogFragment target) {",
            "        final com.soundcloud.lightcycle.SupportFragmentLightCycle<com.test.ValidTestLightCycleSupportDialogFragment> lightCycle1$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle1);",
            "        target.bind(lightCycle1$Lifted);",
            "        final com.soundcloud.lightcycle.SupportFragmentLightCycle<com.test.ValidTestLightCycleSupportDialogFragment> lightCycle2$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle2);",
            "        target.bind(lightCycle2$Lifted);",
            "    }",
            "}"));

    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(ImmutableList.of(validTestLightCycleSupportDialogFragment, fakeLightCycleSupportDialogFragment))
            .processedWith(new LightCycleProcessor())
            .compilesWithoutError()
            .and().generatesSources(expectedSource);
}
 
Example #14
Source File: ActivityInjectionTest.java    From lightcycle with Apache License 2.0 4 votes vote down vote up
@Test
public void shouldGenerateInjectorForLightCycleAppCompatActivity() {
    JavaFileObject validTestLightCycleAppCompatActivity = JavaFileObjects.forSourceString("com/test/ValidTestLightCycleAppCompatActivity", Joiner.on("\n").join(
            "package com.test;",
            "",
            "import com.soundcloud.lightcycle.ActivityLightCycle;",
            "import com.soundcloud.lightcycle.DefaultActivityLightCycle;",
            "import com.soundcloud.lightcycle.LightCycle;",
            "import com.soundcloud.lightcycle.LightCycleDispatcher;",
            "import com.soundcloud.lightcycle.LightCycleAppCompatActivity;",
            "",
            "import android.app.Activity;",
            "",
            "public class ValidTestLightCycleAppCompatActivity ",
            "        extends LightCycleAppCompatActivity<ValidTestLightCycleAppCompatActivity> {",
            "    @LightCycle LightCycle1 lightCycle1;",
            "    @LightCycle LightCycle2 lightCycle2;",
            "",
            "}",
            "",
            "class LightCycle1 extends DefaultActivityLightCycle<ValidTestLightCycleAppCompatActivity> {",
            "}",
            "",
            "class LightCycle2 extends DefaultActivityLightCycle<ValidTestLightCycleAppCompatActivity> {",
            "}"));

    // Because neither the processor or the lib (java libraries) can depend on the api (Android library),
    // we have to create a fake `LightCycleAppCompatActivity` here for testing purpose.
    JavaFileObject fakeLightCycleAppCompatActivity = JavaFileObjects.forSourceString("com/soundcloud/lightcycle/LightCycleAppCompatActivity", Joiner.on("\n").join(
            "package com.soundcloud.lightcycle;",
            "",
            "import android.app.Activity;",
            "",
            "public abstract class LightCycleAppCompatActivity<T extends Activity>",
            "        extends Activity",
            "        implements LightCycleDispatcher<ActivityLightCycle<T>> {",
            "",
            "    @Override",
            "    public void bind(ActivityLightCycle<T> lightCycle) { }",
            "",
            "}"));

    JavaFileObject expectedSource = JavaFileObjects.forSourceString("com.test.ValidTestLightCycleAppCompatActivity$LightCycleBinder", Joiner.on("\n").join(
            "package com.test;",
            "",
            "public final class ValidTestLightCycleAppCompatActivity$LightCycleBinder {",
            "",
            "    public static void bind(ValidTestLightCycleAppCompatActivity target) {",
            "        final com.soundcloud.lightcycle.ActivityLightCycle<com.test.ValidTestLightCycleAppCompatActivity> lightCycle1$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle1);",
            "        target.bind(lightCycle1$Lifted);",
            "        final com.soundcloud.lightcycle.ActivityLightCycle<com.test.ValidTestLightCycleAppCompatActivity> lightCycle2$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle2);",
            "        target.bind(lightCycle2$Lifted);",
            "    }",
            "}"));

    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(ImmutableList.of(validTestLightCycleAppCompatActivity, fakeLightCycleAppCompatActivity))
            .processedWith(new LightCycleProcessor())
            .compilesWithoutError()
            .and().generatesSources(expectedSource);
}
 
Example #15
Source File: ActivityInjectionTest.java    From lightcycle with Apache License 2.0 4 votes vote down vote up
@Test
public void shouldGenerateInjectorForLightCycleActionBarActivity() {
    JavaFileObject validTestLightCycleActionBarActivity = JavaFileObjects.forSourceString("com/test/ValidTestLightCycleActionBarActivity", Joiner.on("\n").join(
            "package com.test;",
            "",
            "import com.soundcloud.lightcycle.ActivityLightCycle;",
            "import com.soundcloud.lightcycle.DefaultActivityLightCycle;",
            "import com.soundcloud.lightcycle.LightCycle;",
            "import com.soundcloud.lightcycle.LightCycleDispatcher;",
            "import com.soundcloud.lightcycle.LightCycleActionBarActivity;",
            "",
            "import android.app.Activity;",
            "",
            "public class ValidTestLightCycleActionBarActivity ",
            "        extends LightCycleActionBarActivity<ValidTestLightCycleActionBarActivity> {",
            "    @LightCycle LightCycle1 lightCycle1;",
            "    @LightCycle LightCycle2 lightCycle2;",
            "",
            "}",
            "",
            "class LightCycle1 extends DefaultActivityLightCycle<ValidTestLightCycleActionBarActivity> {",
            "}",
            "",
            "class LightCycle2 extends DefaultActivityLightCycle<ValidTestLightCycleActionBarActivity> {",
            "}"));

    // Because neither the processor or the lib (java libraries) can depend on the api (Android library),
    // we have to create a fake `LightCycleActionBarActivity` here for testing purpose.
    JavaFileObject fakeLightCycleActionBarActivity = JavaFileObjects.forSourceString("com/soundcloud/lightcycle/LightCycleActionBarActivity", Joiner.on("\n").join(
            "package com.soundcloud.lightcycle;",
            "",
            "import android.app.Activity;",
            "",
            "public abstract class LightCycleActionBarActivity<T extends Activity>",
            "        extends Activity",
            "        implements LightCycleDispatcher<ActivityLightCycle<T>> {",
            "",
            "    @Override",
            "    public void bind(ActivityLightCycle<T> lightCycle) { }",
            "",
            "}"));

    JavaFileObject expectedSource = JavaFileObjects.forSourceString("com.test.ValidTestLightCycleActionBarActivity$LightCycleBinder", Joiner.on("\n").join(
            "package com.test;",
            "",
            "public final class ValidTestLightCycleActionBarActivity$LightCycleBinder {",
            "",
            "    public static void bind(ValidTestLightCycleActionBarActivity target) {",
            "        final com.soundcloud.lightcycle.ActivityLightCycle<com.test.ValidTestLightCycleActionBarActivity> lightCycle1$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle1);",
            "        target.bind(lightCycle1$Lifted);",
            "        final com.soundcloud.lightcycle.ActivityLightCycle<com.test.ValidTestLightCycleActionBarActivity> lightCycle2$Lifted = ",
            "                com.soundcloud.lightcycle.LightCycles.lift(target.lightCycle2);",
            "        target.bind(lightCycle2$Lifted);",
            "    }",
            "}"));

    Truth.assertAbout(JavaSourcesSubjectFactory.javaSources())
            .that(ImmutableList.of(validTestLightCycleActionBarActivity, fakeLightCycleActionBarActivity))
            .processedWith(new LightCycleProcessor())
            .compilesWithoutError()
            .and().generatesSources(expectedSource);
}