SocketTest.cpp 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. /*
  2. * Author: Patrick-Christopher Mattulat
  3. * Company: Lynar Studios
  4. * E-Mail: webmaster@lynarstudios.com
  5. * Created: 2020-11-16
  6. * Changed: 2022-12-12
  7. *
  8. * */
  9. #include <gtest/gtest.h>
  10. #include <ls_std/ls_std_network.hpp>
  11. using namespace ls::std::network;
  12. using namespace ::testing;
  13. using namespace ls_std_network_test;
  14. using namespace ::std;
  15. using namespace ls::std::core;
  16. namespace
  17. {
  18. class SocketTest : public ::testing::Test
  19. {
  20. protected:
  21. SocketTest() = default;
  22. ~SocketTest() override = default;
  23. void SetUp() override
  24. {}
  25. void TearDown() override
  26. {}
  27. static SocketParameter generateSocketParameter()
  28. {
  29. SocketParameter socketParameter{};
  30. socketParameter.protocolFamilyType = ProtocolFamilyType::PROTOCOL_FAMILY_TYPE_IPV4;
  31. SocketAddress socketAddress{};
  32. socketAddress.protocolType = ProtocolType::PROTOCOL_TYPE_TCP;
  33. socketAddress.ipAddress = "127.0.0.1";
  34. socketAddress.port = 2220;
  35. socketParameter.socketAddress = socketAddress;
  36. return socketParameter;
  37. }
  38. };
  39. TEST_F(SocketTest, getClassName)
  40. {
  41. ASSERT_STREQ("Socket", Socket{generateSocketParameter()}.getClassName().c_str());
  42. }
  43. TEST_F(SocketTest, bind)
  44. {
  45. SocketParameter parameter = generateSocketParameter();
  46. #if defined(unix) || defined(__APPLE__)
  47. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  48. parameter.posixSocket = mockSocket;
  49. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  50. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  51. EXPECT_CALL(*mockSocket, bind(_, _, _)).Times(AtLeast(1));
  52. ON_CALL(*mockSocket, bind(_, _, _)).WillByDefault(Return(0));
  53. #endif
  54. Socket socket{parameter};
  55. ASSERT_TRUE(socket.bind());
  56. }
  57. TEST_F(SocketTest, close)
  58. {
  59. SocketParameter parameter = generateSocketParameter();
  60. #if defined(unix) || defined(__APPLE__)
  61. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  62. parameter.posixSocket = mockSocket;
  63. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  64. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  65. EXPECT_CALL(*mockSocket, close(_)).Times(AtLeast(1));
  66. ON_CALL(*mockSocket, close(_)).WillByDefault(Return(0));
  67. #endif
  68. Socket socket{parameter};
  69. ASSERT_TRUE(socket.close());
  70. }
  71. TEST_F(SocketTest, connect)
  72. {
  73. SocketParameter parameter = generateSocketParameter();
  74. #if defined(unix) || defined(__APPLE__)
  75. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  76. parameter.posixSocket = mockSocket;
  77. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  78. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  79. EXPECT_CALL(*mockSocket, connect(_, _, _)).Times(AtLeast(1));
  80. ON_CALL(*mockSocket, connect(_, _, _)).WillByDefault(Return(0));
  81. #endif
  82. Socket socket{parameter};
  83. ASSERT_TRUE(socket.connect());
  84. }
  85. TEST_F(SocketTest, isInitialized)
  86. {
  87. Socket socket{generateSocketParameter()};
  88. ASSERT_TRUE(socket.isInitialized());
  89. }
  90. TEST_F(SocketTest, listen)
  91. {
  92. SocketParameter parameter = generateSocketParameter();
  93. #if defined(unix) || defined(__APPLE__)
  94. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  95. parameter.posixSocket = mockSocket;
  96. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  97. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  98. EXPECT_CALL(*mockSocket, listen(_, _)).Times(AtLeast(1));
  99. ON_CALL(*mockSocket, listen(_, _)).WillByDefault(Return(0));
  100. #endif
  101. Socket socket{parameter};
  102. ASSERT_TRUE(socket.listen());
  103. }
  104. TEST_F(SocketTest, listen_wrong_protocol)
  105. {
  106. SocketParameter parameter = generateSocketParameter();
  107. parameter.socketAddress.protocolType = PROTOCOL_TYPE_UDP;
  108. #if defined(unix) || defined(__APPLE__)
  109. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  110. parameter.posixSocket = mockSocket;
  111. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  112. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  113. #endif
  114. Socket socket{parameter};
  115. EXPECT_THROW({
  116. try
  117. {
  118. bool listened = socket.listen();
  119. }
  120. catch (const WrongProtocolException &_exception)
  121. {
  122. throw;
  123. }
  124. }, WrongProtocolException);
  125. }
  126. }