shill: add NoRepliesReceived utility function to IcmpSession

Add a function that parses an IcmpSessionResult and returns true
iff the result indicates that no echo replies were received to
any ICMP echo request that was sent during that session.

BUG=chromium:216691
TEST=Compile shill and run unit tests.

Change-Id: I3df5861460695af0f5c1a9d2c3577cfe8029a289
Reviewed-on: https://chromium-review.googlesource.com/283503
Tested-by: Samuel Tan <samueltan@chromium.org>
Reviewed-by: mukesh agrawal <quiche@chromium.org>
Commit-Queue: Samuel Tan <samueltan@chromium.org>
diff --git a/icmp_session_unittest.cc b/icmp_session_unittest.cc
index 98723f5..cd24cd2 100644
--- a/icmp_session_unittest.cc
+++ b/icmp_session_unittest.cc
@@ -394,4 +394,23 @@
   VerifyIcmpSessionStopped();
 }
 
+TEST_F(IcmpSessionTest, AnyRepliesReceived) {
+  IcmpSession::IcmpSessionResult none_sent;
+  EXPECT_FALSE(IcmpSession::AnyRepliesReceived(none_sent));
+
+  IcmpSession::IcmpSessionResult two_sent_none_received;
+  two_sent_none_received.push_back(base::TimeDelta());
+  two_sent_none_received.push_back(base::TimeDelta());
+  EXPECT_FALSE(IcmpSession::AnyRepliesReceived(two_sent_none_received));
+
+  IcmpSession::IcmpSessionResult one_sent_one_received;
+  one_sent_one_received.push_back(base::TimeDelta::FromSeconds(10));
+  EXPECT_TRUE(IcmpSession::AnyRepliesReceived(one_sent_one_received));
+
+  IcmpSession::IcmpSessionResult two_sent_one_received;
+  two_sent_one_received.push_back(base::TimeDelta::FromSeconds(20));
+  two_sent_one_received.push_back(base::TimeDelta());
+  EXPECT_TRUE(IcmpSession::AnyRepliesReceived(two_sent_one_received));
+}
+
 }  // namespace shill