package japicmp.test.output.xml; import japicmp.model.AccessModifier; import japicmp.model.JApiClass; import japicmp.test.AccessModifierLevel; import japicmp.test.util.Helper; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; import org.junit.BeforeClass; import org.junit.Test; import java.io.File; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Paths; import java.util.List; import static japicmp.test.util.Helper.replaceLastDotWith$; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; public class XmlOutputGeneratorAccessModifierTest { private static Document documentPublic; private static Document documentPrivate; @BeforeClass public static void beforeClass() throws IOException { List<JApiClass> jApiClasses = Helper.compareTestV1WithTestV2(AccessModifier.PUBLIC); Helper.generateHtmlOutput(jApiClasses, "target/diff_public.xml", "target/diff_public.html", true, AccessModifier.PUBLIC); jApiClasses = Helper.compareTestV1WithTestV2(AccessModifier.PRIVATE); Helper.generateHtmlOutput(jApiClasses, "target/diff_private.xml", "target/diff_private.html", true, AccessModifier.PRIVATE); File htmlFilePublic = Paths.get(System.getProperty("user.dir"), "target", "diff_public.html").toFile(); File htmlFilePrivate = Paths.get(System.getProperty("user.dir"), "target", "diff_private.html").toFile(); documentPublic = Jsoup.parse(htmlFilePublic, Charset.forName("UTF-8").toString()); documentPrivate = Jsoup.parse(htmlFilePrivate, Charset.forName("UTF-8").toString()); } @Test public void publicFilterAccessModifierChangesFromPrivateToPublicVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPublic, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesFromPrivateToPublic.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(false)); } @Test public void privateFilterAccessModifierChangesFromPrivateToPublicVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPrivate, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesFromPrivateToPublic.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(false)); } @Test public void publicFilterAccessModifierChangesFromPublicToPrivateVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPublic, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesFromPublicToPrivate.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(false)); } @Test public void privateFilterAccessModifierChangesFromPublicToPrivateVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPrivate, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesFromPublicToPrivate.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(false)); } @Test public void publicFilterAccessModifierChangesBelowPublicVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPublic, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesBelowPublic.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(true)); } @Test public void privateFilterAccessModifierChangesBelowPublicVisible() { Elements divForClass = XmlHelper.getDivForClass(documentPrivate, replaceLastDotWith$(AccessModifierLevel.AccessModifierChangesBelowPublic.class.getCanonicalName())); assertThat(divForClass.isEmpty(), is(false)); } }