Index: native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc |
diff --git a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc |
index e9391d0595746ef760a64fd8b19849b18c0bc284..fdf878f506c75491669b3891363d455400a9bb78 100644 |
--- a/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc |
+++ b/native_client_sdk/src/tests/nacl_io_socket_test/socket_test.cc |
@@ -216,7 +216,7 @@ TEST_F(SocketTestTCP, DISABLED_Connect) { |
memset(inbuf, 0, sizeof(inbuf)); |
int sock = socket(AF_INET, SOCK_STREAM, 0); |
- EXPECT_NE(-1, sock); |
+ EXPECT_GT(sock, -1); |
sockaddr_in addr; |
socklen_t addrlen = sizeof(addr); |
@@ -233,4 +233,32 @@ TEST_F(SocketTestTCP, DISABLED_Connect) { |
EXPECT_EQ(0, memcmp(outbuf, inbuf, sizeof(outbuf))); |
} |
+TEST_F(SocketTest, Setsockopt) { |
+ int sock = socket(AF_INET, SOCK_STREAM, 0); |
+ EXPECT_GT(sock, -1); |
+ int socket_error = 99; |
+ socklen_t len = sizeof(socket_error); |
+ |
+ // Test for valid option (SO_ERROR) which should be 0 when a socket |
+ // is first created. |
+ ASSERT_EQ(0, getsockopt(sock, SOL_SOCKET, SO_ERROR, &socket_error, &len)); |
+ ASSERT_EQ(0, socket_error); |
+ ASSERT_EQ(sizeof(socket_error), len); |
+ |
+ // Test for an invalid option (-1) |
+ ASSERT_EQ(-1, getsockopt(sock, SOL_SOCKET, -1, &socket_error, &len)); |
+ ASSERT_EQ(ENOPROTOOPT, errno); |
+} |
+ |
+TEST_F(SocketTest, Getsockopt) { |
+ int sock = socket(AF_INET, SOCK_STREAM, 0); |
+ EXPECT_GT(sock, -1); |
+ |
+ // It should not be possible to set SO_ERROR using setsockopt. |
+ int socket_error = 10; |
+ socklen_t len = sizeof(socket_error); |
+ ASSERT_EQ(-1, setsockopt(sock, SOL_SOCKET, SO_ERROR, &socket_error, len)); |
+ ASSERT_EQ(ENOPROTOOPT, errno); |
+} |
+ |
#endif // PROVIDES_SOCKET_API |