package com.codeaffine.extras.launch.internal.cleanup; import static com.codeaffine.eclipse.core.runtime.Predicates.attribute; import static com.codeaffine.extras.launch.internal.cleanup.CleanupPreferencePage.ID; import static org.assertj.core.api.Assertions.assertThat; import java.util.function.Predicate; import org.junit.Test; import com.codeaffine.eclipse.core.runtime.Extension; import com.codeaffine.eclipse.core.runtime.RegistryAdapter; import com.codeaffine.eclipse.core.runtime.test.util.ExtensionAssert; public class CleanupPreferencePageExtensionPDETest { private static final String LAUNCHING_KEYWORD_ID = "org.eclipse.debug.ui.launching"; private static final String CONTEXT_LAUNCHING_KEYWORD_ID = "org.eclipse.debug.ui.contextLaunching"; @Test public void testExtension() { Extension extension = readPreferencePageExtension(); ExtensionAssert.assertThat( extension ) .hasAttributeValue( "category", "org.eclipse.debug.ui.LaunchingPreferencePage" ) .hasAttributeValue( "class", CleanupPreferencePage.class.getName() ) .hasChildWithAttributeValue( "id", LAUNCHING_KEYWORD_ID ) .hasChildWithAttributeValue( "id", CONTEXT_LAUNCHING_KEYWORD_ID ) .hasNonEmptyAttributeValueFor( "name" ) .isInstantiable( CleanupPreferencePage.class ); } @Test public void testNameEqulsTitle() { Extension extension = readPreferencePageExtension(); String name = extension.getAttribute( "name" ); String title = new CleanupPreferencePage().getTitle(); assertThat( name ).isEqualTo( title ); } @Test public void testLaunchingKeywordReferences() { Extension extension = readExtension( "org.eclipse.ui.keywords", attribute( "id", LAUNCHING_KEYWORD_ID ) ); assertThat( extension ).isNotNull(); } @Test public void testContextLaunchingKeywordReferences() { Extension extension = readExtension( "org.eclipse.ui.keywords", attribute( "id", CONTEXT_LAUNCHING_KEYWORD_ID ) ); assertThat( extension ).isNotNull(); } private static Extension readPreferencePageExtension() { return readExtension( "org.eclipse.ui.preferencePages", attribute( "id", ID ) ); } private static Extension readExtension( String extensionPoint, Predicate<Extension> predicate ) { return new RegistryAdapter().readExtension( extensionPoint ).thatMatches( predicate ).process(); } }