/******************************************************************************* | |
* Copyright (c) 2009 IBM Corporation 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: | |
* IBM Corporation - initial API and implementation | |
*******************************************************************************/ | |
package org.eclipse.wst.jsdt.web.ui.tests.style; | |
import java.io.ByteArrayInputStream; | |
import junit.framework.TestCase; | |
import org.eclipse.core.resources.IFile; | |
import org.eclipse.core.resources.IProject; | |
import org.eclipse.core.resources.IProjectDescription; | |
import org.eclipse.core.resources.ResourcesPlugin; | |
import org.eclipse.core.runtime.CoreException; | |
import org.eclipse.core.runtime.NullProgressMonitor; | |
import org.eclipse.core.runtime.Path; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.custom.StyleRange; | |
import org.eclipse.swt.custom.StyledText; | |
import org.eclipse.swt.widgets.Control; | |
import org.eclipse.ui.IEditorPart; | |
import org.eclipse.ui.PlatformUI; | |
import org.eclipse.ui.ide.IDE; | |
import org.eclipse.wst.jsdt.core.IJavaScriptProject; | |
import org.eclipse.wst.jsdt.core.JavaScriptCore; | |
import org.eclipse.wst.jsdt.core.LibrarySuperType; | |
import org.eclipse.wst.jsdt.internal.core.JavaProject; | |
import org.eclipse.wst.jsdt.launching.JavaRuntime; | |
import org.eclipse.wst.jsdt.web.core.internal.project.JsWebNature; | |
/** | |
* @author nitin | |
* | |
*/ | |
public class StyleTests extends TestCase { | |
/** | |
* | |
*/ | |
public StyleTests() { | |
super(); | |
} | |
/** | |
* @param name | |
*/ | |
public StyleTests(String name) { | |
super(name); | |
} | |
public void testKeywordStyle() throws CoreException { | |
String projectName = getName(); | |
String fileName = projectName + ".html"; | |
String contents = "<html><head><script> var params = \"someBadString\".substring(1,2,3,4);\nparahnas.shift();</script></head><body> </body></html>"; | |
// Create the JavaScript project | |
IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(projectName); | |
description.setNatureIds(new String[]{JavaScriptCore.NATURE_ID}); | |
IProject iProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); | |
iProject.create(description, new NullProgressMonitor()); | |
iProject.open(null); | |
// Setup the JavaScript project with Web support | |
IJavaScriptProject project = JavaScriptCore.create(iProject); | |
project.setRawIncludepath(null, new NullProgressMonitor()); | |
LibrarySuperType superType = new LibrarySuperType(new Path(JavaRuntime.DEFAULT_SUPER_TYPE_LIBRARY), project, JavaRuntime.DEFAULT_SUPER_TYPE); | |
((JavaProject) project).setCommonSuperType(superType); | |
new JsWebNature(iProject, null).configure(); | |
// create test file | |
IFile file = iProject.getFile(fileName); | |
file.create(new ByteArrayInputStream(contents.getBytes()), true, null); | |
IEditorPart editor = IDE.openEditor(PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(), file); | |
assertNotNull("editor failed to open", editor); | |
Control control = (Control) editor.getAdapter(Control.class); | |
assertNotNull("editor did not return a Control adapter", control); | |
assertTrue("editor Control adapter is not a StyledText widget", control instanceof StyledText); | |
int varIndex = contents.indexOf("var"); | |
StyleRange[] styleRanges = ((StyledText) control).getStyleRanges(varIndex, 3); | |
assertTrue("no style range for 'var' keyword", styleRanges.length > 0); | |
assertNotNull("no foreground color for 'var' keyword", styleRanges[0].foreground); | |
assertNotSame("foreground color has same RGB as black", PlatformUI.getWorkbench().getDisplay().getSystemColor(SWT.COLOR_BLACK).getRGB(), styleRanges[0].foreground.getRGB()); | |
} | |
} |