/******************************************************************************* * Copyright (c) 2007, 2017 Alphonse Van Assche 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: * Alphonse Van Assche - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.rpm.ui.editor.scanners.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import org.eclipse.jface.resource.ColorRegistry; import org.eclipse.jface.text.TextAttribute; import org.eclipse.jface.text.rules.IToken; import org.eclipse.jface.text.rules.RuleBasedScanner; import org.eclipse.jface.text.rules.Token; import org.eclipse.linuxtools.internal.rpm.ui.editor.Activator; import org.eclipse.linuxtools.internal.rpm.ui.editor.ISpecfileColorConstants; import org.eclipse.linuxtools.internal.rpm.ui.editor.preferences.PreferenceConstants; import org.eclipse.linuxtools.internal.rpm.ui.editor.scanners.SpecfilePackagesScanner; import org.eclipse.linuxtools.rpm.ui.editor.tests.AScannerTest; import org.eclipse.ui.PlatformUI; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; public class SpecfilePackagesScannerTest extends AScannerTest { private IToken token; private TextAttribute ta; private static SpecfilePackagesScanner scanner; private static final String P_RPM_LIST_FILEPATH = "/tmp/pkglist1"; private static ColorRegistry colors; @BeforeClass public static void init() { Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.P_RPM_LIST_FILEPATH, P_RPM_LIST_FILEPATH); Activator.getDefault().getPreferenceStore().setValue(PreferenceConstants.P_RPM_LIST_BACKGROUND_BUILD, false); try (BufferedWriter out = new BufferedWriter(new FileWriter(P_RPM_LIST_FILEPATH))) { out.write("setup\ntest_underscore\n"); out.close(); } catch (IOException e) { fail(e.getMessage()); } // we ensure that proposals are rebuild Activator.packagesList = null; scanner = new SpecfilePackagesScanner(); colors = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry(); } @AfterClass public static void cleanUp() { File file = new File(P_RPM_LIST_FILEPATH); if (file.exists()) { file.delete(); } } @Override protected String getContents() { return "Requires: test_underscore\n%{name}\n# Requires:\n"; } @Override protected RuleBasedScanner getScanner() { return scanner; } @Test public void testPackageTag() { token = getNextToken(); assertTrue(token instanceof Token); assertEquals(9, rulesBasedScanner.getTokenLength()); assertEquals(0, rulesBasedScanner.getTokenOffset()); ta = (TextAttribute) token.getData(); assertEquals(ta.getForeground(), colors.get(ISpecfileColorConstants.TAGS)); } /** * We test a package with a underscore. see bug: * https://bugs.eclipse.org/bugs/show_bug.cgi?id=182302 */ @Test public void testPackage() { token = getToken(2); assertTrue(token instanceof Token); assertEquals(16, rulesBasedScanner.getTokenLength()); assertEquals(9, rulesBasedScanner.getTokenOffset()); ta = (TextAttribute) token.getData(); assertEquals(ta.getForeground(), colors.get(ISpecfileColorConstants.PACKAGES)); } @Test public void testMacro() { token = getToken(4); assertTrue(token instanceof Token); assertEquals(7, rulesBasedScanner.getTokenLength()); assertEquals(26, rulesBasedScanner.getTokenOffset()); ta = (TextAttribute) token.getData(); assertEquals(ta.getForeground(), colors.get(ISpecfileColorConstants.MACROS)); } /** * Check that comments are not handle with the package scanner. See bug: * https://bugs.eclipse.org/bugs/show_bug.cgi?id=182302 */ @Test public void testComment() { token = getToken(6); assertTrue(token instanceof Token); assertEquals(1, rulesBasedScanner.getTokenLength()); ta = (TextAttribute) token.getData(); assertEquals(ta.getForeground(), colors.get(ISpecfileColorConstants.DEFAULT)); } }