Package org.jboss.ide.eclipse.freemarker.editor.test

Source Code of org.jboss.ide.eclipse.freemarker.editor.test.FreemarkerEditorTest

package org.jboss.ide.eclipse.freemarker.editor.test;

import junit.framework.TestCase;

import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.text.IFindReplaceTarget;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.swt.widgets.TreeItem;
import org.eclipse.ui.IEditorPart;
import org.jboss.ide.eclipse.freemarker.editor.CompletionProcessor;
import org.jboss.ide.eclipse.freemarker.editor.Editor;
import org.jboss.ide.eclipse.freemarker.editor.FreemarkerMultiPageEditor;
import org.jboss.ide.eclipse.freemarker.model.FunctionDirective;
import org.jboss.ide.eclipse.freemarker.model.MacroDirective;
import org.jboss.ide.eclipse.freemarker.outline.OutlineContentProvider;
import org.jboss.ide.eclipse.freemarker.outline.OutlinePage;
import org.jboss.ide.eclipse.freemarker.preferences.Preferences.PreferenceKey;
import org.jboss.ide.eclipse.freemarker.test.Activator;
import org.jboss.tools.test.util.ResourcesUtils;
import org.jboss.tools.test.util.WorkbenchUtils;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;

public class FreemarkerEditorTest extends TestCase {

  private static final String MACRO_TXT_FTL = "macro.txt.ftl"; //$NON-NLS-1$
  private static final String EDITPROPERTY_XHTML_FTL = "editproperty.xhtml.ftl"; //$NON-NLS-1$
  private static final String TEST_EDITOR_PROJECT = "testEditor"; //$NON-NLS-1$

  @Override
  protected void setUp() throws Exception {
    ResourcesUtils.importProject(Activator.PLUGIN_ID,"projects/"+TEST_EDITOR_PROJECT); //$NON-NLS-1$
  }

  @Override
  protected void tearDown() throws Exception {
    ResourcesUtils.deleteProject(TEST_EDITOR_PROJECT);
  }

  public void testFreemarkerEditorIsOpened() {
    IEditorPart part = WorkbenchUtils.openEditor(TEST_EDITOR_PROJECT + IPath.SEPARATOR + EDITPROPERTY_XHTML_FTL);
    assertTrue(part instanceof FreemarkerMultiPageEditor);
  }

  public void testFreemarkerContentAssistIsShowed() {
    IEditorPart part = WorkbenchUtils.openEditor(TEST_EDITOR_PROJECT + IPath.SEPARATOR + EDITPROPERTY_XHTML_FTL);
    assertTrue(part instanceof FreemarkerMultiPageEditor);
    FreemarkerMultiPageEditor editor = (FreemarkerMultiPageEditor)part;
    CompletionProcessor proc = new CompletionProcessor(editor.getEditor());
    IFindReplaceTarget find = (IFindReplaceTarget)editor.getAdapter(IFindReplaceTarget.class);
    int pos = find.findAndSelect(0, "<#", true, false, false); //$NON-NLS-1$
    ICompletionProposal[] proposals = proc.computeCompletionProposals(editor.getEditor().getTextViewer(),pos+2);
    assertTrue(proposals.length>0);

    pos = find.findAndSelect(0, "label(componentProperty.name)", true, false, false); //$NON-NLS-1$
    proposals = proc.computeCompletionProposals(editor.getEditor().getTextViewer(),pos);
    assertTrue(proposals.length>0);
  }

  public void testFreemarkerOutline() throws BackingStoreException {

    /* this pref is important for the items.length check to be what we expect */
    Preferences prefs = InstanceScope.INSTANCE.getNode(org.jboss.ide.eclipse.freemarker.Plugin.ID);
    prefs.put(PreferenceKey.OUTLINE_LEVEL_OF_DETAIL.toString(), OutlineContentProvider.OutlineLevelOfDetail.functionAndMacroDefinitions.name());
    prefs.flush();

    IEditorPart part = WorkbenchUtils.openEditor(TEST_EDITOR_PROJECT + IPath.SEPARATOR + MACRO_TXT_FTL);
    assertEquals(FreemarkerMultiPageEditor.class, part.getClass());
    FreemarkerMultiPageEditor multiEditor = (FreemarkerMultiPageEditor) part;
    Editor editor = multiEditor.getEditor();
    editor.reconcileInstantly();
    OutlinePage outline = editor.getOutlinePage();
    TreeItem[] items = outline.getTreeViewer().getTree().getItems();
    assertEquals(4, items.length);
    int i = 0;
    assertEquals(MacroDirective.class, items[i++].getData().getClass());
    assertEquals(FunctionDirective.class, items[i++].getData().getClass());
    assertEquals(MacroDirective.class, items[i++].getData().getClass());
    assertEquals(FunctionDirective.class, items[i++].getData().getClass());
  }

}
TOP

Related Classes of org.jboss.ide.eclipse.freemarker.editor.test.FreemarkerEditorTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.