blob: 350c6d70f08f6f13ece8523908b28986859e1e33 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012 Oracle. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0, which accompanies this distribution
* and is available at https://www.eclipse.org/legal/epl-2.0/.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.ui.tests;
import java.lang.reflect.Field;
import junit.framework.TestCase;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.resource.LocalResourceManager;
import org.eclipse.jface.resource.ResourceManager;
import org.eclipse.swt.graphics.Image;
/**
* This test case will verify that a class's constants
* <p>
* Construct the test case with the class that defines the image descriptors.
*/
@SuppressWarnings("nls")
public class ImageDescriptorTest
extends TestCase
{
private final Class<?> clazz;
public ImageDescriptorTest(Class<?> clazz) {
super(buildName(clazz));
this.clazz = clazz;
}
private static String buildName(Class<?> clazz) {
return ImageDescriptorTest.class.getSimpleName() + ": " + clazz.getName();
}
@Override
protected void runTest() throws Throwable {
ResourceManager resourceManager = this.buildResourceManager();
try {
this.runTest(resourceManager);
} finally {
resourceManager.dispose();
}
}
protected void runTest(ResourceManager resourceManager) throws Throwable {
for (Field field : this.clazz.getFields()) {
Object value = field.get(null);
if (value instanceof ImageDescriptor) {
ImageDescriptor descriptor = (ImageDescriptor) value;
try {
Image image = resourceManager.createImage(descriptor);
assertNotNull(image);
} catch (RuntimeException ex) {
fail("Problem loading image for ImageDescriptor defined in static field '"
+ this.clazz.getSimpleName() + '.' + field.getName() + "': " + descriptor + " - " + ex);
}
} else {
// ignore non-image descriptors (e.g. strings);
// fields should probably not be null...
if (value == null) {
fail("The static field '"
+ this.clazz.getSimpleName() + '.' + field.getName() + "' is null.");
}
}
}
}
protected ResourceManager buildResourceManager() {
return new LocalResourceManager(this.getParentResourceManager());
}
private ResourceManager getParentResourceManager() {
return JFaceResources.getResources();
}
}