diff options
Diffstat (limited to 'test/socket_test.hh')
| -rw-r--r-- | test/socket_test.hh | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/test/socket_test.hh b/test/socket_test.hh new file mode 100644 index 0000000..de71619 --- /dev/null +++ b/test/socket_test.hh @@ -0,0 +1,48 @@ +#ifndef SOCKET_TEST_HH +#define SOCKET_TEST_HH + +#include "unique_fd.hh" + +#include <gtest/gtest.h> +#include <utility> + +class Buffer; +class Logger; +class Looper; +class RoBuffer; + +class SocketTest : public testing::Test { +public: + class Client { + public: + virtual ~Client() = default; + + virtual void write(std::string_view data) = 0; + virtual void write(std::function<void(Buffer*)> writer) = 0; + virtual std::string_view received() const = 0; + virtual void forget(size_t bytes) = 0; + virtual void read(std::function<void(RoBuffer*)> reader) = 0; + virtual bool closed() const = 0; + + virtual void wait(Logger* logger) = 0; + + protected: + Client() = default; + Client(Client const&) = delete; + Client& operator=(Client const&) = delete; + }; + +protected: + SocketTest(); + + std::pair<unique_fd, unique_fd> create_pair(); + + std::unique_ptr<Client> create_client(unique_fd&& fd); + + std::shared_ptr<Looper> const& looper() { return looper_; } + +private: + std::shared_ptr<Looper> looper_; +}; + +#endif // SOCKET_TEST_HH |
