/******************************************************************************* * Copyright (c) 2013, 2014 Ericsson * * 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: * Marc-Andre Laperle - Initial API and implementation *******************************************************************************/ package org.eclipse.tracecompass.tmf.core.tests.event; import static org.junit.Assert.assertEquals; import java.util.Map; import java.util.TimeZone; import org.eclipse.core.runtime.preferences.DefaultScope; import org.eclipse.core.runtime.preferences.IEclipsePreferences; import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.tracecompass.internal.tmf.core.Activator; import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimePreferencesConstants; import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimePreferences; import org.junit.Test; import org.osgi.service.prefs.BackingStoreException; /** * Test suite for the TmfTimePreferences class. */ public class TmfTimePreferencesTest { private static final String TIME_PATTERN = "HH:mm:ss.SSS SSS SSS"; private static final String INTERVAL_PATTERN = "TTT.SSS SSS SSS"; /** * Test that the preferences get initialized to the default */ @Test public void testInit() { assertEquals(DefaultScope.INSTANCE.getNode(Activator.PLUGIN_ID).get(ITmfTimePreferencesConstants.DATIME, null), ITmfTimePreferencesConstants.TIME_HOUR_FMT); } /** * Test that getTimePattern returns the appropriate time pattern (from the default) */ @Test public void testGetTimePattern() { assertEquals(TIME_PATTERN, TmfTimePreferences.getTimePattern()); } /** * Test that getIntervalPattern returns the appropriate interval pattern (from the default) */ @Test public void testGetIntervalPattern() { assertEquals(INTERVAL_PATTERN, TmfTimePreferences.getIntervalPattern()); } /** * Test that getTimeZone returns the appropriate time zone (from the default) */ @Test public void testGetTimeZone() { assertEquals(TimeZone.getDefault(), TmfTimePreferences.getTimeZone()); } /** * Test that getPreferenceMap returns the appropriate map even after preferences get modified * and make sure it doesn't affect the defaults */ @Test public void testGetPreferenceMap() { Map<String, String> defaultPreferenceMap = TmfTimePreferences.getDefaultPreferenceMap(); assertEquals(ITmfTimePreferencesConstants.TIME_HOUR_FMT, defaultPreferenceMap.get(ITmfTimePreferencesConstants.DATIME)); // Modify the preferences String testValue = ITmfTimePreferencesConstants.TIME_HOUR_FMT + "foo"; IEclipsePreferences node = InstanceScope.INSTANCE.getNode(Activator.PLUGIN_ID); node.put(ITmfTimePreferencesConstants.DATIME, testValue); try { node.flush(); } catch (BackingStoreException e) { } // Make sure the modification is in the map Map<String, String> preferenceMap = TmfTimePreferences.getPreferenceMap(); assertEquals(testValue, preferenceMap.get(ITmfTimePreferencesConstants.DATIME)); // Make sure the default is still the same defaultPreferenceMap = TmfTimePreferences.getDefaultPreferenceMap(); assertEquals(ITmfTimePreferencesConstants.TIME_HOUR_FMT, defaultPreferenceMap.get(ITmfTimePreferencesConstants.DATIME)); } /** * Test that computeTimePattern computes the appropriate time pattern from a preference map (from the default) */ @Test public void testComputeTimePattern() { assertEquals(TIME_PATTERN, TmfTimePreferences.computeTimePattern(TmfTimePreferences.getPreferenceMap())); } }