SocketTest.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  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, connect)
  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, connect(_, _, _)).Times(AtLeast(1));
  66. ON_CALL(*mockSocket, connect(_, _, _)).WillByDefault(Return(0));
  67. #endif
  68. Socket socket{parameter};
  69. ASSERT_TRUE(socket.connect());
  70. }
  71. TEST_F(SocketTest, isInitialized)
  72. {
  73. Socket socket{generateSocketParameter()};
  74. ASSERT_TRUE(socket.isInitialized());
  75. }
  76. TEST_F(SocketTest, listen)
  77. {
  78. SocketParameter parameter = generateSocketParameter();
  79. #if defined(unix) || defined(__APPLE__)
  80. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  81. parameter.posixSocket = mockSocket;
  82. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  83. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  84. EXPECT_CALL(*mockSocket, listen(_, _)).Times(AtLeast(1));
  85. ON_CALL(*mockSocket, listen(_, _)).WillByDefault(Return(0));
  86. #endif
  87. Socket socket{parameter};
  88. ASSERT_TRUE(socket.listen());
  89. }
  90. TEST_F(SocketTest, listen_wrong_protocol)
  91. {
  92. SocketParameter parameter = generateSocketParameter();
  93. parameter.socketAddress.protocolType = PROTOCOL_TYPE_UDP;
  94. #if defined(unix) || defined(__APPLE__)
  95. shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
  96. parameter.posixSocket = mockSocket;
  97. EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
  98. ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
  99. #endif
  100. Socket socket{parameter};
  101. EXPECT_THROW({
  102. try
  103. {
  104. bool listened = socket.listen();
  105. }
  106. catch (const WrongProtocolException &_exception)
  107. {
  108. throw;
  109. }
  110. }, WrongProtocolException);
  111. }
  112. }