package japicmp.test; import japicmp.cmp.JarArchiveComparator; import japicmp.cmp.JarArchiveComparatorOptions; import japicmp.filter.JavadocLikePackageFilter; import japicmp.model.JApiClass; import japicmp.test.packageOne.PackageOne; import japicmp.test.packageTwo.PackageTwo; import org.junit.Test; import java.util.List; import static japicmp.test.util.Helper.getArchive; import static japicmp.test.util.Helper.getJApiClass; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.notNullValue; import static org.junit.Assert.assertThat; public class PackageFilterTest { @Test public void onlyIncludeOnePackage() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getIncludes().add(new JavadocLikePackageFilter("japicmp.test.packageOne")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); getJApiClass(jApiClasses, PackageOne.class.getName()); assertThat(jApiClasses.size(), is(1)); } @Test public void onlyIncludeTwoPackages() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getIncludes().add(new JavadocLikePackageFilter("japicmp.test.packageOne")); options.getFilters().getIncludes().add(new JavadocLikePackageFilter("japicmp.test.packageTwo")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); getJApiClass(jApiClasses, PackageOne.class.getName()); getJApiClass(jApiClasses, PackageTwo.class.getName()); assertThat(jApiClasses.size(), is(2)); } @Test public void onlyExcludeOnePackage() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getExcludes().add(new JavadocLikePackageFilter("japicmp.test.packageOne")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); assertThatExceptionIsThrown(new Callback() { public void callback() { getJApiClass(jApiClasses, PackageOne.class.getName()); } }); } @Test public void excludePackageJapicmpTest() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getExcludes().add(new JavadocLikePackageFilter("japicmp.test")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); assertThat(jApiClasses.size(), is(0)); } @Test public void includePackageJapicmpTest() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getIncludes().add(new JavadocLikePackageFilter("japicmp.test")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue())); } @Test public void includePackageOneWithWildcard() { JarArchiveComparatorOptions options = new JarArchiveComparatorOptions(); options.getFilters().getIncludes().add(new JavadocLikePackageFilter("japicmp.*.packageOne")); JarArchiveComparator jarArchiveComparator = new JarArchiveComparator(options); final List<JApiClass> jApiClasses = jarArchiveComparator.compare(getArchive("japicmp-test-v1.jar"), getArchive("japicmp-test-v2.jar")); assertThat(getJApiClass(jApiClasses, PackageOne.class.getName()), is(notNullValue())); } private interface Callback { void callback(); } private void assertThatExceptionIsThrown(Callback callback) { boolean exception = false; try { callback.callback(); } catch (Exception e) { exception = true; } assertThat(exception, is(true)); } }