17dd252788645e940eada959bdde927426e2531c9Paul Duffin/* 27dd252788645e940eada959bdde927426e2531c9Paul Duffin * Copyright (C) 2012 The Guava Authors 37dd252788645e940eada959bdde927426e2531c9Paul Duffin * 47dd252788645e940eada959bdde927426e2531c9Paul Duffin * Licensed under the Apache License, Version 2.0 (the "License"); 57dd252788645e940eada959bdde927426e2531c9Paul Duffin * you may not use this file except in compliance with the License. 67dd252788645e940eada959bdde927426e2531c9Paul Duffin * You may obtain a copy of the License at 77dd252788645e940eada959bdde927426e2531c9Paul Duffin * 87dd252788645e940eada959bdde927426e2531c9Paul Duffin * http://www.apache.org/licenses/LICENSE-2.0 97dd252788645e940eada959bdde927426e2531c9Paul Duffin * 107dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unless required by applicable law or agreed to in writing, software 117dd252788645e940eada959bdde927426e2531c9Paul Duffin * distributed under the License is distributed on an "AS IS" BASIS, 127dd252788645e940eada959bdde927426e2531c9Paul Duffin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137dd252788645e940eada959bdde927426e2531c9Paul Duffin * See the License for the specific language governing permissions and 147dd252788645e940eada959bdde927426e2531c9Paul Duffin * limitations under the License. 157dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 167dd252788645e940eada959bdde927426e2531c9Paul Duffin 177dd252788645e940eada959bdde927426e2531c9Paul Duffinpackage com.google.common.testing; 187dd252788645e940eada959bdde927426e2531c9Paul Duffin 197dd252788645e940eada959bdde927426e2531c9Paul Duffinimport static org.truth0.Truth.ASSERT; 207dd252788645e940eada959bdde927426e2531c9Paul Duffin 217dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.base.Predicates; 227dd252788645e940eada959bdde927426e2531c9Paul Duffinimport com.google.common.collect.ImmutableList; 237dd252788645e940eada959bdde927426e2531c9Paul Duffin 247dd252788645e940eada959bdde927426e2531c9Paul Duffinimport junit.framework.TestCase; 257dd252788645e940eada959bdde927426e2531c9Paul Duffin 267dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.Arrays; 277dd252788645e940eada959bdde927426e2531c9Paul Duffinimport java.util.List; 287dd252788645e940eada959bdde927426e2531c9Paul Duffin 297dd252788645e940eada959bdde927426e2531c9Paul Duffin/** 307dd252788645e940eada959bdde927426e2531c9Paul Duffin * Unit tests for {@link AbstractPackageSanityTests}. 317dd252788645e940eada959bdde927426e2531c9Paul Duffin * 327dd252788645e940eada959bdde927426e2531c9Paul Duffin * @author Ben Yu 337dd252788645e940eada959bdde927426e2531c9Paul Duffin */ 347dd252788645e940eada959bdde927426e2531c9Paul Duffinpublic class AbstractPackageSanityTestsTest extends TestCase { 357dd252788645e940eada959bdde927426e2531c9Paul Duffin 367dd252788645e940eada959bdde927426e2531c9Paul Duffin private final AbstractPackageSanityTests sanityTests = new AbstractPackageSanityTests() {}; 377dd252788645e940eada959bdde927426e2531c9Paul Duffin 387dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_testClass() { 390888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(EmptyTest.class))) 407dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 410888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(EmptyTests.class))) 427dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 430888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(EmptyTestCase.class))) 440888a09821a98ac0680fad765217302858e70fa4Paul Duffin .isEmpty(); 450888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(EmptyTestSuite.class))) 467dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 477dd252788645e940eada959bdde927426e2531c9Paul Duffin } 487dd252788645e940eada959bdde927426e2531c9Paul Duffin 497dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_noCorrespondingTestClass() { 500888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class))) 510888a09821a98ac0680fad765217302858e70fa4Paul Duffin .has().exactly(Foo.class).inOrder(); 520888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class, Foo2Test.class))) 530888a09821a98ac0680fad765217302858e70fa4Paul Duffin .has().exactly(Foo.class).inOrder(); 547dd252788645e940eada959bdde927426e2531c9Paul Duffin } 557dd252788645e940eada959bdde927426e2531c9Paul Duffin 567dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_publicApiOnly() { 577dd252788645e940eada959bdde927426e2531c9Paul Duffin sanityTests.publicApiOnly(); 580888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class))) 597dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 600888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(PublicFoo.class))).has().item(PublicFoo.class); 617dd252788645e940eada959bdde927426e2531c9Paul Duffin } 627dd252788645e940eada959bdde927426e2531c9Paul Duffin 637dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_ignoreClasses() { 640888a09821a98ac0680fad765217302858e70fa4Paul Duffin sanityTests.ignoreClasses(Predicates.<Object>equalTo(PublicFoo.class)); 650888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(PublicFoo.class))) 667dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 670888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class))).has().item(Foo.class); 687dd252788645e940eada959bdde927426e2531c9Paul Duffin } 697dd252788645e940eada959bdde927426e2531c9Paul Duffin 707dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_withCorrespondingTestClassButNotExplicitlyTested() { 710888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class, FooTest.class), "testNotThere")) 720888a09821a98ac0680fad765217302858e70fa4Paul Duffin .has().exactly(Foo.class).inOrder(); 730888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class, FooTest.class), "testNotPublic")) 740888a09821a98ac0680fad765217302858e70fa4Paul Duffin .has().exactly(Foo.class).inOrder(); 757dd252788645e940eada959bdde927426e2531c9Paul Duffin } 767dd252788645e940eada959bdde927426e2531c9Paul Duffin 777dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_withCorrespondingTestClassAndExplicitlyTested() { 787dd252788645e940eada959bdde927426e2531c9Paul Duffin ImmutableList<Class<? extends Object>> classes = ImmutableList.of(Foo.class, FooTest.class); 790888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(classes, "testPublic")) 800888a09821a98ac0680fad765217302858e70fa4Paul Duffin .isEmpty(); 810888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(classes, "testNotThere", "testPublic")) 827dd252788645e940eada959bdde927426e2531c9Paul Duffin .isEmpty(); 837dd252788645e940eada959bdde927426e2531c9Paul Duffin } 847dd252788645e940eada959bdde927426e2531c9Paul Duffin 857dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testFindClassesToTest_withCorrespondingTestClass_noTestName() { 860888a09821a98ac0680fad765217302858e70fa4Paul Duffin ASSERT.that(findClassesToTest(ImmutableList.of(Foo.class, FooTest.class))) 870888a09821a98ac0680fad765217302858e70fa4Paul Duffin .has().exactly(Foo.class).inOrder(); 887dd252788645e940eada959bdde927426e2531c9Paul Duffin } 897dd252788645e940eada959bdde927426e2531c9Paul Duffin 907dd252788645e940eada959bdde927426e2531c9Paul Duffin static class EmptyTestCase {} 917dd252788645e940eada959bdde927426e2531c9Paul Duffin 927dd252788645e940eada959bdde927426e2531c9Paul Duffin static class EmptyTest {} 937dd252788645e940eada959bdde927426e2531c9Paul Duffin 947dd252788645e940eada959bdde927426e2531c9Paul Duffin static class EmptyTests {} 957dd252788645e940eada959bdde927426e2531c9Paul Duffin 967dd252788645e940eada959bdde927426e2531c9Paul Duffin static class EmptyTestSuite {} 977dd252788645e940eada959bdde927426e2531c9Paul Duffin 987dd252788645e940eada959bdde927426e2531c9Paul Duffin static class Foo {} 997dd252788645e940eada959bdde927426e2531c9Paul Duffin 1007dd252788645e940eada959bdde927426e2531c9Paul Duffin public static class PublicFoo {} 1017dd252788645e940eada959bdde927426e2531c9Paul Duffin 1027dd252788645e940eada959bdde927426e2531c9Paul Duffin static class FooTest { 1030888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unused") // accessed reflectively 1047dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testPublic() {} 1050888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unused") // accessed reflectively 1067dd252788645e940eada959bdde927426e2531c9Paul Duffin void testNotPublic() {} 1077dd252788645e940eada959bdde927426e2531c9Paul Duffin } 1087dd252788645e940eada959bdde927426e2531c9Paul Duffin 1097dd252788645e940eada959bdde927426e2531c9Paul Duffin // Shouldn't be mistaken as Foo's test 1107dd252788645e940eada959bdde927426e2531c9Paul Duffin static class Foo2Test { 1110888a09821a98ac0680fad765217302858e70fa4Paul Duffin @SuppressWarnings("unused") // accessed reflectively 1127dd252788645e940eada959bdde927426e2531c9Paul Duffin public void testPublic() {} 1137dd252788645e940eada959bdde927426e2531c9Paul Duffin } 1147dd252788645e940eada959bdde927426e2531c9Paul Duffin 1150888a09821a98ac0680fad765217302858e70fa4Paul Duffin private List<Class<?>> findClassesToTest( 1160888a09821a98ac0680fad765217302858e70fa4Paul Duffin Iterable<? extends Class<?>> classes, String... explicitTestNames) { 1177dd252788645e940eada959bdde927426e2531c9Paul Duffin return sanityTests.findClassesToTest(classes, Arrays.asList(explicitTestNames)); 1187dd252788645e940eada959bdde927426e2531c9Paul Duffin } 1197dd252788645e940eada959bdde927426e2531c9Paul Duffin} 120