/******************************************************************************* * Copyright (c) 2016 Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is 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: * Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.vpe.bot.test.preferences; import static org.junit.Assert.*; import java.util.function.Consumer; import java.util.function.Function; import org.eclipse.jface.preference.IPreferenceStore; import org.jboss.reddeer.workbench.ui.dialogs.WorkbenchPreferenceDialog; import org.jboss.tools.jst.web.ui.WebUiPlugin; import org.jboss.tools.jst.web.ui.internal.editor.preferences.IVpePreferencesPage; import org.jboss.tools.vpe.bot.test.VPETestBase; import org.jboss.tools.vpe.reddeer.preferences.VisualPageEditorPreferencePage; import org.junit.BeforeClass; import org.junit.Test; //add tests for restore defaults button public class VpvPreferencesTest extends VPETestBase{ private static IPreferenceStore preferences; private VisualPageEditorPreferencePage vp = new VisualPageEditorPreferencePage(); @BeforeClass public static void getPreferences() { preferences = WebUiPlugin.getDefault().getPreferenceStore(); createWebProject(); createHTMLPageWithJS(); } @Test public void testEditorSplittingPreferences() { Consumer<String> c = (x) -> vp.setVisualSourceEditorsSplitting(x); Function<String, Integer> f = (x) -> preferences.getInt(x); setPreferenceObj(IVpePreferencesPage.VISUAL_SOURCE_EDITORS_SPLITTING, c, "Vertical splitting with Visual Editor on the top", f, 2); setPreferenceObj(IVpePreferencesPage.VISUAL_SOURCE_EDITORS_SPLITTING, c, "Vertical splitting with Source Editor on the top", f, 1); setPreferenceObj(IVpePreferencesPage.VISUAL_SOURCE_EDITORS_SPLITTING, c, "Horizontal splitting with Visual Editor to the left", f, 4); setPreferenceObj(IVpePreferencesPage.VISUAL_SOURCE_EDITORS_SPLITTING, c, "Horizontal splitting with Source Editor to the left", f, 3); } @Test public void testDefaultEditorTab(){ Consumer<String> c = (x) -> vp.setDefaultActiveEditorTab(x); Function<String, Integer> f = (x) -> preferences.getInt(x); setPreferenceObj(IVpePreferencesPage.DEFAULT_VPE_TAB, c, "Source", f, 1); setPreferenceObj(IVpePreferencesPage.DEFAULT_VPE_TAB, c, "Preview", f, 2); setPreferenceObj(IVpePreferencesPage.DEFAULT_VPE_TAB, c, "Visual/Source", f, 0); } @Test public void testSizeOfPane(){ } @Test public void testSynchonizeScrolling(){ Consumer<Boolean> c = (x) -> vp.toggleSynchronizeScrolling(x); testBoolenPreferences(IVpePreferencesPage.SYNCHRONIZE_SCROLLING_BETWEEN_SOURCE_VISUAL_PANES, c); } @Test public void testAskForTagAttributes(){ Consumer<Boolean> c = (x) -> vp.toggleAskForAttrsDuringTagInsert(x); testBoolenPreferences(IVpePreferencesPage.ASK_TAG_ATTRIBUTES_ON_TAG_INSERT, c); } @Test public void testInformIfProjectIsNotConfiguredProperly(){ Consumer<Boolean> c = (x) -> vp.toggleInformIfProjectIsNotCofiguredProperly(x); testBoolenPreferences(IVpePreferencesPage.INFORM_WHEN_PROJECT_MIGHT_NOT_BE_CONFIGURED_PROPERLY_FOR_VPE, c); } @Test public void testToggleShowResourceBundlesAsELExp(){ Consumer<Boolean> c = (x) -> vp.toggleShowResourceBundlesAsELExp(x); testBoolenPreferences(IVpePreferencesPage.SHOW_RESOURCE_BUNDLES_USAGE_AS_EL, c); } @Test public void testShowTextFormattingBar(){ Consumer<Boolean> c = (x) -> vp.toggleShowTextFormattingBar(x); testBoolenPreferences(IVpePreferencesPage.SHOW_TEXT_FORMATTING, c); } @Test public void testShowSelectionTagBar(){ Consumer<Boolean> c = (x) -> vp.toggleShowSelectionTagBar(x); testBoolenPreferences(IVpePreferencesPage.SHOW_SELECTION_TAG_BAR, c); } @Test public void testShowNonVisualTag(){ Consumer<Boolean> c = (x) -> vp.toggleShowNonVisualTag(x); testBoolenPreferences(IVpePreferencesPage.SHOW_NON_VISUAL_TAGS, c); } @Test public void testShowBorderForUnknownTags(){ Consumer<Boolean> c = (x) -> vp.toggleShowBorderForUnknownTags(x); testBoolenPreferences(IVpePreferencesPage.SHOW_BORDER_FOR_UNKNOWN_TAGS, c); } private void testBoolenPreferences(String preferenceId, Consumer c){ Function<String, Boolean> f = (x) -> preferences.getBoolean(x); setPreferenceObj(preferenceId, c, true, f, true); setPreferenceObj(preferenceId, c, false, f, false); } private void setPreferenceObj(String preferenceId, Consumer c, Object accept, Function pref, Object expected){ WorkbenchPreferenceDialog wd = new WorkbenchPreferenceDialog(); wd.open(); VisualPageEditorPreferencePage vp = new VisualPageEditorPreferencePage(); wd.select(vp); c.accept(accept); wd.ok(); assertEquals(expected, pref.apply(preferenceId)); } }