| // Copyright 2019 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include <string> | |
| #include <gtest/gtest.h> | |
| #include "src/virtualization/tests/enclosed_guest.h" | |
| #include "src/virtualization/tests/fake_scenic.h" | |
| #include "src/virtualization/tests/guest_test.h" | |
| namespace { | |
| // Create an alias, as "TEST_F" requires the fixture name to be a valid C token. | |
| using VirtioInputDebianGuestTest = GuestTest<DebianEnclosedGuest>; | |
| TEST_F(VirtioInputDebianGuestTest, Input) { | |
| // Start the test. | |
| auto* guest_console = this->GetEnclosedGuest()->GetConsole(); | |
| EXPECT_EQ(guest_console->SendBlocking( | |
| "/test_utils/virtio_input_test_util keyboard /dev/input/event*\n"), | |
| ZX_OK); | |
| // Wait for the test utility to print its string ("type ..."), and then | |
| // send keystrokes. | |
| EXPECT_EQ(guest_console->WaitForMarker("Type 'abc<shift>'"), ZX_OK); | |
| for (const auto key : { | |
| KeyboardEventHidUsage::KEY_A, | |
| KeyboardEventHidUsage::KEY_B, | |
| KeyboardEventHidUsage::KEY_C, | |
| KeyboardEventHidUsage::KEY_LSHIFT, | |
| }) { | |
| this->GetEnclosedGuest()->GetScenic()->SendKeyPress(key); | |
| } | |
| // Ensure we passed. | |
| std::string result; | |
| EXPECT_EQ(guest_console->WaitForMarker("PASS", &result), ZX_OK); | |
| } | |
| } // namespace |