blob: 9070e0d4eda193cdb0ef93df100c8d6babc37234 [file] [log] [blame]
/*******************************************************************************
* 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));
}
}