109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal/*
209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * Copyright (C) 2016 The Android Open Source Project
309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal *
409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * Licensed under the Apache License, Version 2.0 (the "License");
509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * you may not use this file except in compliance with the License.
609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * You may obtain a copy of the License at
709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal *
809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal *      http://www.apache.org/licenses/LICENSE-2.0
909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal *
1009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * Unless required by applicable law or agreed to in writing, software
1109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * distributed under the License is distributed on an "AS IS" BASIS,
1209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * See the License for the specific language governing permissions and
1409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * limitations under the License.
1509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal */
16ac5fe7c617c66850fff75a9fce9979c6e5674b0fAurimas Liutikaspackage androidx.appcompat.view;
1709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
1809231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport static org.junit.Assert.assertEquals;
1909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
2009231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.support.test.filters.SmallTest;
2109231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.support.test.rule.ActivityTestRule;
2209231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.support.test.runner.AndroidJUnit4;
2309231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.view.KeyEvent;
2409231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.view.Menu;
2509231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport android.view.MenuInflater;
2609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
273de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport androidx.appcompat.test.R;
283de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport androidx.appcompat.widget.PopupMenu;
293de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikasimport androidx.core.internal.view.SupportMenuItem;
303de8a4e8305507475d7890205184946a25cf45e7Aurimas Liutikas
3109231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport org.junit.Before;
3209231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport org.junit.Rule;
3309231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport org.junit.Test;
3409231da6d922e91d30d06876521106f13230a791Peeyush Agarwalimport org.junit.runner.RunWith;
3509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
3609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal/**
3709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal * Test SupportMenuInflater
3809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal */
3909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal@SmallTest
4009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal@RunWith(AndroidJUnit4.class)
4109231da6d922e91d30d06876521106f13230a791Peeyush Agarwalpublic class SupportMenuInflaterTest {
4209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
4309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    private SupportMenuInflaterTestActivity mActivity;
4409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    private MenuInflater mMenuInflater;
4509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    private Menu mMenu;
4609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
4709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    @Rule
4809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    public ActivityTestRule<SupportMenuInflaterTestActivity> mActivityTestRule =
4909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal            new ActivityTestRule<>(SupportMenuInflaterTestActivity.class);
5009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
5109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    @Before
5209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    public void setup() {
5309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mActivity = mActivityTestRule.getActivity();
5409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuInflater = mActivity.getMenuInflater();
5509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenu = new PopupMenu(mActivity, null).getMenu();
5609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    }
5709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
5809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    @Test
5909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    public void testInflateFromXml() {
6009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuInflater.inflate(R.menu.shortcut, mMenu);
6109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        SupportMenuItem mMenuItem;
6209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
6309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuItem = (SupportMenuItem) mMenu.findItem(R.id.no_modifiers);
6409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('a', mMenuItem.getAlphabeticShortcut());
6509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON, mMenuItem.getAlphabeticModifiers());
6609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('1', mMenuItem.getNumericShortcut());
6709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON, mMenuItem.getNumericModifiers());
6809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
6909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuItem = (SupportMenuItem) mMenu.findItem(R.id.default_modifiers);
7009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('b', mMenuItem.getAlphabeticShortcut());
7109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON, mMenuItem.getAlphabeticModifiers());
7209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('2', mMenuItem.getNumericShortcut());
7309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON, mMenuItem.getNumericModifiers());
7409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
7509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuItem = (SupportMenuItem) mMenu.findItem(R.id.single_modifier);
7609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('c', mMenuItem.getAlphabeticShortcut());
7709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_SHIFT_ON, mMenuItem.getAlphabeticModifiers());
7809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('3', mMenuItem.getNumericShortcut());
7909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_SHIFT_ON, mMenuItem.getNumericModifiers());
8009231da6d922e91d30d06876521106f13230a791Peeyush Agarwal
8109231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        mMenuItem = (SupportMenuItem) mMenu.findItem(R.id.multiple_modifiers);
8209231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('d', mMenuItem.getAlphabeticShortcut());
8309231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON,
8409231da6d922e91d30d06876521106f13230a791Peeyush Agarwal                mMenuItem.getAlphabeticModifiers());
8509231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals('4', mMenuItem.getNumericShortcut());
8609231da6d922e91d30d06876521106f13230a791Peeyush Agarwal        assertEquals(KeyEvent.META_CTRL_ON | KeyEvent.META_SHIFT_ON,
8709231da6d922e91d30d06876521106f13230a791Peeyush Agarwal                mMenuItem.getNumericModifiers());
8809231da6d922e91d30d06876521106f13230a791Peeyush Agarwal    }
8909231da6d922e91d30d06876521106f13230a791Peeyush Agarwal}
90