blob: a9794b87021eeab2b91a3fc98b45ab836a6532e9 [file] [log] [blame]
// Copyright 2015 Google Inc. All Rights Reserved.
//
// 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.
#include "cobalt/dom/keyboard_event.h"
#include "cobalt/base/tokens.h"
#include "cobalt/dom/keycode.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace cobalt {
namespace dom {
TEST(KeyboardEventTest, ShouldHaveBubblesAndCancelableSet) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_TRUE(keyboard_event->bubbles());
EXPECT_TRUE(keyboard_event->cancelable());
}
TEST(KeyboardEventTest, CanGetKeyLocation) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_EQ(keyboard_event->key_location(),
KeyboardEvent::kDomKeyLocationStandard);
scoped_refptr<KeyboardEvent> keyboard_event_l = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationLeft,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_EQ(keyboard_event_l->key_location(),
KeyboardEvent::kDomKeyLocationLeft);
scoped_refptr<KeyboardEvent> keyboard_event_r = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationRight,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_EQ(keyboard_event_r->key_location(),
KeyboardEvent::kDomKeyLocationRight);
}
TEST(KeyboardEventTest, CanGetKeyIdentifier) {
scoped_refptr<KeyboardEvent> keyboard_event_a = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, keycode::kA, 0, false);
EXPECT_EQ(keyboard_event_a->key_identifier(), "a");
scoped_refptr<KeyboardEvent> keyboard_event_ca = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kCtrlKey, keycode::kA, 0, false);
EXPECT_EQ(keyboard_event_ca->key_identifier(), "a");
scoped_refptr<KeyboardEvent> keyboard_event_sa = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kShiftKey, keycode::kA, 0, false);
EXPECT_EQ(keyboard_event_sa->key_identifier(), "A");
scoped_refptr<KeyboardEvent> keyboard_event_1 = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, keycode::k1, 0, false);
EXPECT_EQ(keyboard_event_1->key_identifier(), "1");
scoped_refptr<KeyboardEvent> keyboard_event_s1 = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kShiftKey, keycode::k1, 0, false);
EXPECT_EQ(keyboard_event_s1->key_identifier(), "!");
scoped_refptr<KeyboardEvent> keyboard_event_left = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, keycode::kLeft, 0, false);
EXPECT_EQ(keyboard_event_left->key_identifier(), "ArrowLeft");
scoped_refptr<KeyboardEvent> keyboard_event_sleft = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kShiftKey, keycode::kLeft, 0, false);
EXPECT_EQ(keyboard_event_sleft->key_identifier(), "ArrowLeft");
}
TEST(KeyboardEventTest, CanGetAltKey) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->alt_key());
scoped_refptr<KeyboardEvent> keyboard_event_a = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kAltKey, 0, 0, false);
EXPECT_TRUE(keyboard_event_a->alt_key());
}
TEST(KeyboardEventTest, CanGetCtrlKey) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->ctrl_key());
scoped_refptr<KeyboardEvent> keyboard_event_c = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kCtrlKey, 0, 0, false);
EXPECT_TRUE(keyboard_event_c->ctrl_key());
}
TEST(KeyboardEventTest, CanGetMetaKey) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->meta_key());
scoped_refptr<KeyboardEvent> keyboard_event_m = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kMetaKey, 0, 0, false);
EXPECT_TRUE(keyboard_event_m->meta_key());
}
TEST(KeyboardEventTest, CanGetShiftKey) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->shift_key());
scoped_refptr<KeyboardEvent> keyboard_event_s = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kShiftKey, 0, 0, false);
EXPECT_TRUE(keyboard_event_s->shift_key());
}
TEST(KeyboardEventTest, CanGetModifierState) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->GetModifierState("Alt"));
EXPECT_FALSE(keyboard_event->GetModifierState("Control"));
EXPECT_FALSE(keyboard_event->GetModifierState("Meta"));
EXPECT_FALSE(keyboard_event->GetModifierState("Shift"));
scoped_refptr<KeyboardEvent> keyboard_event_m = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kAltKey | KeyboardEvent::kCtrlKey |
KeyboardEvent::kMetaKey | KeyboardEvent::kShiftKey,
0, 0, false);
EXPECT_TRUE(keyboard_event_m->GetModifierState("Alt"));
EXPECT_TRUE(keyboard_event_m->GetModifierState("Control"));
EXPECT_TRUE(keyboard_event_m->GetModifierState("Meta"));
EXPECT_TRUE(keyboard_event_m->GetModifierState("Shift"));
}
TEST(KeyboardEventTest, CanGetRepeat) {
scoped_refptr<KeyboardEvent> keyboard_event = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kNoModifier, 0, 0, false);
EXPECT_FALSE(keyboard_event->repeat());
scoped_refptr<KeyboardEvent> keyboard_event_r = new KeyboardEvent(
KeyboardEvent::kTypeKeyDown, KeyboardEvent::kDomKeyLocationStandard,
KeyboardEvent::kShiftKey, 0, 0, true);
EXPECT_TRUE(keyboard_event_r->repeat());
}
} // namespace dom
} // namespace cobalt