// 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 "peridot/lib/socket/socket_drainer_client.h"

#include <lib/gtest/test_loop_fixture.h>

#include "peridot/lib/socket/socket_pair.h"

namespace socket {
namespace {

using SocketDrainerClientTest = gtest::TestLoopFixture;

// Regression test for LE-229.
TEST_F(SocketDrainerClientTest, DoNotCallOnDelete) {
  socket::SocketPair socket;
  socket.socket1.reset();

  auto drainer = std::make_unique<SocketDrainerClient>();
  bool called = false;
  drainer->set_on_empty([&called] { called = true; });
  drainer->Start(std::move(socket.socket2), [&drainer](const std::string& v) { drainer.reset(); });
  RunLoopUntilIdle();
  EXPECT_FALSE(called);
}

}  // namespace
}  // namespace socket
