Package gov.nasa.arc.mct.gui.menu

Source Code of gov.nasa.arc.mct.gui.menu.TestStandardHousingMenuBar

/*******************************************************************************
* 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.gui.menu;

import gov.nasa.arc.mct.component.MockComponent;
import gov.nasa.arc.mct.components.AbstractComponent;
import gov.nasa.arc.mct.context.GlobalContext;
import gov.nasa.arc.mct.defaults.view.MCTHousingViewManifestation;
import gov.nasa.arc.mct.gui.ContextAwareMenu;
import gov.nasa.arc.mct.gui.MenuItemInfo;
import gov.nasa.arc.mct.gui.MenuSection;
import gov.nasa.arc.mct.gui.View;
import gov.nasa.arc.mct.gui.housing.MCTHousingFactory;
import gov.nasa.arc.mct.gui.housing.MCTStandardHousing;
import gov.nasa.arc.mct.gui.impl.ActionContextImpl;
import gov.nasa.arc.mct.gui.impl.ActionManager;
import gov.nasa.arc.mct.gui.menu.housing.ConveniencesMenu;
import gov.nasa.arc.mct.gui.menu.housing.EditMenu;
import gov.nasa.arc.mct.gui.menu.housing.HelpMenu;
import gov.nasa.arc.mct.gui.menu.housing.ObjectsMenu;
import gov.nasa.arc.mct.gui.menu.housing.ThisMenu;
import gov.nasa.arc.mct.gui.menu.housing.ViewMenu;
import gov.nasa.arc.mct.gui.menu.housing.WindowsMenu;
import gov.nasa.arc.mct.gui.util.TestSetupUtilities;
import gov.nasa.arc.mct.platform.spi.Platform;
import gov.nasa.arc.mct.platform.spi.PlatformAccess;
import gov.nasa.arc.mct.services.component.ViewInfo;
import gov.nasa.arc.mct.services.component.ViewType;
import gov.nasa.arc.mct.services.internal.component.ComponentInitializer;
import gov.nasa.arc.mct.services.internal.component.User;

import java.awt.GraphicsEnvironment;
import java.util.List;

import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;


public class TestStandardHousingMenuBar {

    private AbstractComponent componentA;
    private AbstractComponent componentB;
    private AbstractComponent componentC;
    @Mock private Platform mockPlatform;
    @Mock private AbstractComponent rootComponent;
   
    @BeforeMethod
    protected void setup() {
        MockitoAnnotations.initMocks(this);
        GlobalContext.getGlobalContext().switchUser(new User() {

            @Override
            public String getUserId() {
                return "abc";
            }

            @Override
            public String getDisciplineId() {
                // TODO Auto-generated method stub
                return null;
            }

            @Override
            public User getValidUser(String userID) {
                // TODO Auto-generated method stub
                return null;
            }
           
        }, null);
        if (GraphicsEnvironment.isHeadless()) {
            return;
        }
        TestSetupUtilities.setupForMockPolicyManager();
        TestSetupUtilities.setupForMenuBar();
       
        componentA = new MockComposite();
        componentA.getCapability(ComponentInitializer.class).initialize();

       
        componentB = new MockComposite();
        componentB.getCapability(ComponentInitializer.class).initialize();

       
        componentC = new MockComponent();
        componentC.getCapability(ComponentInitializer.class).initialize();

        // Register menus in the menubar
        ActionManager.registerMenu(ThisMenu.class, "THIS_MENU");
        ActionManager.registerMenu(ObjectsMenu.class, "OBJECTS_MENU");
        ActionManager.registerMenu(ViewMenu.class, "VIEW_MENU");
        ActionManager.registerMenu(WindowsMenu.class, "WINDOWS_MENU");
        ActionManager.registerMenu(ConveniencesMenu.class, "CONVENIENCES_MENU");
        ActionManager.registerMenu(HelpMenu.class, "HELP_MENU");
        new PlatformAccess().setPlatform(mockPlatform);
        Mockito.when(mockPlatform.getRootComponent()).thenReturn(rootComponent);
    }
   
    @AfterMethod
    protected void teardown() {
        new PlatformAccess().setPlatform(null);
    }
   
    @Test
    public void testThisMenuNameProperty() {
        // Check that default is "This"
        Assert.assertEquals(new ThisMenu().getText(), "This");
        // Check that property mct.menu.this overrides default
        System.setProperty("mct.menu.this", "That");
        Assert.assertEquals(new ThisMenu().getText(), "That");
        // Check that cleared property still shows default
        System.clearProperty("mct.menu.this");
        Assert.assertEquals(new ThisMenu().getText(), "This");
    }

    @Test
    public void testThisOrder() {
        ContextAwareMenu thisMenu = new ThisMenu() {
            private static final long serialVersionUID = 1L;
            {
                populate();
            }
        };
        List<MenuSection> menuSections = thisMenu.getMenuSections();
       
        // Should have multiple sections (quit should be in its own)
        Assert.assertTrue(menuSections.size() > 1);
       
        // Quit should be at the bottom of the last section
        MenuSection lastSection = menuSections.get(menuSections.size() - 1);
        List<MenuItemInfo> infos = lastSection.getMenuItemInfoList();
        MenuItemInfo lastMenuItem = infos.get(infos.size() - 1);
        Assert.assertTrue(lastMenuItem.getCommandKey().equals("QUIT_ACTION"));
    }
   
    @Test(expectedExceptions = IllegalStateException.class)
    public void testNullHousing() {
        if (GraphicsEnvironment.isHeadless()) {
            return;
        }

        new MCTStandardHousingMenuBar(null);
    }

    @Test
    public void testActiveHousingComponentNullPermission() {
        if (GraphicsEnvironment.isHeadless()) {
            return;
        }
       
        MockHousing housing = new MockHousing(0, 0, 0, MCTHousingFactory.DIRECTORY_AREA_ENABLE, new MCTHousingViewManifestation(componentA,new ViewInfo(MCTHousingViewManifestation.class,"",ViewType.LAYOUT)));
        MCTStandardHousingMenuBar standardMenuBar = new MCTStandardHousingMenuBar(housing);
        Assert.assertEquals(standardMenuBar.getMenuCount(), 6);

        for (int i = 0; i < standardMenuBar.getMenuCount(); i++) {
            Assert.assertFalse(standardMenuBar.getMenu(i) instanceof EditMenu);
        }

    }

    @Test
    public void testActiveHousingComponentRWPermission() {
        if (GraphicsEnvironment.isHeadless()) {
            return;
        }
       
        MockHousing housing = new MockHousing(0, 0, 0, MCTHousingFactory.DIRECTORY_AREA_ENABLE, new MCTHousingViewManifestation(componentB,new ViewInfo(MCTHousingViewManifestation.class,"",ViewType.LAYOUT)));
        MCTStandardHousingMenuBar standardMenuBar = new MCTStandardHousingMenuBar(housing);
        Assert.assertEquals(standardMenuBar.getMenuCount(), 6);

        for (int i = 0; i < standardMenuBar.getMenuCount(); i++) {
            Assert.assertFalse(standardMenuBar.getMenu(i) instanceof EditMenu);
        }

        ActionContextImpl context = new ActionContextImpl();
        context.setTargetHousing(housing);
        context.addTargetViewComponent(housing.getHousedViewManifestation());
        List<ContextAwareMenu> userObjectMenus = standardMenuBar.getUserObjectMenus(context);
        Assert.assertEquals(userObjectMenus.size(), 1);
        Assert.assertTrue(userObjectMenus.get(0) instanceof ObjectsMenu);
       
    }

    @Test
    public void testActiveHousingComponent() {
        if (GraphicsEnvironment.isHeadless()) {
            return;
        }

        MockHousing housing = new MockHousing(0, 0, 0, MCTHousingFactory.CONTENT_AREA_ENABLE, new MCTHousingViewManifestation(componentC,new ViewInfo(MCTHousingViewManifestation.class,"",ViewType.LAYOUT)));
        MCTStandardHousingMenuBar standardMenuBar = new MCTStandardHousingMenuBar(housing);
        Assert.assertEquals(standardMenuBar.getMenuCount(), 6);

        ActionContextImpl context = new ActionContextImpl();
        context.setTargetHousing(housing);
        context.addTargetViewComponent(housing.getHousedViewManifestation());
        List<ContextAwareMenu> userObjectMenus = standardMenuBar.getUserObjectMenus(context);
        Assert.assertEquals(userObjectMenus.size(), 1);
        Assert.assertTrue(userObjectMenus.get(0) instanceof ObjectsMenu);
    }
   
    @AfterClass
    public void tearDown() {
        TestSetupUtilities.tearDownMockPolicyManager();
    }

    @SuppressWarnings("serial")
    private class MockHousing extends MCTStandardHousing {

        public MockHousing(int width, int height, int closeAction, byte areaSelection, View housingView) {
            super(width, height, closeAction, housingView);
        }

    }

    private static class MockComposite extends MockComponent {

        public MockComposite() {
            super();
        }

    }
}
TOP

Related Classes of gov.nasa.arc.mct.gui.menu.TestStandardHousingMenuBar

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.