/******************************************************************************* * Copyright (c) 2011, 2015 Tasktop Technologies. * 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: * Tasktop Technologies - initial API and implementation *******************************************************************************/ package org.eclipse.mylyn.commons.notifications.tests.core; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; import junit.framework.TestCase; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.mylyn.commons.core.CoreUtil; import org.eclipse.mylyn.commons.notifications.core.IFilterable; import org.eclipse.mylyn.commons.notifications.core.NotificationEnvironment; import org.eclipse.mylyn.internal.commons.notifications.feed.FeedEntry; import org.eclipse.osgi.service.resolver.VersionRange; import org.osgi.framework.Version; /** * @author Steffen Pingel */ public class NotificationEnvironmentTest extends TestCase { private class StubEntry extends FeedEntry implements IAdaptable, IFilterable { private final Map<String, String> map; public StubEntry(Map<String, String> map) { super("eventId"); this.map = map; } @Override public List<String> getFilters(String key) { String value = getFilter(key); if (value != null) { return Collections.singletonList(value); } return Collections.emptyList(); } @Override public String getFilter(String key) { return map.get(key); } @Override public Object getAdapter(@SuppressWarnings("rawtypes") Class adapter) { if (adapter == IFilterable.class) { return this; } return null; } } private NotificationEnvironment environment; Set<String> installedFeatures; @Override protected void setUp() throws Exception { installedFeatures = new HashSet<String>(); System.setProperty("EnvironmentTest", "2"); environment = new NotificationEnvironment() { @Override public Set<String> getInstalledFeatures(IProgressMonitor monitor) { return installedFeatures; } }; } public void testGetRuntimeVersion() { Version runtimeVersion = environment.getRuntimeVersion(); assertTrue("Expected value between 1.5-1.9, got " + runtimeVersion, new VersionRange("[1.5.0,1.9.0)").isIncluded(runtimeVersion)); } public void testGetPlatformVersion() { Version platformVersion = environment.getPlatformVersion(); if (Platform.isRunning()) { assertTrue("Expected value between 3.3-5.0, got " + platformVersion, new VersionRange("[3.3.0,5.0.0)").isIncluded(platformVersion)); } else { assertEquals(Version.emptyVersion, platformVersion); } } public void testGetFrameworkVersion() { Version frameworkVersion = environment.getFrameworkVersion(); if (Platform.isRunning()) { assertTrue("Expected value > 3.6, got " + frameworkVersion, new VersionRange("3.6.0").isIncluded(frameworkVersion)); } else { assertEquals(CoreUtil.getFrameworkVersion(), frameworkVersion); } } public void testMatchesFrameworkVersion() { Map<String, String> values = new HashMap<String, String>(); assertTrue(environment.matches(new StubEntry(values), null)); values.put("frameworkVersion", "[1.0.0,2.0.0)"); assertFalse(environment.matches(new StubEntry(values), null)); values.put("frameworkVersion", "[0.0.0,10.0.0)"); assertTrue(environment.matches(new StubEntry(values), null)); } public void testMatchesRequires() { Map<String, String> values = new HashMap<String, String>(); values.put("requires", "org.eclipse.mylyn"); assertFalse(environment.matches(new StubEntry(values), null)); installedFeatures.add("org.eclipse.mylyn"); assertTrue(environment.matches(new StubEntry(values), null)); } public void testMatchesConflicts() { Map<String, String> values = new HashMap<String, String>(); values.put("conflicts", "org.eclipse.mylyn"); assertTrue(environment.matches(new StubEntry(values), null)); installedFeatures.add("org.eclipse.mylyn"); assertFalse(environment.matches(new StubEntry(values), null)); } public void testMatchesRequiresConflicts() { Map<String, String> values = new HashMap<String, String>(); values.put("requires", "org.eclipse.mylyn"); values.put("conflicts", "org.eclipse.cdt"); assertFalse(environment.matches(new StubEntry(values), null)); installedFeatures.add("org.eclipse.mylyn"); assertTrue(environment.matches(new StubEntry(values), null)); installedFeatures.add("org.eclipse.cdt"); assertFalse(environment.matches(new StubEntry(values), null)); } public void testMatchesFilter() { Map<String, String> values = new HashMap<String, String>(); values.put("filter", "(EnvironmentTest<=1)"); assertFalse(environment.matches(new StubEntry(values), null)); values.put("filter", "(EnvironmentTest=2)"); assertTrue(environment.matches(new StubEntry(values), null)); } }