| // 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 |