blob: f4a8eb2a678e8078148488cb853cd08add528bcf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2011 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, "org.eclipse.wst.html.core.htmlsource.source");
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 (this test may fail due to unpredictable timing issues with the test workbench)", 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());
}
}