View | Details | Raw Unified | Return to bug 398076
Collapse All | Expand All

(-)a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/packageview/ContentProviderTests6.java (+224 lines)
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
}
(-)a/org.eclipse.jdt.ui.tests/ui/org/eclipse/jdt/ui/tests/packageview/PackageExplorerTests.java (-1 / +2 lines)
Lines 1-5 Link Here
1
/*******************************************************************************
1
/*******************************************************************************
2
 * Copyright (c) 2000, 2011 IBM Corporation and others.
2
 * Copyright (c) 2000, 2013 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
5
 * which accompanies this distribution, and is available at
Lines 24-29 Link Here
24
		suite.addTest(ContentProviderTests3.suite());
24
		suite.addTest(ContentProviderTests3.suite());
25
		suite.addTest(ContentProviderTests4.suite());
25
		suite.addTest(ContentProviderTests4.suite());
26
		suite.addTest(ContentProviderTests5.suite());
26
		suite.addTest(ContentProviderTests5.suite());
27
		suite.addTest(ContentProviderTests6.suite());
27
		suite.addTest(PackageExplorerShowInTests.suite());
28
		suite.addTest(PackageExplorerShowInTests.suite());
28
		suite.addTestSuite(WorkingSetDropAdapterTest.class);
29
		suite.addTestSuite(WorkingSetDropAdapterTest.class);
29
		suite.addTest(HierarchicalContentProviderTests.suite());
30
		suite.addTest(HierarchicalContentProviderTests.suite());

Return to bug 398076