blob: 7ed86ae357639243763c0258632640ca7ac565fd [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 org.eclipse.emf.ecore.EClass
import org.eclipse.emf.ecore.EStructuralFeature
import org.eclipse.emf.ecore.util.EcoreUtil
import org.eclipse.emf.parsley.junit4.AbstractEmfParsleyShellBasedTest
import org.eclipse.emf.parsley.tests.models.testmodels.TestmodelsPackage
import org.eclipse.emf.parsley.tests.util.EmfParsleyFixturesAndUtilitiesTestRule
import org.eclipse.emf.parsley.ui.provider.FormFeatureCaptionProvider
import org.eclipse.swt.widgets.Composite
import org.eclipse.swt.widgets.Label
import org.eclipse.ui.forms.FormColors
import org.eclipse.ui.forms.widgets.FormToolkit
import org.junit.Before
import org.junit.Rule
import org.junit.Test
import static extension org.junit.Assert.*
class FormFeatureCaptionProviderTest extends AbstractEmfParsleyShellBasedTest {
@Rule public extension EmfParsleyFixturesAndUtilitiesTestRule fixtures = new EmfParsleyFixturesAndUtilitiesTestRule()
val testPackage = TestmodelsPackage.eINSTANCE
var FormColors formColors = null
@Before def void createFormColors() {
syncExecVoid[|formColors = new FormColors(display)]
}
@Test def void testDefaultText() {
val provider = new FormFeatureCaptionProvider() => [initialize]
val feature = testPackage.derivedClass_DerivedClassFeature
feature.name.assertEquals(provider.getText(derivedClass, feature))
}
@Test def void testDefaultLabel() {
val provider = new FormFeatureCaptionProvider() => [initialize]
val feature = testPackage.derivedClass_DerivedClassFeature
"Derived Class Feature".assertEquals(syncExec[|
provider.getLabel(shell, derivedClass.createInstance, feature).text
])
}
@Test def void testLabelTextDifferentFromText() {
val expectedText = "DerivedClass.derivedClassFeature"
val expectedLabelText = "Label.DerivedClass.derivedClassFeature"
val testFeature = testPackage.derivedClass_DerivedClassFeature
val provider = new FormFeatureCaptionProvider() {
def String text_DerivedClass_derivedClassFeature(EStructuralFeature feature) {
return expectedText
}
def Label label_DerivedClass_derivedClassFeature(Composite parent, EStructuralFeature feature) {
return createLabel(parent, expectedLabelText)
}
} => [initialize]
expectedText.assertEquals(provider.getText(derivedClass.createInstance, testFeature))
expectedLabelText.assertEquals(syncExec[|
provider.getLabel(shell, derivedClass.createInstance, testFeature).text
])
}
@Test def void testCreatedLabelUsesFormToolkit() {
val expectedLabelText = "Label.DerivedClass.derivedClassFeature"
val testFeature = testPackage.derivedClass_DerivedClassFeature
val provider = new FormFeatureCaptionProvider() {
def Label label_DerivedClass_derivedClassFeature(Composite parent, EStructuralFeature feature) {
return createLabel(parent, expectedLabelText)
}
} => [initialize]
// the FormToolkit adapts the label using FormColors
// so we check that it is actually adapted
formColors.background.assertEquals(syncExec[|
provider.getLabel(shell, derivedClass.createInstance, testFeature).background
])
}
@Test def void testDefaultLabelUsesCustomText() {
val expectedText = "DerivedClass.derivedClassFeature"
val testFeature = testPackage.derivedClass_DerivedClassFeature
val provider = new FormFeatureCaptionProvider() {
def String text_DerivedClass_derivedClassFeature(EStructuralFeature feature) {
return expectedText
}
} => [initialize]
expectedText.assertEquals(provider.getText(derivedClass.createInstance, testFeature))
expectedText.assertEquals(syncExec[|
provider.getLabel(shell, derivedClass.createInstance, testFeature).text
])
}
@Test def void testBaseClassFeatureInBaseClass() {
val expectedText = "BaseClass.baseClassFeature"
val provider = new FormFeatureCaptionProvider() {
def String text_BaseClass_baseClassFeature(EStructuralFeature feature) {
return expectedText
}
} => [initialize]
expectedText.assertEquals(provider.getText(
baseClass.createInstance, testPackage.baseClass_BaseClassFeature
))
}
@Test def void testBaseClassFeatureInDerivedClass() {
val expectedText = "BaseClass.baseClassFeature"
val provider = new FormFeatureCaptionProvider() {
def String text_BaseClass_baseClassFeature(EStructuralFeature feature) {
return expectedText
}
} => [initialize]
expectedText.assertEquals(provider.getText(
derivedClass.createInstance, testPackage.baseClass_BaseClassFeature
))
}
def private initialize(FormFeatureCaptionProvider provider) {
syncExecVoid[|
provider.formToolkit = new FormToolkit(display)
]
provider.injectMembers
}
def private createInstance(EClass eClass) {
EcoreUtil.create(eClass)
}
}