package com.codeaffine.extras.workingset.internal;
import static com.codeaffine.extras.workingset.internal.WorkingSetExtrasPlugin.PLUGIN_ID;
import static org.assertj.core.api.Assertions.assertThat;
import org.eclipse.ui.IWorkingSetElementAdapter;
import org.eclipse.ui.IWorkingSetUpdater;
import org.eclipse.ui.dialogs.IWorkingSetPage;
import org.junit.Test;
import com.codeaffine.eclipse.core.runtime.Extension;
import com.codeaffine.eclipse.core.runtime.Predicates;
import com.codeaffine.eclipse.core.runtime.RegistryAdapter;
import com.codeaffine.extras.test.util.ImageAssert;
public class DynamicWorkingSetExtensionPDETest {
@Test
public void testWorkingSetExtension() {
Extension extension = getDynamicWorkingSetExtension();
assertThat( extension.getAttribute( "name" ) ).isNotEmpty();
assertThat( extension.getAttribute( "description" ) ).isNotEmpty();
assertThat( extension.getAttribute( "icon" ) ).isEqualTo( "$nl$/icons/obj16/working-set.png" );
ImageAssert.assertThat( PLUGIN_ID, extension.getAttribute( "icon" ) ).exists();
assertThat( getPageClass( extension ) ).isInstanceOf( DynamicWorkingSetPage.class );
assertThat( getUpdaterClass( extension ) ).isInstanceOf( DynamicWorkingSetUpdater.class );
assertThat( getAdapterClass( extension ) ).isInstanceOf( DynamicWorkingSetElementAdapter.class );
}
private static Extension getDynamicWorkingSetExtension() {
return new RegistryAdapter()
.readExtension( "org.eclipse.ui.workingSets" )
.thatMatches( Predicates.attribute( "id", DynamicWorkingSet.ID ) )
.process();
}
private static IWorkingSetPage getPageClass( Extension extension ) {
return extension.createExecutableExtension( "pageClass", IWorkingSetPage.class );
}
private static IWorkingSetUpdater getUpdaterClass( Extension extension ) {
return extension.createExecutableExtension( "updaterClass", IWorkingSetUpdater.class );
}
private static IWorkingSetElementAdapter getAdapterClass( Extension extension ) {
return extension.createExecutableExtension( "elementAdapterClass", IWorkingSetElementAdapter.class );
}
}