blob: 7a5f2790ef43550c0aef7ea75de86a97fa01a46e [file] [log] [blame]
// Copyright 2017 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/lib/fsl/socket/blocking_drain.h"
#include <lib/zx/socket.h>
#include <vector>
#include <gtest/gtest.h>
#include "src/lib/fsl/socket/strings.h"
namespace fsl {
namespace {
TEST(BlockingDrain, BlockingDrainFrom) {
zx::socket socket = WriteStringToSocket("Hello");
std::vector<char> buffer;
EXPECT_TRUE(BlockingDrainFrom(std::move(socket), [&](const void* data, uint32_t len) {
const char* begin = static_cast<const char*>(data);
buffer.insert(buffer.end(), begin, begin + len);
return len;
}));
std::string message(buffer.data(), buffer.size());
EXPECT_EQ("Hello", message);
}
// TODO(abarth): Add more tests that cover more of the codepaths. The
// BlockingDrainFrom test above only exercises the optimistic case when blocking
// isn't required.
} // namespace
} // namespace fsl