blob: ac7b133b6b337fbc6384ef006dbfa210d09a5617 [file] [log] [blame]
// Copyright 2017 The Chromium OS 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 <memory>
#include <utility>
#include <base/run_loop.h>
#include <brillo/daemons/daemon.h>
#include <brillo/test_helpers.h>
#include <gtest/gtest.h>
#include <mojo/public/cpp/bindings/interface_request.h>
#include "midis/client_tracker.h"
#include "midis/tests/test_helper.h"
namespace midis {
class ClientTrackerTest : public ::testing::Test {
protected:
void SetUp() override { message_loop_.SetAsCurrent(); }
private:
brillo::BaseMessageLoop message_loop_;
};
// Check whether we can connect add and remove a client from ClientTracker.
TEST_F(ClientTrackerTest, AddClientPositive) {
DeviceTracker device_tracker;
ClientTracker cli_tracker;
cli_tracker.SetDeviceTracker(&device_tracker);
cli_tracker.InitClientTracker();
arc::mojom::MidisServerPtr server;
mojo::InterfaceRequest<arc::mojom::MidisServer> request =
mojo::GetProxy(&server);
auto client_pointer = std::make_unique<arc::mojom::MidisClientPtr>();
cli_tracker.MakeMojoClient(std::move(request), std::move(*client_pointer));
EXPECT_EQ(1, cli_tracker.GetNumClientsForTesting());
// Try removing a non-existent client.
cli_tracker.RemoveClient(-1);
EXPECT_EQ(1, cli_tracker.GetNumClientsForTesting());
// Get the client ID so that we can issue the delete command.
int client_id = cli_tracker.clients_.begin()->first;
cli_tracker.RemoveClient(client_id);
EXPECT_EQ(0, cli_tracker.GetNumClientsForTesting());
}
} // namespace midis