/******************************************************************************* * Mission Control Technologies, Copyright (c) 2009-2012, United States Government * as represented by the Administrator of the National Aeronautics and Space * Administration. All rights reserved. * * The MCT platform is licensed under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0. * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * * MCT includes source code licensed under additional open source licenses. See * the MCT Open Source Licenses file included with this distribution or the About * MCT Licenses dialog available at runtime from the MCT Help menu for additional * information. *******************************************************************************/ package gov.nasa.arc.mct.graphics.view; import gov.nasa.arc.mct.components.AbstractComponent; import gov.nasa.arc.mct.components.ExtendedProperties; import gov.nasa.arc.mct.evaluator.api.Evaluator; import gov.nasa.arc.mct.graphics.brush.Brush; import gov.nasa.arc.mct.graphics.brush.ConditionalBrush; import gov.nasa.arc.mct.graphics.brush.Fill; import gov.nasa.arc.mct.graphics.brush.Outline; import gov.nasa.arc.mct.services.component.ViewInfo; import gov.nasa.arc.mct.services.component.ViewType; import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; public class GraphicalSettingsTest { private static final String ENUMERATOR_NAME = "Enumerator"; private GraphicalManifestation mockView; private AbstractComponent mockEnumerator; @Mock private AbstractComponent mockComponent; @Mock private ExtendedProperties mockViewProperties; @Mock private Evaluator mockEvaluator; private GraphicalSettings settings; @BeforeMethod public void setup() { MockitoAnnotations.initMocks(this); mockView = new GraphicalManifestation(mockComponent, new ViewInfo(GraphicalManifestation.class,"", ViewType.OBJECT)) { private static final long serialVersionUID = 6036948129496070106L; public ExtendedProperties getViewProperties() { return mockViewProperties; } }; Mockito.when(mockComponent.getCapability(Evaluator.class)).thenReturn(null); Mockito.when(mockComponent.getReferencingComponents()).thenReturn(Collections.<AbstractComponent>emptyList()); Mockito.when(mockEvaluator.getDisplayName()).thenReturn("Phony evaluator"); Mockito.when(mockEvaluator.getLanguage()).thenReturn("enum"); Mockito.when(mockEvaluator.getCode()).thenReturn("= 0 abc\t> 0 xyz"); mockEnumerator = new AbstractComponent() { @SuppressWarnings("unchecked") @Override protected <T> T handleGetCapability(Class<T> capability) { if (capability.isAssignableFrom(mockEvaluator.getClass())) return (T) mockEvaluator; else return null; } }; mockEnumerator.setDisplayName(ENUMERATOR_NAME); settings = new GraphicalSettings(mockView); } @SuppressWarnings("unchecked") /* Unchecked is suppressing so we can mock view properties */ @Test public void testDefaults() { Mockito.when(mockViewProperties.getProperty(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(null); Assert.assertEquals(settings.getSetting(GraphicalSettings.GRAPHICAL_BACKGROUND_COLOR), settings.getNamedObject(GraphicalSettings.DEFAULT_BACKGROUND_COLOR)); Assert.assertEquals(settings.getSetting(GraphicalSettings.GRAPHICAL_FOREGROUND_COLOR), settings.getNamedObject(GraphicalSettings.DEFAULT_FOREGROUND_COLOR)); Assert.assertEquals(settings.getSetting(GraphicalSettings.GRAPHICAL_FOREGROUND_FILL), settings.getNamedObject(GraphicalSettings.DEFAULT_FOREGROUND_FILL)); Assert.assertEquals(settings.getSetting(GraphicalSettings.GRAPHICAL_OUTLINE_COLOR), settings.getNamedObject(GraphicalSettings.DEFAULT_OUTLINE_COLOR)); Assert.assertEquals(settings.getSetting(GraphicalSettings.GRAPHICAL_SHAPE), settings.getNamedObject(GraphicalSettings.DEFAULT_SHAPE)); } @SuppressWarnings("unchecked") /* Unchecked is suppressing so we can mock view properties */ @Test public void testLayerProduction() { List<Brush> layers; /* Does it produce regular fills? */ Mockito.when(mockViewProperties.getProperty(Mockito.anyString(), Mockito.any(Class.class))).thenReturn(null); layers = settings.getLayers(); Assert.assertEquals(layers.size(), 3); // Background, foreground, outline Assert.assertTrue(layers.get(0) instanceof Fill); Assert.assertTrue(layers.get(1) instanceof Fill); Assert.assertTrue(layers.get(2) instanceof Outline); /* Does it produce evaluator views? */ Mockito.when(mockViewProperties.getProperty(GraphicalSettings.GRAPHICAL_EVALUATOR_MAP, String.class)) .thenReturn("A\tColor1\nB\tColor2\n"); Mockito.when(mockViewProperties.getProperty(GraphicalSettings.GRAPHICAL_EVALUATOR, String.class)) .thenReturn("Mock Evaluator"); layers = settings.getLayers(); Assert.assertEquals(layers.size(), 4); Assert.assertTrue(layers.get(0) instanceof Fill); Assert.assertTrue(layers.get(1) instanceof ConditionalBrush); Assert.assertTrue(layers.get(2) instanceof ConditionalBrush); Assert.assertTrue(layers.get(3) instanceof Outline); } /* Should be able to parse the mock evaluator */ @Test public void testEnumerations() { Assert.assertTrue(settings.getSupportedEnumerations().isEmpty()); Mockito.when(mockComponent.getReferencingComponents()).thenReturn(Collections.<AbstractComponent>singletonList(mockEnumerator)); Mockito.when(mockViewProperties.getProperty(GraphicalSettings.GRAPHICAL_EVALUATOR, String.class)) .thenReturn(ENUMERATOR_NAME); settings = new GraphicalSettings(mockView); Collection<String> enumerations = settings.getSupportedEnumerations(); Assert.assertNotNull(enumerations); Assert.assertEquals(enumerations.size(), 2); Iterator<String> it = enumerations.iterator(); Assert.assertEquals(it.next(), "abc"); Assert.assertEquals(it.next(), "xyz"); } }