Index: net/udp/udp_socket_unittest.cc |
diff --git a/net/udp/udp_socket_unittest.cc b/net/udp/udp_socket_unittest.cc |
index 09a28063f2050bd158d84808032946c1d1c282ff..81290de2bb8c9ff67f5c0dea14957f78b172e30b 100644 |
--- a/net/udp/udp_socket_unittest.cc |
+++ b/net/udp/udp_socket_unittest.cc |
@@ -526,6 +526,58 @@ TEST_F(UDPSocketTest, CloseWithPendingRead) { |
EXPECT_FALSE(callback.have_result()); |
} |
+TEST_F(UDPSocketTest, JoinMulticastGroup) { |
+ const int kPort = 9999; |
+ IPEndPoint bind_address; |
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address); |
+ |
+ const char* kGroup = "237.132.100.17"; |
+ net::IPAddressNumber groupIp; |
mmenke
2013/04/16 18:09:49
nit: group_ip
Bei Zhang
2013/04/17 17:53:03
Done.
|
+ EXPECT_TRUE(net::ParseIPLiteralToNumber(kGroup, &groupIp)); |
+ |
+ scoped_ptr<UDPSocket> socket( |
+ new UDPSocket(DatagramSocket::DEFAULT_BIND, |
+ RandIntCallback(), |
+ NULL, |
+ NetLog::Source())); |
+ EXPECT_EQ(OK, socket->Bind(bind_address)); |
+ EXPECT_EQ(OK, socket->JoinGroup(groupIp)); |
+ EXPECT_NE(OK, socket->JoinGroup(groupIp)); // Joining group multiple times. |
+ EXPECT_EQ(OK, socket->LeaveGroup(groupIp)); |
+ EXPECT_NE(OK, socket->LeaveGroup(groupIp)); // Leaving group multiple times. |
+ |
+ socket->Close(); |
+} |
+ |
+TEST_F(UDPSocketTest, MulticastOptions) { |
+ const int kPort = 9999; |
+ IPEndPoint bind_address; |
+ CreateUDPAddress("0.0.0.0", kPort, &bind_address); |
+ |
+ scoped_ptr<UDPSocket> socket( |
+ new UDPSocket(DatagramSocket::DEFAULT_BIND, |
+ RandIntCallback(), |
+ NULL, |
+ NetLog::Source())); |
+ // Before binding. |
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(false)); |
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(true)); |
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(0)); |
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(3)); |
+ EXPECT_NE(OK, socket->SetMulticastTimeToLive(-1)); |
+ |
+ EXPECT_EQ(OK, socket->Bind(bind_address)); |
+ |
+ // After binding. |
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(false)); |
+ EXPECT_EQ(OK, socket->SetMulticastLoopbackMode(true)); |
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(0)); |
+ EXPECT_EQ(OK, socket->SetMulticastTimeToLive(3)); |
+ EXPECT_NE(OK, socket->SetMulticastTimeToLive(-1)); |
+ |
+ socket->Close(); |
+} |
+ |
} // namespace |
} // namespace net |