blob: 448c7ef68d1a0d03a17eb604465c1fce2de400e9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2009 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipe.debug.tests.view.memory;
import junit.framework.TestCase;
import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.memory.IMemoryRenderingBindingsListener;
import org.eclipse.debug.ui.memory.IMemoryRenderingManager;
import org.eclipse.debug.ui.memory.IMemoryRenderingType;
/**
* Tests memory rendering manager
*/
public class MemoryRenderingTests extends TestCase {
public MemoryRenderingTests(String name) {
super(name);
}
public void testRenderingTypes() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryRenderingType[] types = manager.getRenderingTypes();
assertTrue("Wrong number of rendering types contributed", types.length > 6);
assertTrue("Missing type 1", indexOf(manager.getRenderingType("rendering_type_1"), types) >= 0);
assertTrue("Missing type 2", indexOf(manager.getRenderingType("rendering_type_2"), types) >= 0);
assertTrue("Missing type 3", indexOf(manager.getRenderingType("rendering_type_3"), types) >= 0);
assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.raw_memory"), types) >= 0);
assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.ascii"), types) >= 0);
assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.signedint"), types) >= 0);
assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.unsignedint"), types) >= 0);
}
public void testRenderingTypeNames() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryRenderingType type = manager.getRenderingType("rendering_type_1");
assertEquals("Wrong name", "Rendering One", type.getLabel());
type = manager.getRenderingType("rendering_type_2");
assertEquals("Wrong name", "Rendering Two", type.getLabel());
}
public void testSingleBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockOne();
IMemoryRenderingType[] types = manager.getRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_1", types[0].getId());
}
public void testDoubleBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockTwo();
IMemoryRenderingType[] types = manager.getRenderingTypes(block);
assertEquals("Wrong number of bindings", 2, types.length);
assertTrue("Missing binding", indexOf(manager.getRenderingType("rendering_type_1"), types) >= 0);
assertTrue("Missing binding", indexOf(manager.getRenderingType("rendering_type_2"), types) >= 0);
}
public void testDefaultBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockOne();
IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_1", types[0].getId());
}
public void testNoDefaultBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockTwo();
IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
assertEquals("Wrong number of bindings", 0, types.length);
}
public void testPrimaryBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockOne();
IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
assertEquals("Wrong binding", "rendering_type_1", type.getId());
}
public void testNoPrimaryBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockTwo();
IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
assertNull("Wrong binding", type);
}
public void testDefaultWithoutPrimaryBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockThree();
IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_3", types[0].getId());
}
public void testDynamicBinding() {
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
IMemoryBlock block = new MemoryBlockDynamic();
IMemoryRenderingType[] types = manager.getRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_1", types[0].getId());
types = manager.getDefaultRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_1", types[0].getId());
IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
assertEquals("Wrong bindings", manager.getRenderingType("rendering_type_1"), type);
}
public void testBindingChangeNotification() {
final boolean[] changed = new boolean[1];
IMemoryRenderingBindingsListener listener = new IMemoryRenderingBindingsListener() {
public void memoryRenderingBindingsChanged() {
changed[0] = true;
}
};
IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
try {
manager.addListener(listener);
assertFalse("Renderings should not have changed yet", changed[0]);
DynamicRenderingBindings.setBinding("rendering_type_2");
assertTrue("Renderings should have changed", changed[0]);
IMemoryBlock block = new MemoryBlockDynamic();
IMemoryRenderingType[] types = manager.getRenderingTypes(block);
assertEquals("Wrong number of bindings", 1, types.length);
assertEquals("Wrong binding", "rendering_type_2", types[0].getId());
} finally {
// restore original bindings
DynamicRenderingBindings.setBinding("rendering_type_1");
manager.removeListener(listener);
}
}
protected int indexOf(Object thing, Object[] list) {
for (int i = 0; i < list.length; i++) {
Object object2 = list[i];
if (object2.equals(thing)) {
return i;
}
}
return -1;
}
}