Chromium Code Reviews| 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 |