package com.codeaffine.extras.jdt.internal.junitstatus; import static com.codeaffine.eclipse.core.runtime.Predicates.attribute; import static com.codeaffine.extras.jdt.internal.junitstatus.JUnitStatusBarPreferencePage.ID; import static org.assertj.core.api.Assertions.assertThat; import java.util.function.Predicate; import org.eclipse.jface.preference.IPreferenceStore; import org.junit.After; import org.junit.Before; 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; import com.codeaffine.extras.jdt.internal.JDTExtrasPlugin; public class JUnitStatusBarPreferencePagePDETest { private static final String JUNIT_KEYWORD_ID = "org.eclipse.jdt.junit.JUnit"; private JUnitStatusBarPreferencePage preferencePage; @Before public void setUp() { preferencePage = new JUnitStatusBarPreferencePage(); } @After public void tearDown() { preferencePage.dispose(); } @Test public void testExtension() { Extension actual = readPreferencePageExtension(); ExtensionAssert.assertThat( actual ) .hasAttributeValue( "category", "org.eclipse.jdt.junit.preferences" ) .hasAttributeValue( "class", JUnitStatusBarPreferencePage.class.getName() ) .hasChildWithAttributeValue( "id", JUNIT_KEYWORD_ID ) .hasNonEmptyAttributeValueFor( "name" ) .isInstantiable( JUnitStatusBarPreferencePage.class ); } @Test public void testExtensionKeywordReferences() { Extension extension = readExtension( "org.eclipse.ui.keywords", attribute( "id", JUNIT_KEYWORD_ID ) ); assertThat( extension ).isNotNull(); } @Test public void testDoGetPreferenceStore() { IPreferenceStore preferenceStore = preferencePage.doGetPreferenceStore(); assertThat( preferenceStore ).isEqualTo( JDTExtrasPlugin.getInstance().getPreferenceStore() ); } @Test public void testGetTitle() { String title = preferencePage.getTitle(); assertThat( title ).isNotEmpty(); } 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(); } }