chromium/ppapi/tests/test_tcp_socket_private.h

// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef PPAPI_TESTS_TEST_TCP_SOCKET_PRIVATE_H_
#define PPAPI_TESTS_TEST_TCP_SOCKET_PRIVATE_H_

#include <string>

#include "ppapi/c/pp_stdint.h"
#include "ppapi/tests/test_case.h"

namespace pp {
class TCPSocketPrivate;
}

class TestTCPSocketPrivate : public TestCase {
 public:
  explicit TestTCPSocketPrivate(TestingInstance* instance);

  // TestCase implementation.
  virtual bool Init();
  virtual void RunTests(const std::string& filter);

 private:
  std::string TestBasic();
  std::string TestReadWrite();
  std::string TestReadWriteSSL();
  std::string TestConnectAddress();
  std::string TestSetOption();
  std::string TestLargeRead();

  // The higher level test fixture is responsible for making socket methods
  // behave in the expected manner.  The *Fails tests expect the specified event
  // to fail with PP_ERROR_FAILED, and the *Hangs test expects the specified
  // operation to never complete, at least until teardown starts.
  std::string TestSSLHandshakeFails();
  std::string TestSSLHandshakeHangs();
  std::string TestSSLWriteFails();
  std::string TestSSLReadFails();

  int32_t ReadFirstLineFromSocket(pp::TCPSocketPrivate* socket, std::string* s);
  int32_t WriteStringToSocket(pp::TCPSocketPrivate* socket,
                              const std::string& s);

  std::string host_;
  uint16_t port_;
  uint16_t ssl_port_;
};

#endif  // PPAPI_TESTS_TEST_TCP_SOCKET_PRIVATE_H_