blob: 37385f03d58841fbad0bcfb0f20654479673d834 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014 RCP Vision (http://www.rcp-vision.com) 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:
* Lorenzo Bettini - Initial contribution and API
*******************************************************************************/
package org.eclipse.emf.parsley.tests
import java.util.List
import org.eclipse.emf.parsley.tests.models.testmodels.ClassForControls
import org.eclipse.emf.parsley.tests.models.testmodels.ClassWithName
import org.eclipse.emf.parsley.ui.provider.ViewerLabelProvider
import org.eclipse.jface.resource.ImageDescriptor
import org.eclipse.jface.resource.JFaceResources
import org.eclipse.jface.viewers.ILabelProvider
import org.junit.Before
import org.junit.Test
import static extension org.eclipse.emf.parsley.junit4.ui.util.ImageTester.*
import static extension org.junit.Assert.*
import org.eclipse.swt.graphics.Font
import org.eclipse.swt.SWT
import static org.mockito.Mockito.*
import org.eclipse.jface.viewers.ILabelProviderListener
import org.junit.After
class ViewerLabelProviderTest extends AbstractImageBasedTest {
var ViewerLabelProvider labelProvider
@Before
def void setupLabelProvider() {
labelProvider = getOrCreateInjector.getInstance(ViewerLabelProvider)
}
@After
def void disposeLabelProvider() {
labelProvider.dispose
}
@Test
def void testGetTextNull() {
"".assertEquals(labelProvider.getText(null))
}
@Test
def void testDefaultGetText() {
"Class For Controls".assertEquals(labelProvider.getText(classForControlsInstance))
}
@Test
def void testDefaultGetTextForFeatureMapEntry() {
classForControlsInstance.featureMapEntries1 += createClassForFeatureMapEntry1("1")
classForControlsInstance.featureMapEntries2 += createClassForFeatureMapEntry2("2")
"Class For Feature Map Entry1 1".
assertEquals(labelProvider.getText(classForControlsInstance.featureMapEntries.get(0)))
"Class For Feature Map Entry2 2".
assertEquals(labelProvider.getText(classForControlsInstance.featureMapEntries.get(1)))
}
@Test
def void testDefaultGetTextForIterable() {
testContainer.classesWithName => [
it += createClassWithName("1")
it += createClassWithName("2")
it += createClassWithName("3")
]
"Class With Name 1, Class With Name 2, Class With Name 3".
assertEquals(labelProvider.getText(testContainer.classesWithName))
}
@Test
def void testDefaultGetTextForIterableTooLong() {
setupContainerWith10Elems
"Class With Name 0, Class With Name 1, Class With Name 2, Class With Name 3, Clas...".
assertEquals(labelProvider.getText(testContainer.classesWithName))
}
@Test
def void testDefaultGetTextForIterableWithCustomConstants() {
setupContainerWith10Elems
"Class With Name 0 - Class With Name 1 - Class With <continued>...".
assertEquals(
createInjector(
new EmfParsleyGuiceModuleForTesting() {
override valueIterableStringSeparator() {
" - "
}
override valueIterableStringEllipses() {
" <continued>..."
}
override valueIterableStringMaxLength() {
50
}
}
).getInstance(ILabelProvider)
.getText(testContainer.classesWithName)
)
}
@Test
def void testCustomText() {
val customLabelProvider = new ViewerLabelProvider(null) {
def text(ClassForControls e) {
"Test"
}
}.injectMembers
"Test".assertEquals(customLabelProvider.getText(classForControlsInstance))
}
@Test
def void testCustomTextForList() {
setupContainerWith10Elems
val customLabelProvider = new ViewerLabelProvider(null) {
def text(List<ClassWithName> l) {
l.map[name].join(",")
}
}.injectMembers
"0,1,2,3,4,5,6,7,8,9".assertEquals(customLabelProvider.getText(testContainer.classesWithName))
}
@Test
def void testGetImageNull() {
labelProvider.getImage(null).assertNull
}
@Test
def void testDefaultGetImage() {
labelProvider.getImage(classForControlsInstance) => [
assertNotNull
getDefaultEMFImageForClassForControls.assertImageIs(it)
]
}
@Test
def void testDefaultGetImageForFeatureMapEntry() {
classForControlsInstance.featureMapEntries1 += createClassForFeatureMapEntry1("1")
labelProvider.getImage(classForControlsInstance.featureMapEntries.get(0)) => [
assertNotNull
getDefaultEMFImageForClassForFeatureMapEntry1.assertImageIs(it)
]
}
@Test
def void testCustomImageAsString() {
val customLabelProvider = new ViewerLabelProvider(null) {
def image(ClassForControls e) {
TEST_IMAGE
}
}.injectMembers
customLabelProvider.getImage(classForControlsInstance) => [
assertNotNull
loadTestImage.assertImageIs(it)
]
}
@Test
def void testCustomImageAsImage() {
val customLabelProvider = new ViewerLabelProvider(null) {
def image(ClassForControls e) {
loadTestImage
}
}.injectMembers
customLabelProvider.getImage(classForControlsInstance) => [
assertNotNull
loadTestImage.assertImageIs(it)
]
}
@Test
def void testCustomImageAsImageDescriptor() {
val customLabelProvider = new ViewerLabelProvider(null) {
def image(ClassForControls e) {
ImageDescriptor.createFromImage(loadTestImage)
}
}.injectMembers
customLabelProvider.getImage(classForControlsInstance) => [
assertNotNull
loadTestImage.assertImageIs(it)
]
}
@Test
def void testWrongCustomImageAsInteger() {
val customLabelProvider = new ViewerLabelProvider(delegateLabelProvider) {
def image(ClassForControls e) {
0
}
}.injectMembers
// this will default to EMF image
customLabelProvider.getImage(classForControlsInstance) => [
assertNotNull
getDefaultEMFImageForClassForControls.assertImageIs(it)
]
}
@Test
def void testGetFontNull() {
null.assertEquals(labelProvider.getFont(null))
}
@Test
def void testDefaultGetFont() {
null.assertEquals(labelProvider.getFont(classForControlsInstance))
}
@Test
def void testCustomFont() {
val customLabelProvider = new ViewerLabelProvider(null) {
def font(ClassForControls e) {
new Font(shell.display, JFaceResources.DEFAULT_FONT, 14, SWT.BOLD)
}
}.injectMembers
customLabelProvider.getFont(classForControlsInstance) => [
assertNotNull
]
}
@Test
def void testGetForegroundNull() {
null.assertEquals(labelProvider.getForeground(null))
}
@Test
def void testDefaultGetForeground() {
null.assertEquals(labelProvider.getForeground(classForControlsInstance))
}
@Test
def void testCustomForeground() {
val customLabelProvider = new ViewerLabelProvider(null) {
def foreground(ClassForControls e) {
shell.display.getSystemColor(SWT.COLOR_BLUE)
}
}.injectMembers
customLabelProvider.getForeground(classForControlsInstance) => [
assertNotNull
]
}
@Test
def void testGetBackgroundNull() {
null.assertEquals(labelProvider.getBackground(null))
}
@Test
def void testDefaultGetBackground() {
null.assertEquals(labelProvider.getBackground(classForControlsInstance))
}
@Test
def void testCustomBackground() {
val customLabelProvider = new ViewerLabelProvider(null) {
def background(ClassForControls e) {
shell.display.getSystemColor(SWT.COLOR_BLUE)
}
}.injectMembers
customLabelProvider.getBackground(classForControlsInstance) => [
assertNotNull
]
}
@Test
def void testIsValueProperty() {
labelProvider.isLabelProperty(library, libraryPackage.library_Name.name).assertTrue
}
@Test
def void testListeners() {
val listener = mock(ILabelProviderListener)
labelProvider.addListener(listener)
labelProvider.removeListener(listener)
}
private def setupContainerWith10Elems() {
testContainer.classesWithName => [
for (i : 0..<10) {
it += createClassWithName("" + i)
}
]
}
private def getDefaultEMFImageForClassForControls() {
getEMFImageFromObject(getEMFImage(testFactory.createClassForControls))
}
private def getDefaultEMFImageForClassForFeatureMapEntry1() {
getEMFImageFromObject(getEMFImage(testFactory.createClassForFeatureMapEntry1))
}
}