JUnit tests for CachedLabelProvider

Change-Id: Icb818f86b1c94283491dc5537a8be522b75e9eef
diff --git a/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/CachedLabelProviderTest.xtend b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/CachedLabelProviderTest.xtend
new file mode 100644
index 0000000..d43df9a
--- /dev/null
+++ b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/CachedLabelProviderTest.xtend
@@ -0,0 +1,71 @@
+/*******************************************************************************
+ * 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.parsley.composite.CachedLabelProvider
+import org.eclipse.jface.viewers.ILabelProvider
+import org.eclipse.jface.viewers.ILabelProviderListener
+import org.junit.After
+import org.junit.Before
+import org.junit.Test
+
+import static org.mockito.Matchers.*
+import static org.mockito.Mockito.*
+
+import static extension org.junit.Assert.*
+
+class CachedLabelProviderTest extends AbstractImageBasedTest {
+
+	var CachedLabelProvider labelProvider
+	var ILabelProvider delegate
+	val final TEST_VAL = "TEST"
+
+	@Before
+	def void setupLabelProvider() {
+		delegate = mock(ILabelProvider)
+		when(delegate.getText(anyObject)).thenReturn(TEST_VAL)
+		labelProvider = new CachedLabelProvider(delegate)
+	}
+
+	@After
+	def void disposeLabelProvider() {
+		labelProvider.dispose
+	}
+
+	@Test
+	def void testGetText() {
+		TEST_VAL.assertEquals(labelProvider.getText(classForControlsInstance))
+		TEST_VAL.assertEquals(labelProvider.getText(classForControlsInstance))
+		verify(delegate, times(1)).getText(anyObject)
+	}
+
+	@Test
+	def void testGetImage() {
+		assertNull(labelProvider.getImage(classForControlsInstance))
+		assertNull(labelProvider.getImage(classForControlsInstance))
+		verify(delegate, times(1)).getImage(anyObject)
+	}
+
+	@Test
+	def void testIsValueProperty() {
+		assertFalse(labelProvider.isLabelProperty(classForControlsInstance, "foo"))
+		verify(delegate, times(1)).isLabelProperty(classForControlsInstance, "foo")
+	}
+
+	@Test
+	def void testListeners() {
+		val listener = mock(ILabelProviderListener)
+		labelProvider.addListener(listener)
+		labelProvider.removeListener(listener)
+		verify(delegate, times(1)).addListener(listener)
+		verify(delegate, times(1)).removeListener(listener)
+	}
+}
diff --git a/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/ViewerLabelProviderTest.xtend b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/ViewerLabelProviderTest.xtend
index 24adcb9..37385f0 100644
--- a/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/ViewerLabelProviderTest.xtend
+++ b/tests/org.eclipse.emf.parsley.tests/src/org/eclipse/emf/parsley/tests/ViewerLabelProviderTest.xtend
@@ -25,6 +25,10 @@
 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
@@ -34,6 +38,11 @@
 		labelProvider = getOrCreateInjector.getInstance(ViewerLabelProvider)
 	}
 
+	@After
+	def void disposeLabelProvider() {
+		labelProvider.dispose
+	}
+
 	@Test
 	def void testGetTextNull() {
 		"".assertEquals(labelProvider.getText(null))
@@ -262,6 +271,13 @@
 		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) {