| // 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 "src/developer/shell/console/app.h" | |
| #include <utility> | |
| #include <gmock/gmock.h> | |
| #include <gtest/gtest.h> | |
| #include "src/lib/testing/loop_fixture/test_loop_fixture.h" | |
| namespace { | |
| using App = gtest::TestLoopFixture; | |
| llcpp::fuchsia::shell::Shell::SyncClient Client() { | |
| zx_handle_t client_ch = 0; | |
| zx::channel client_channel(client_ch); | |
| return llcpp::fuchsia::shell::Shell::SyncClient(std::move(client_channel)); | |
| } | |
| TEST_F(App, BogusArgs) { | |
| const char* args[] = {"/boot/bin/cliff", "-w", nullptr}; | |
| int quit_count = 0; | |
| ::llcpp::fuchsia::shell::Shell::SyncClient client = Client(); | |
| shell::console::App app(&client, dispatcher()); | |
| EXPECT_FALSE(app.Init(2, args, [&quit_count] { ++quit_count; })); | |
| EXPECT_EQ(0, quit_count); | |
| } | |
| TEST_F(App, SimpleDeclArg) { | |
| const char* args[] = {"/boot/bin/cliff", "-c", "var a = 1", nullptr}; | |
| int quit_count = 0; | |
| llcpp::fuchsia::shell::Shell::SyncClient client = Client(); | |
| shell::console::App app(&client, dispatcher()); | |
| EXPECT_TRUE(app.Init(3, args, [&] { ++quit_count; })); | |
| EXPECT_EQ(1, quit_count); | |
| } | |
| } // namespace |