X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=folly%2Ftest%2FTestUtils.h;h=a6642f926f905530f2ff08f7bd08c11dc8584fbb;hb=3900132e235520bee366c554279af09ca4208667;hp=14a6012db664cf27e7efa058c6fa6bc5fb6ab78d;hpb=dee8a5180aa542d98d1b71c74f83a006e4627952;p=folly.git diff --git a/folly/test/TestUtils.h b/folly/test/TestUtils.h index 14a6012d..a6642f92 100644 --- a/folly/test/TestUtils.h +++ b/folly/test/TestUtils.h @@ -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 +#include + +#include // We use this to indicate that tests have failed because of timing // or dependencies that may be flakey. Internally this is used by @@ -24,3 +26,23 @@ // 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 +::testing::AssertionResult +AreWithinSecs(T1 val1, T2 val2, std::chrono::seconds acceptableDeltaSecs) { + auto deltaSecs = + std::chrono::duration_cast(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"; + } +} +} +}