Added
Link Here
|
1 |
/******************************************************************************* |
2 |
* Copyright (c) 2000, 2013 IBM Corporation and others. |
3 |
* All rights reserved. This program and the accompanying materials |
4 |
* are made available under the terms of the Eclipse Public License v1.0 |
5 |
* which accompanies this distribution, and is available at |
6 |
* http://www.eclipse.org/legal/epl-v10.html |
7 |
* |
8 |
* Contributors: |
9 |
* IBM Corporation - initial API and implementation |
10 |
*******************************************************************************/ |
11 |
package org.eclipse.jdt.ui.tests.packageview; |
12 |
|
13 |
import java.io.ByteArrayInputStream; |
14 |
|
15 |
import junit.framework.Test; |
16 |
import junit.framework.TestCase; |
17 |
import junit.framework.TestSuite; |
18 |
|
19 |
import org.eclipse.jdt.testplugin.JavaProjectHelper; |
20 |
|
21 |
import org.eclipse.core.resources.IFile; |
22 |
import org.eclipse.core.resources.IFolder; |
23 |
import org.eclipse.core.resources.IWorkspace; |
24 |
import org.eclipse.core.resources.IWorkspaceDescription; |
25 |
import org.eclipse.core.resources.ResourcesPlugin; |
26 |
|
27 |
import org.eclipse.jface.viewers.ITreeContentProvider; |
28 |
|
29 |
import org.eclipse.ui.IViewPart; |
30 |
import org.eclipse.ui.IWorkbench; |
31 |
import org.eclipse.ui.IWorkbenchPage; |
32 |
import org.eclipse.ui.PlatformUI; |
33 |
|
34 |
import org.eclipse.jdt.core.ElementChangedEvent; |
35 |
import org.eclipse.jdt.core.IElementChangedListener; |
36 |
import org.eclipse.jdt.core.IJavaProject; |
37 |
import org.eclipse.jdt.core.IPackageFragmentRoot; |
38 |
import org.eclipse.jdt.core.JavaCore; |
39 |
|
40 |
import org.eclipse.jdt.internal.core.JavaElementDelta; |
41 |
|
42 |
import org.eclipse.jdt.internal.ui.packageview.LibraryContainer; |
43 |
import org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider; |
44 |
import org.eclipse.jdt.internal.ui.util.CoreUtility; |
45 |
|
46 |
|
47 |
/** |
48 |
* Tests for the PackageExplorerContentProvider. |
49 |
* <ul> |
50 |
* <li>Bug 357450: Class folder in Java project have refresh problem</li> |
51 |
* </ul> |
52 |
* |
53 |
* @since 3.9 |
54 |
*/ |
55 |
public class ContentProviderTests6 extends TestCase { |
56 |
private IWorkspace fWorkspace; |
57 |
private boolean fEnableAutoBuildAfterTesting; |
58 |
|
59 |
private IWorkbench fWorkbench; |
60 |
private IWorkbenchPage page; |
61 |
private MockPluginView fMyPart; |
62 |
|
63 |
private ITreeContentProvider fProvider; |
64 |
|
65 |
private IJavaProject fJProject; |
66 |
private IPackageFragmentRoot classFolder; |
67 |
|
68 |
|
69 |
public ContentProviderTests6(String name) { |
70 |
super(name); |
71 |
} |
72 |
|
73 |
public static Test suite() { |
74 |
TestSuite suite= new TestSuite("org.eclipse.jdt.ui.tests.ContentProviderTests6"); //$NON-NLS-1$ |
75 |
//$JUnit-BEGIN$ |
76 |
suite.addTestSuite(ContentProviderTests6.class); |
77 |
//$JUnit-END$ |
78 |
return suite; |
79 |
} |
80 |
|
81 |
public void testAddFileToClassFolder() throws Exception { |
82 |
IFile file= ((IFolder)classFolder.getResource()).getFile("testFile.class"); //$NON-NLS-1$ |
83 |
if (!file.exists()) { |
84 |
file.create(new ByteArrayInputStream(new byte[] {}), false, null); |
85 |
} |
86 |
|
87 |
//send a delta indicating file added |
88 |
JavaElementDelta delta= new JavaElementDelta(classFolder.getJavaModel()); |
89 |
delta.added(JavaCore.create(file)); |
90 |
IElementChangedListener listener= (IElementChangedListener)fProvider; |
91 |
listener.elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); |
92 |
|
93 |
//force events from display |
94 |
while (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
95 |
} |
96 |
|
97 |
assertTrue("No add happened", !fMyPart.hasAddHappened()); //$NON-NLS-1$ |
98 |
assertions(); |
99 |
} |
100 |
|
101 |
public void testAddFolderToClassFolder() throws Exception { |
102 |
IFolder folder= ((IFolder)classFolder.getResource()).getFolder("testFolder"); //$NON-NLS-1$ |
103 |
if (!folder.exists()) { |
104 |
folder.create(false, true, null); |
105 |
} |
106 |
|
107 |
//send a delta indicating folder added |
108 |
JavaElementDelta delta= new JavaElementDelta(classFolder.getJavaModel()); |
109 |
delta.added(JavaCore.create(folder)); |
110 |
IElementChangedListener listener= (IElementChangedListener)fProvider; |
111 |
listener.elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); |
112 |
|
113 |
//force events from display |
114 |
while (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
115 |
} |
116 |
|
117 |
assertTrue("No add happened", !fMyPart.hasAddHappened()); //$NON-NLS-1$ |
118 |
assertions(); |
119 |
} |
120 |
|
121 |
public void testRemoveFileFromClassFolder() throws Exception { |
122 |
IFile file= ((IFolder)classFolder.getResource()).getFile("testFile.class"); //$NON-NLS-1$ |
123 |
if (!file.exists()) { |
124 |
file.create(new ByteArrayInputStream(new byte[] {}), false, null); |
125 |
} |
126 |
file.delete(false, null); |
127 |
|
128 |
//send a delta indicating file removed |
129 |
JavaElementDelta delta= new JavaElementDelta(classFolder.getJavaModel()); |
130 |
delta.removed(JavaCore.create(file)); |
131 |
IElementChangedListener listener= (IElementChangedListener)fProvider; |
132 |
listener.elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); |
133 |
|
134 |
//force events from display |
135 |
while (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
136 |
} |
137 |
|
138 |
assertTrue("No remove happened", !fMyPart.hasRemoveHappened()); //$NON-NLS-1$ |
139 |
assertions(); |
140 |
} |
141 |
|
142 |
public void testRemoveFolderFromClassFolder() throws Exception { |
143 |
IFolder folder= ((IFolder)classFolder.getResource()).getFolder("testFolder"); //$NON-NLS-1$ |
144 |
if (!folder.exists()) { |
145 |
folder.create(false, true, null); |
146 |
} |
147 |
folder.delete(false, null); |
148 |
|
149 |
//send a delta indicating folder deleted |
150 |
JavaElementDelta delta= new JavaElementDelta(classFolder.getJavaModel()); |
151 |
delta.removed(JavaCore.create(folder)); |
152 |
IElementChangedListener listener= (IElementChangedListener)fProvider; |
153 |
listener.elementChanged(new ElementChangedEvent(delta, ElementChangedEvent.POST_CHANGE)); |
154 |
|
155 |
//force events from display |
156 |
while (fMyPart.getTreeViewer().getControl().getDisplay().readAndDispatch()) { |
157 |
} |
158 |
|
159 |
assertTrue("No remove happened", !fMyPart.hasRemoveHappened()); //$NON-NLS-1$ |
160 |
assertions(); |
161 |
} |
162 |
|
163 |
private void assertions() { |
164 |
assertTrue("Refresh happened", fMyPart.hasRefreshHappened()); //$NON-NLS-1$ |
165 |
assertTrue("LibraryContainer Refreshed", fMyPart.wasObjectRefreshed(new LibraryContainer(fJProject))); //$NON-NLS-1$ |
166 |
assertTrue("Resource Refreshed", fMyPart.wasObjectRefreshed(classFolder.getResource())); //$NON-NLS-1$ |
167 |
assertTrue("Number of refreshed objects", fMyPart.getRefreshedObject().size() == 2); //$NON-NLS-1$ |
168 |
} |
169 |
|
170 |
/* |
171 |
* @see TestCase#setUp() |
172 |
*/ |
173 |
@Override |
174 |
protected void setUp() throws Exception { |
175 |
super.setUp(); |
176 |
|
177 |
fWorkspace= ResourcesPlugin.getWorkspace(); |
178 |
assertNotNull(fWorkspace); |
179 |
IWorkspaceDescription workspaceDesc= fWorkspace.getDescription(); |
180 |
fEnableAutoBuildAfterTesting= workspaceDesc.isAutoBuilding(); |
181 |
if (fEnableAutoBuildAfterTesting) |
182 |
CoreUtility.setAutoBuilding(false); |
183 |
|
184 |
fJProject= JavaProjectHelper.createJavaProject("TestProject", "bin");//$NON-NLS-1$//$NON-NLS-2$ |
185 |
assertNotNull("project null", fJProject);//$NON-NLS-1$ |
186 |
|
187 |
//set up project : Add classFolder |
188 |
classFolder= JavaProjectHelper.addClassFolder(fJProject, "classFolder", null, null); //$NON-NLS-1$ |
189 |
assertNotNull("class folder null", classFolder); //$NON-NLS-1$ |
190 |
|
191 |
//set up the mock view |
192 |
setUpMockView(); |
193 |
} |
194 |
|
195 |
public void setUpMockView() throws Exception{ |
196 |
fWorkbench= PlatformUI.getWorkbench(); |
197 |
assertNotNull(fWorkbench); |
198 |
|
199 |
page= fWorkbench.getActiveWorkbenchWindow().getActivePage(); |
200 |
assertNotNull(page); |
201 |
|
202 |
IViewPart myPart= page.showView("org.eclipse.jdt.ui.tests.packageview.MockPluginView"); //$NON-NLS-1$ |
203 |
if (myPart instanceof MockPluginView) { |
204 |
fMyPart= (MockPluginView)myPart; |
205 |
fMyPart.clear(); |
206 |
fProvider= (ITreeContentProvider)fMyPart.getTreeViewer().getContentProvider(); |
207 |
((PackageExplorerContentProvider)fProvider).setShowLibrariesNode(true); |
208 |
} else { |
209 |
assertTrue("Unable to get view", false);//$NON-NLS-1$ |
210 |
} |
211 |
assertNotNull(fProvider); |
212 |
} |
213 |
|
214 |
/** |
215 |
* @see TestCase#tearDown() |
216 |
*/ |
217 |
@Override |
218 |
protected void tearDown() throws Exception { |
219 |
super.tearDown(); |
220 |
JavaProjectHelper.delete(fJProject); |
221 |
if (fEnableAutoBuildAfterTesting) |
222 |
CoreUtility.setAutoBuilding(true); |
223 |
} |
224 |
} |