sapling/eden/fs/utils/test/ChronoUnitTest.cpp
Adam Simpkins aa5e6c7295 update license headers in C++ files
Summary:
Update the copyright & license headers in C++ files to reflect the
relicensing to GPLv2

Reviewed By: wez

Differential Revision: D15487078

fbshipit-source-id: 19f24c933a64ecad0d3a692d0f8d2a38b4194b1d
2019-06-19 17:02:45 -07:00

80 lines
2.9 KiB
C++

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This software may be used and distributed according to the terms of the
* GNU General Public License version 2.
*/
#include "eden/fs/utils/ChronoUnit.h"
#include <folly/portability/GTest.h>
using folly::StringPiece;
using std::make_pair;
namespace {
std::pair<intmax_t, intmax_t> doLookup(StringPiece name) {
auto* info = facebook::eden::lookupChronoUnitInfo(name);
if (!info) {
return {0, 0};
}
return {info->num, info->den};
}
std::pair<intmax_t, intmax_t> subsecond(intmax_t den) {
return {1, den};
}
std::pair<intmax_t, intmax_t> multisecond(intmax_t num) {
return {num, 1};
}
} // namespace
TEST(ChronoUnit, validUnits) {
EXPECT_EQ(subsecond(1000000000), doLookup("ns"));
EXPECT_EQ(subsecond(1000000000), doLookup("nanosecond"));
EXPECT_EQ(subsecond(1000000000), doLookup("nanoseconds"));
EXPECT_EQ(subsecond(1000000), doLookup("us"));
EXPECT_EQ(subsecond(1000000), doLookup(u8"\u03BCs"));
EXPECT_EQ(subsecond(1000000), doLookup("microsecond"));
EXPECT_EQ(subsecond(1000000), doLookup("microseconds"));
EXPECT_EQ(subsecond(1000), doLookup("ms"));
EXPECT_EQ(subsecond(1000), doLookup("millisecond"));
EXPECT_EQ(subsecond(1000), doLookup("milliseconds"));
EXPECT_EQ(multisecond(1), doLookup("s"));
EXPECT_EQ(multisecond(1), doLookup("seconds"));
EXPECT_EQ(multisecond(1), doLookup("seconds"));
EXPECT_EQ(multisecond(60), doLookup("m"));
EXPECT_EQ(multisecond(60), doLookup("min"));
EXPECT_EQ(multisecond(60), doLookup("minute"));
EXPECT_EQ(multisecond(60), doLookup("minutes"));
EXPECT_EQ(multisecond(3600), doLookup("h"));
EXPECT_EQ(multisecond(3600), doLookup("hr"));
EXPECT_EQ(multisecond(3600), doLookup("hour"));
EXPECT_EQ(multisecond(3600), doLookup("hours"));
EXPECT_EQ(multisecond(86400), doLookup("d"));
EXPECT_EQ(multisecond(86400), doLookup("day"));
EXPECT_EQ(multisecond(86400), doLookup("days"));
EXPECT_EQ(multisecond(604800), doLookup("wk"));
EXPECT_EQ(multisecond(604800), doLookup("week"));
EXPECT_EQ(multisecond(604800), doLookup("weeks"));
EXPECT_EQ(multisecond(2629746), doLookup("mon"));
EXPECT_EQ(multisecond(2629746), doLookup("month"));
EXPECT_EQ(multisecond(2629746), doLookup("months"));
EXPECT_EQ(multisecond(31556952), doLookup("yr"));
EXPECT_EQ(multisecond(31556952), doLookup("year"));
EXPECT_EQ(multisecond(31556952), doLookup("years"));
}
TEST(ChronoUnit, invalidUnits) {
using facebook::eden::lookupChronoUnitInfo;
using namespace folly::literals::string_piece_literals;
EXPECT_EQ(nullptr, lookupChronoUnitInfo(""));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("bogus"));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("nanosec"));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("nanoseconds2"));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("nanoseconds "));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("nanoseconds\0"_sp));
EXPECT_EQ(nullptr, lookupChronoUnitInfo("minus"));
}