/******************************************************************************* * 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.sse.core.tests; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; 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.wst.sse.core.StructuredModelManager; import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel; public class TestUnsupportedContentType extends TestCase { /** * Creates a simple project. * * @param name * - the name of the project * @return */ static IProject createSimpleProject(String name) { IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(name); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(name); try { if (!project.exists()) project.create(description, new NullProgressMonitor()); if (!project.isAccessible()) project.open(new NullProgressMonitor()); } catch (CoreException e) { e.printStackTrace(); } return project; } /** * Verify that attempting to load a model for an unsupported content type * simply returns null without Exceptions or assertion failures. * * @throws CoreException * @throws IOException */ public void testGetForReadWithUnsupported() throws CoreException { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(getName()); if (!project.isAccessible()) { project = createSimpleProject(getName()); } IFile file = project.getFile("testReadFile.js"); file.create(new ByteArrayInputStream("var n = 0;".getBytes()), true, null); assertTrue("test file not created", file.isAccessible()); try { IStructuredModel model = StructuredModelManager.getModelManager().getModelForRead(file); assertNull("model returned even though expected to silently get null", model); if (model != null) model.releaseFromRead(); } catch (Exception e) { StringWriter out = new StringWriter(); e.printStackTrace(new PrintWriter(out)); fail(out.toString()); } project.delete(true, null); } /** * Verify that attempting to load a model for an unsupported content type * simply returns null without Exceptions or assertion failures. * * @throws CoreException * @throws IOException */ public void testGetForEditWithUnsupported() throws CoreException { IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(getName()); if (!project.isAccessible()) { project = createSimpleProject(getName()); } IFile file = project.getFile("testEditFile.js"); file.create(new ByteArrayInputStream("var n = 0;".getBytes()), true, null); assertTrue("test file not created", file.isAccessible()); try { IStructuredModel model = StructuredModelManager.getModelManager().getModelForEdit(file); assertNull("model returned even though expected to silently get null", model); if (model != null) model.releaseFromRead(); } catch (Exception e) { StringWriter out = new StringWriter(); e.printStackTrace(new PrintWriter(out)); fail(out.toString()); } project.delete(true, null); } }