Remove duplicates during bulk insertion.
[folly.git] / folly / test / TestUtils.h
index 14a6012db664cf27e7efa058c6fa6bc5fb6ab78d..a6642f926f905530f2ff08f7bd08c11dc8584fbb 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2016 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,7 +16,9 @@
 
 #pragma once
 
-#include <gtest/gtest.h>
+#include <chrono>
+
+#include <folly/portability/GTest.h>
 
 // We use this to indicate that tests have failed because of timing
 // or dependencies that may be flakey. Internally this is used by
 // a normal test failure; there is only an effect if the test framework
 // interprets the message.
 #define SKIP() GTEST_FATAL_FAILURE_("Test skipped by client")
+
+namespace folly {
+namespace test {
+
+template <typename T1, typename T2>
+::testing::AssertionResult
+AreWithinSecs(T1 val1, T2 val2, std::chrono::seconds acceptableDeltaSecs) {
+  auto deltaSecs =
+      std::chrono::duration_cast<std::chrono::seconds>(val1 - val2);
+  if (deltaSecs <= acceptableDeltaSecs &&
+      deltaSecs >= -1 * acceptableDeltaSecs) {
+    return ::testing::AssertionSuccess();
+  } else {
+    return ::testing::AssertionFailure()
+        << val1.count() << " and " << val2.count() << " are not within "
+        << acceptableDeltaSecs.count() << " secs of each other";
+  }
+}
+}
+}