/* * Copyright 2016 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.preferences; import static com.google.common.collect.Lists.newArrayList; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verifyZeroInteractions; import java.util.List; import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.jface.preference.IntegerFieldEditor; import org.eclipse.ui.IWorkbench; import org.junit.Rule; import org.junit.Test; import org.robotframework.ide.eclipse.main.plugin.RedPreferences; import org.robotframework.red.junit.ShellProvider; public class FoldingPreferencePageTest { @Rule public ShellProvider shellProvider = new ShellProvider(); @Test public void initDoesNothing() { final IWorkbench workbench = mock(IWorkbench.class); final FoldingPreferencePage page = new FoldingPreferencePage(); page.init(workbench); verifyZeroInteractions(workbench); } @Test public void thereAreBooleanEditorsForEachFoldableElementAndIntegerEditorForLinespan() throws Exception { final FoldingPreferencePage page = new FoldingPreferencePage(); page.createControl(shellProvider.getShell()); final List<String> booleanPrefNames = newArrayList(RedPreferences.FOLDABLE_SECTIONS, RedPreferences.FOLDABLE_CASES, RedPreferences.FOLDABLE_KEYWORDS, RedPreferences.FOLDABLE_DOCUMENTATION); final List<FieldEditor> editors = FieldEditorPreferencePageHelper.getEditors(page); assertThat(editors).hasSize(5); for (final FieldEditor editor : editors) { if (editor instanceof BooleanFieldEditor) { booleanPrefNames.remove(editor.getPreferenceName()); } else if (editor instanceof IntegerFieldEditor) { final IntegerFieldEditor lineLimitEditor = (IntegerFieldEditor) editor; assertThat(lineLimitEditor.getPreferenceName()).isEqualTo(RedPreferences.FOLDING_LINE_LIMIT); } } assertThat(booleanPrefNames).isEmpty(); } }