diff options
author | Karsten Thoms | 2018-05-10 20:50:42 +0000 |
---|---|---|
committer | Karsten Thoms | 2018-05-11 11:27:43 +0000 |
commit | 42a89fd3f087abb30bfcc40acd69142e11c37df8 (patch) | |
tree | e188df969a96ca780ecca1edcacb64fc4c9616be | |
parent | 60123784244bc6302bbdf945c554c49426c8494e (diff) | |
download | eclipse.platform.ui-42a89fd3f087abb30bfcc40acd69142e11c37df8.tar.gz eclipse.platform.ui-42a89fd3f087abb30bfcc40acd69142e11c37df8.tar.xz eclipse.platform.ui-42a89fd3f087abb30bfcc40acd69142e11c37df8.zip |
Bug 517573 - Re-added testsI20180511-2000
This reverts commit 071f7583be8b233e7bd098c900b5784205855595.
Change-Id: I355f5649c26ddae21dade76dfaefd93e59f83162
Signed-off-by: Karsten Thoms <karsten.thoms@itemis.de>
2 files changed, 113 insertions, 1 deletions
diff --git a/tests/org.eclipse.jface.tests.databinding/META-INF/MANIFEST.MF b/tests/org.eclipse.jface.tests.databinding/META-INF/MANIFEST.MF index e12ffe2bdb2..2a528db06b4 100644 --- a/tests/org.eclipse.jface.tests.databinding/META-INF/MANIFEST.MF +++ b/tests/org.eclipse.jface.tests.databinding/META-INF/MANIFEST.MF @@ -14,7 +14,8 @@ Require-Bundle: org.eclipse.core.databinding;bundle-version="[1.3.0,2.0.0)", org.eclipse.core.databinding.beans, org.eclipse.jface.databinding, org.eclipse.jface.tests.databinding.conformance, - org.eclipse.core.databinding.property + org.eclipse.core.databinding.property, + org.mockito;bundle-version="[1.8.4,1.9.0)" Import-Package: com.ibm.icu.math, com.ibm.icu.text Bundle-RequiredExecutionEnvironment: JavaSE-1.8 diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/viewers/ObservableMapCellLabelProviderTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/viewers/ObservableMapCellLabelProviderTest.java new file mode 100644 index 00000000000..3a0f58b57b3 --- /dev/null +++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/jface/tests/databinding/viewers/ObservableMapCellLabelProviderTest.java @@ -0,0 +1,111 @@ +/******************************************************************************* + * Copyright (c) 2018 Jens Lidestrom 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 + ******************************************************************************/ +package org.eclipse.jface.tests.databinding.viewers; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.databinding.observable.map.IObservableMap; +import org.eclipse.core.databinding.observable.map.WritableMap; +import org.eclipse.jface.databinding.viewers.ObservableMapCellLabelProvider; +import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase; +import org.eclipse.jface.viewers.LabelProviderChangedEvent; +import org.eclipse.jface.viewers.ViewerCell; +import org.junit.Test; + +/** + * Tests {@link ObservableMapCellLabelProvider}. + */ +public class ObservableMapCellLabelProviderTest extends AbstractDefaultRealmTestCase { + @Test + public void testUpdateWithValue() { + Object key = new Object(); + WritableMap<Object, Object> m = new WritableMap<>(); + m.put(key, "value"); + ObservableMapCellLabelProvider labelProvider = new ObservableMapCellLabelProvider(m); + + ViewerCell cell = mock(ViewerCell.class); + when(cell.getElement()).thenReturn(key); + + // Return a large arbitrary value, it should not affect the result + when(cell.getColumnIndex()).thenReturn(17); + + labelProvider.update(cell); + + verify(cell).setText("value"); + } + + @Test + public void testUpdateNullValue() { + Object key = new Object(); + WritableMap<Object, Object> m = new WritableMap<>(); + m.put(key, null); + ObservableMapCellLabelProvider labelProvider = new ObservableMapCellLabelProvider(m); + + ViewerCell cell = mock(ViewerCell.class); + when(cell.getElement()).thenReturn(key); + + labelProvider.update(cell); + + verify(cell).setText(""); + } + + @Test + public void testListenerNotification() throws Exception { + List<LabelProviderChangedEvent> events = new ArrayList<>(); + + WritableMap<Object, Object> m1 = new WritableMap<>(); + WritableMap<Object, Object> m2 = new WritableMap<>(); + Object key1 = new Object(); + Object key2 = new Object(); + + // Extend class to test with multiple maps + class ObservableMapCellLabelProviderExtension extends ObservableMapCellLabelProvider { + public ObservableMapCellLabelProviderExtension(IObservableMap<?, ?>... maps) { + super(maps); + } + } + + ObservableMapCellLabelProvider labelProvider = new ObservableMapCellLabelProviderExtension(m1, m2); + + labelProvider.addListener(e -> events.add(e)); + + // Add an element an verify response + m1.put(key1, "value1"); + + assertEquals(1, events.size()); + assertEquals(labelProvider, events.get(0).getSource()); + + // When a key is added there is no element in the event + // (Note: The author of this test in not sure whether this is the + // correct behavior.) + assertTrue(events.get(0).getElements() == null || events.get(0).getElements().length == 0); + + // Change value and verify that the right element gets an update + m1.put(key1, "value2"); + + assertEquals(2, events.size()); + + // When a key is changed there is an element in the event + assertEquals(1, events.get(1).getElements().length); + assertEquals(key1, events.get(1).getElements()[0]); + + // Add another key and verify that first key don't get an update + m1.put(key2, "value3"); + + assertEquals(3, events.size()); + assertEquals(labelProvider, events.get(2).getSource()); + assertTrue(events.get(2).getElements() == null || events.get(2).getElements().length == 0); + } +} |