Add unit test for timeout=0
[folly.git] / folly / io / async / test / AsyncTimeoutTest.cpp
index ff5cd1cc95a06bf45cdfc91fc7ed936fd836b936..1d7c04fe874b3fa60d6315336ca760c7429315bb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2015 Facebook, Inc.
+ * Copyright 2017 Facebook, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,8 +16,7 @@
 
 #include <folly/io/async/AsyncTimeout.h>
 #include <folly/io/async/EventBase.h>
-
-#include <gtest/gtest.h>
+#include <folly/portability/GTest.h>
 
 namespace folly {
 
@@ -54,6 +53,20 @@ TEST(AsyncTimeout, schedule) {
   EXPECT_EQ(expected, value);
 }
 
+TEST(AsyncTimeout, schedule_immediate) {
+  int value = 0;
+  int const expected = 10;
+  EventBase manager;
+
+  auto observer = AsyncTimeout::schedule(
+      std::chrono::milliseconds(0), manager, [&]() noexcept {
+        value = expected;
+      });
+
+  manager.loop();
+  EXPECT_EQ(expected, value);
+}
+
 TEST(AsyncTimeout, cancel_make) {
   int value = 0;
   int const expected = 10;
@@ -90,4 +103,4 @@ TEST(AsyncTimeout, cancel_schedule) {
   EXPECT_NE(expected, value);
 }
 
-} // namespace folly {
+} // namespace folly