blob: 2dd44f9f482af0566b8c58e0469b8bf8c5df2c35 [file] [log] [blame]
// Copyright 2018 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 "echo_server_app.h"
#include <lib/gtest/test_loop_fixture.h>
#include <lib/sys/cpp/testing/component_context_provider.h>
namespace echo {
namespace testing {
using namespace fidl::examples::echo;
class EchoServerAppForTest : public EchoServerApp {
public:
// Expose injecting constructor so we can pass an instrumented Context
EchoServerAppForTest(std::unique_ptr<sys::ComponentContext> context)
: EchoServerApp(std::move(context), false) {}
};
class EchoServerAppTest : public gtest::TestLoopFixture {
public:
void SetUp() override {
TestLoopFixture::SetUp();
echoServerApp_.reset(new EchoServerAppForTest(provider_.TakeContext()));
}
void TearDown() override {
echoServerApp_.reset();
TestLoopFixture::TearDown();
}
protected:
EchoPtr echo() {
EchoPtr echo;
provider_.ConnectToPublicService(echo.NewRequest());
return echo;
}
private:
std::unique_ptr<EchoServerAppForTest> echoServerApp_;
sys::testing::ComponentContextProvider provider_;
};
// Answer "Hello World" with "Hello World"
TEST_F(EchoServerAppTest, EchoString_HelloWorld) {
EchoPtr echo_ = echo();
::fidl::StringPtr message = "bogus";
echo_->EchoString("Hello World!", [&](::fidl::StringPtr retval) { message = retval; });
RunLoopUntilIdle();
EXPECT_EQ("Hello World!", message);
}
// Answer "" with ""
TEST_F(EchoServerAppTest, EchoString_Empty) {
EchoPtr echo_ = echo();
fidl::StringPtr message = "bogus";
echo_->EchoString("", [&](::fidl::StringPtr retval) { message = retval; });
RunLoopUntilIdle();
EXPECT_EQ("", message);
}
} // namespace testing
} // namespace echo