Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: f7fc4e354e4ea9b7144382c943a67b49a1bc16b6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
/*******************************************************************************
 *  Copyright (c) 2000, 2013 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.eclipse.debug.tests.view.memory;

import org.eclipse.debug.core.model.IMemoryBlock;
import org.eclipse.debug.tests.AbstractDebugTest;
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 AbstractDebugTest {

	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); //$NON-NLS-1$
		assertTrue("Missing type 1", indexOf(manager.getRenderingType("rendering_type_1"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type 2", indexOf(manager.getRenderingType("rendering_type_2"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type 3", indexOf(manager.getRenderingType("rendering_type_3"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.raw_memory"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.ascii"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.signedint"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing type", indexOf(manager.getRenderingType("org.eclipse.debug.ui.rendering.unsignedint"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
	}

	public void testRenderingTypeNames() {
		IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
		IMemoryRenderingType type = manager.getRenderingType("rendering_type_1"); //$NON-NLS-1$
		assertEquals("Wrong name", "Rendering One", type.getLabel()); //$NON-NLS-1$ //$NON-NLS-2$
		type = manager.getRenderingType("rendering_type_2"); //$NON-NLS-1$
		assertEquals("Wrong name", "Rendering Two", type.getLabel()); //$NON-NLS-1$ //$NON-NLS-2$
	}

	public void testSingleBinding() {
		IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
		IMemoryBlock block = new MemoryBlockOne();
		IMemoryRenderingType[] types = manager.getRenderingTypes(block);
		assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
		assertEquals("Wrong binding", "rendering_type_1", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
	}

	public void testDoubleBinding() {
		IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
		IMemoryBlock block = new MemoryBlockTwo();
		IMemoryRenderingType[] types = manager.getRenderingTypes(block);
		assertEquals("Wrong number of bindings", 2, types.length); //$NON-NLS-1$
		assertTrue("Missing binding", indexOf(manager.getRenderingType("rendering_type_1"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
		assertTrue("Missing binding", indexOf(manager.getRenderingType("rendering_type_2"), types) >= 0); //$NON-NLS-1$ //$NON-NLS-2$
	}

    public void testDefaultBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockOne();
        IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
		assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
		assertEquals("Wrong binding", "rendering_type_1", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
    }

    public void testNoDefaultBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockTwo();
        IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
		assertEquals("Wrong number of bindings", 0, types.length); //$NON-NLS-1$
    }

    public void testPrimaryBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockOne();
        IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
		assertEquals("Wrong binding", "rendering_type_1", type.getId()); //$NON-NLS-1$ //$NON-NLS-2$
    }

    public void testNoPrimaryBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockTwo();
        IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
		assertNull("Wrong binding", type); //$NON-NLS-1$
    }

    public void testDefaultWithoutPrimaryBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockThree();
        IMemoryRenderingType[] types = manager.getDefaultRenderingTypes(block);
		assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
		assertEquals("Wrong binding", "rendering_type_3", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
    }

    public void testDynamicBinding() {
        IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();
        IMemoryBlock block = new MemoryBlockDynamic();
        IMemoryRenderingType[] types = manager.getRenderingTypes(block);
		assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
		assertEquals("Wrong binding", "rendering_type_1", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
        types = manager.getDefaultRenderingTypes(block);
		assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
		assertEquals("Wrong binding", "rendering_type_1", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
        IMemoryRenderingType type = manager.getPrimaryRenderingType(block);
		assertEquals("Wrong bindings", manager.getRenderingType("rendering_type_1"), type); //$NON-NLS-1$ //$NON-NLS-2$
    }

	public void testBindingChangeNotification() {
		final boolean[] changed = new boolean[1];
		IMemoryRenderingBindingsListener listener = new IMemoryRenderingBindingsListener() {
			@Override
			public void memoryRenderingBindingsChanged() {
				changed[0] = true;
			}
		};
		IMemoryRenderingManager manager = DebugUITools.getMemoryRenderingManager();

		// bug 374447 - Need to make sure that DynamicRenderingBindings singleton
		// is initialized
		IMemoryBlock block = new MemoryBlockDynamic();
        IMemoryRenderingType[] types = manager.getRenderingTypes(block);

		try {
			manager.addListener(listener);
			assertFalse("Renderings should not have changed yet", changed[0]); //$NON-NLS-1$
			DynamicRenderingBindings.setBinding("rendering_type_2"); //$NON-NLS-1$
			assertTrue("Renderings should have changed", changed[0]); //$NON-NLS-1$
	        types = manager.getRenderingTypes(block);
			assertEquals("Wrong number of bindings", 1, types.length); //$NON-NLS-1$
			assertEquals("Wrong binding", "rendering_type_2", types[0].getId()); //$NON-NLS-1$ //$NON-NLS-2$
		} finally {
			// restore original bindings
			DynamicRenderingBindings.setBinding("rendering_type_1"); //$NON-NLS-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;
	}
}

Back to the top