@Test
  public void shouldUnderstandTwoTestsInARow() {
    metric.calculate(
        toInputStream(
            "import a.b.Dep1;"
                + "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest1() {"
                + "Dep1 x = new Dep1();"
                + "Bla obj = new Bla(x, 1, 3.5, \"bla\");"
                + "obj.method1();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "@Test "
                + "public void aSimpleTest2() {"
                + "Dep2 x = new Dep2();"
                + "Bla obj = new Bla(x, 1, 3.5, \"bla\");"
                + "obj.method1();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertTrue(metric.getTests().get("aSimpleTest1").isIntegration());
    assertFalse(metric.getTests().get("aSimpleTest2").isIntegration());
  }
  @Test
  public void someRealExampleFromJUnit() {

    metric.calculate(
        toInputStream(
            "package org.junit.tests.junit3compatibility;"
                + ""
                + "import static org.junit.Assert.assertNull;"
                + ""
                + "import org.junit.Test;"
                + "import org.junit.internal.builders.SuiteMethodBuilder;"
                + ""
                + "public class ClassRequestTest {"
                + "    public static class PrivateSuiteMethod {"
                + "        static junit.framework.Test suite() {"
                + "            return null;"
                + "        }"
                + "    }"
                + ""
                + "    @Test"
                + "    public void noSuiteMethodIfMethodPrivate() throws Throwable {"
                + "        assertNull(new SuiteMethodBuilder()"
                + "                .runnerForClass(PrivateSuiteMethod.class));"
                + "    }"
                + "}"));

    assertTrue(metric.getTests().get("noSuiteMethodIfMethodPrivate").isIntegration());
  }
  @Test
  public void shouldTellThatIsUnitTestIfMethodFromSamePackageIsInvokedCompletlelyInline() {
    metric.calculate(
        toInputStream(
            "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "assertEquals(new Dep1().doMagic());"
                + "}"
                + "}"));

    assertFalse(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void
      shouldTellThatIsAUnitTestIfConstructorReceivesConcreteAndPrimitiveStuffFromSamePackage() {
    metric.calculate(
        toInputStream(
            "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Dep1 x = new Dep1();"
                + "Bla obj = new Bla(x, 1, 3.5, \"bla\");"
                + "obj.method1();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertFalse(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void shouldTellThatIsAUnitTestIfConcreteMethodFromSamePackageIsInvoked() {
    metric.calculate(
        toInputStream(
            "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Dep1 newX = new Dep1();"
                + "Bla obj = new Bla();"
                + "newX.doMagic();"
                + "obj.doOtherMagic();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertFalse(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void shouldTellThatIsAnIntegrationTestIfConcreteMethodIsInvokedWithoutInstance() {
    metric.calculate(
        toInputStream(
            "import a.b.Dep1;"
                + "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Bla obj = new Bla();"
                + "int result = new Dep1().doMagic();"
                + "new Dep1().doMagic2();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertTrue(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void shouldTellThatIsAnUnitTestIfMethodReceivesConcreteStuffFromSamePackage() {
    metric.calculate(
        toInputStream(
            "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Dep1 x = new Dep1();"
                + "Dep2 y = new Dep2();"
                + "Bla obj = new Bla(x);"
                + "obj.method1(y);"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertFalse(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void shouldTellThatIsAnIntegrationTestIfConstructorReceivesConcreteStuffWithCtor() {
    metric.calculate(
        toInputStream(
            "import a.b.Dep1;"
                + "import a.b.Dep2;"
                + "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Dep1 x = new Dep1(new TT());"
                + "Dep2 y = new Dep2(new KK());"
                + "Bla obj = new Bla(x, y);"
                + "obj.method1();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertTrue(metric.getTests().get("aSimpleTest").isIntegration());
  }
  @Test
  public void pequeninho() {
    metric.calculate(
        toInputStream(
            "import a.b.Dep1;"
                + "import a.b.Dep2;"
                + "class BlaTest {"
                + "@Test "
                + "public void aSimpleTest() {"
                + "Dep1 x = new Dep1();"
                + "Dep2 y = new Dep2();"
                + "Bla obj = new Bla(x, y);"
                + "obj.method1();"
                + "assertEquals(obj.isAbc());"
                + "}"
                + "}"));

    assertTrue(metric.getTests().get("aSimpleTest").isIntegration());
  }