| // 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/keyboard_event_init.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("keydown"); |
| EXPECT_TRUE(keyboard_event->bubbles()); |
| EXPECT_TRUE(keyboard_event->cancelable()); |
| } |
| |
| TEST(KeyboardEventTest, CanGetKeyLocation) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event->key_location(), |
| KeyboardEvent::kDomKeyLocationStandard); |
| |
| init.set_location(KeyboardEvent::kDomKeyLocationLeft); |
| scoped_refptr<KeyboardEvent> keyboard_event_l = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_l->key_location(), |
| KeyboardEvent::kDomKeyLocationLeft); |
| |
| init.set_location(KeyboardEvent::kDomKeyLocationRight); |
| scoped_refptr<KeyboardEvent> keyboard_event_r = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_r->key_location(), |
| KeyboardEvent::kDomKeyLocationRight); |
| } |
| |
| TEST(KeyboardEventTest, CanGetKeyIdentifierAndKeyAndCode) { |
| KeyboardEventInit init; |
| init.set_key_code(keycode::kA); |
| scoped_refptr<KeyboardEvent> keyboard_event_a = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_a->key_identifier(), "a"); |
| EXPECT_EQ(keyboard_event_a->key(), "a"); |
| EXPECT_EQ(keyboard_event_a->code(), "KeyA"); |
| |
| init.set_key_code(keycode::kA); |
| init.set_ctrl_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_ca = |
| new KeyboardEvent("keydown", init); |
| init.set_ctrl_key(false); |
| EXPECT_EQ(keyboard_event_ca->key_identifier(), "a"); |
| EXPECT_EQ(keyboard_event_ca->key(), "a"); |
| EXPECT_EQ(keyboard_event_ca->code(), "KeyA"); |
| |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_sa = |
| new KeyboardEvent("keydown", init); |
| init.set_shift_key(false); |
| EXPECT_EQ(keyboard_event_sa->key_identifier(), "A"); |
| EXPECT_EQ(keyboard_event_sa->key(), "A"); |
| EXPECT_EQ(keyboard_event_sa->code(), "KeyA"); |
| |
| init.set_key_code(keycode::k1); |
| scoped_refptr<KeyboardEvent> keyboard_event_1 = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_1->key_identifier(), "1"); |
| EXPECT_EQ(keyboard_event_1->key(), "1"); |
| EXPECT_EQ(keyboard_event_1->code(), "Digit1"); |
| |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_s1 = |
| new KeyboardEvent("keydown", init); |
| init.set_shift_key(false); |
| EXPECT_EQ(keyboard_event_s1->key_identifier(), "!"); |
| EXPECT_EQ(keyboard_event_s1->key(), "!"); |
| EXPECT_EQ(keyboard_event_1->code(), "Digit1"); |
| |
| init.set_key_code(keycode::kLeft); |
| scoped_refptr<KeyboardEvent> keyboard_event_left = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_left->key_identifier(), "ArrowLeft"); |
| EXPECT_EQ(keyboard_event_left->key(), "ArrowLeft"); |
| EXPECT_EQ(keyboard_event_left->code(), "ArrowLeft"); |
| |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_sleft = |
| new KeyboardEvent("keydown", init); |
| init.set_shift_key(false); |
| EXPECT_EQ(keyboard_event_sleft->key_identifier(), "ArrowLeft"); |
| EXPECT_EQ(keyboard_event_sleft->key(), "ArrowLeft"); |
| EXPECT_EQ(keyboard_event_sleft->code(), "ArrowLeft"); |
| |
| init.set_key_code(keycode::kNumpad5); |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_num5 = |
| new KeyboardEvent("keydown", init); |
| init.set_shift_key(false); |
| EXPECT_EQ(keyboard_event_num5->key_identifier(), "5"); |
| EXPECT_EQ(keyboard_event_num5->key(), "5"); |
| EXPECT_EQ(keyboard_event_num5->code(), "Numpad5"); |
| |
| init.set_key_code(keycode::kSpace); |
| scoped_refptr<KeyboardEvent> keyboard_event_space = |
| new KeyboardEvent("keydown", init); |
| EXPECT_EQ(keyboard_event_space->key_identifier(), " "); |
| EXPECT_EQ(keyboard_event_space->key(), " "); |
| EXPECT_EQ(keyboard_event_space->code(), "Space"); |
| } |
| |
| TEST(KeyboardEventTest, CanGetAltKey) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->alt_key()); |
| |
| init.set_alt_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_a = |
| new KeyboardEvent("keydown", init); |
| init.set_alt_key(false); |
| EXPECT_TRUE(keyboard_event_a->alt_key()); |
| } |
| |
| TEST(KeyboardEventTest, CanGetCtrlKey) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->ctrl_key()); |
| |
| init.set_ctrl_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_c = |
| new KeyboardEvent("keydown", init); |
| init.set_ctrl_key(false); |
| EXPECT_TRUE(keyboard_event_c->ctrl_key()); |
| } |
| |
| TEST(KeyboardEventTest, CanGetMetaKey) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->meta_key()); |
| |
| init.set_meta_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_m = |
| new KeyboardEvent("keydown", init); |
| init.set_meta_key(false); |
| EXPECT_TRUE(keyboard_event_m->meta_key()); |
| } |
| |
| TEST(KeyboardEventTest, CanGetShiftKey) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->shift_key()); |
| |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_s = |
| new KeyboardEvent("keydown", init); |
| init.set_shift_key(false); |
| EXPECT_TRUE(keyboard_event_s->shift_key()); |
| } |
| |
| TEST(KeyboardEventTest, CanGetModifierState) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->GetModifierState("Alt")); |
| EXPECT_FALSE(keyboard_event->GetModifierState("Control")); |
| EXPECT_FALSE(keyboard_event->GetModifierState("Meta")); |
| EXPECT_FALSE(keyboard_event->GetModifierState("Shift")); |
| |
| init.set_alt_key(true); |
| init.set_ctrl_key(true); |
| init.set_meta_key(true); |
| init.set_shift_key(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_m = |
| new KeyboardEvent("keydown", init); |
| 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) { |
| KeyboardEventInit init; |
| scoped_refptr<KeyboardEvent> keyboard_event = |
| new KeyboardEvent("keydown", init); |
| EXPECT_FALSE(keyboard_event->repeat()); |
| |
| init.set_repeat(true); |
| scoped_refptr<KeyboardEvent> keyboard_event_r = |
| new KeyboardEvent("keydown", init); |
| EXPECT_TRUE(keyboard_event_r->repeat()); |
| } |
| } // namespace dom |
| } // namespace cobalt |