// 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_