Browse Source

Add missing read test for Socket class

Patrick-Christopher Mattulat 2 years ago
parent
commit
0b26d7e474
2 changed files with 32 additions and 1 deletions
  1. 1 1
      source/ls_std/network/socket/Socket.cpp
  2. 31 0
      test/cases/network/socket/SocketTest.cpp

+ 1 - 1
source/ls_std/network/socket/Socket.cpp

@@ -184,7 +184,7 @@ ls::std::core::type::byte_field ls::std::network::Socket::_readUnix()
 
   if (size == -1)
   {
-    throw ls::std::core::FileOperationException{}; // TODO: write test
+    throw ls::std::core::FileOperationException{};
   }
 
   return ls::std::core::type::byte_field{this->readBuffer, size};

+ 31 - 0
test/cases/network/socket/SocketTest.cpp

@@ -104,6 +104,37 @@ namespace
                  }, IllegalArgumentException);
   }
 
+  TEST_F(SocketTest, read_api_call_failed)
+  {
+    SocketParameter parameter = generateSocketParameter();
+
+    #if defined(unix) || defined(__APPLE__)
+    shared_ptr<MockPosixSocket> mockSocket = make_shared<MockPosixSocket>();
+    shared_ptr<MockPosixReader> mockReader = make_shared<MockPosixReader>();
+    parameter.posixSocket = mockSocket;
+    parameter.posixReader = mockReader;
+
+    EXPECT_CALL(*mockSocket, create(_, _, _)).Times(AtLeast(1));
+    ON_CALL(*mockSocket, create(_, _, _)).WillByDefault(Return(0));
+    EXPECT_CALL(*mockReader, read(_, _, _)).Times(AtLeast(1));
+    ON_CALL(*mockReader, read(_, _, _)).WillByDefault(Return(-1));
+    #endif
+
+    parameter.readBufferSize = 32;
+    Socket socket{parameter};
+
+    EXPECT_THROW({
+                   try
+                   {
+                     byte_field data = socket.read();
+                   }
+                   catch (const FileOperationException &_exception)
+                   {
+                     throw;
+                   }
+                 }, FileOperationException);
+  }
+
   TEST_F(SocketTest, write)
   {
     SocketParameter parameter = generateSocketParameter();