#if defined(_MSC_VER)
#include <winsock2.h>
#endif
#include "absl/base/config.h"
#if ABSL_INTERNAL_CPLUSPLUS_LANG >= 202002L
#include <version>
#endif
#include <array>
#include <cfloat>
#include <chrono>
#ifdef __cpp_lib_three_way_comparison
#include <compare>
#endif
#include <cmath>
#include <cstdint>
#include <ctime>
#include <iomanip>
#include <limits>
#include <random>
#include <string>
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "absl/strings/str_format.h"
#include "absl/time/time.h"
namespace {
constexpr int64_t kint64max = …;
constexpr int64_t kint64min = …;
absl::Duration ApproxYears(int64_t n) { … }
MATCHER_P(TimespecMatcher, ts, "") { … }
MATCHER_P(TimevalMatcher, tv, "") { … }
TEST(Duration, ConstExpr) { … }
TEST(Duration, ValueSemantics) { … }
TEST(Duration, Factories) { … }
TEST(Duration, ToConversion) { … }
template <int64_t N>
void TestToConversion() { … }
TEST(Duration, ToConversionDeprecated) { … }
template <int64_t N>
void TestFromChronoBasicEquality() { … }
TEST(Duration, FromChrono) { … }
template <int64_t N>
void TestToChrono() { … }
TEST(Duration, ToChrono) { … }
TEST(Duration, FactoryOverloads) { … }
TEST(Duration, InfinityExamples) { … }
TEST(Duration, InfinityComparison) { … }
TEST(Duration, InfinityAddition) { … }
TEST(Duration, InfinitySubtraction) { … }
TEST(Duration, InfinityMultiplication) { … }
TEST(Duration, InfinityDivision) { … }
TEST(Duration, InfinityModulus) { … }
TEST(Duration, InfinityIDiv) { … }
TEST(Duration, InfinityFDiv) { … }
TEST(Duration, DivisionByZero) { … }
TEST(Duration, NaN) { … }
TEST(Duration, Range) { … }
TEST(Duration, RelationalOperators) { … }
#ifdef ABSL_INTERNAL_TIME_HAS_THREE_WAY_COMPARISON
TEST(Duration, SpaceshipOperators) { … }
#endif
TEST(Duration, Addition) { … }
TEST(Duration, Negation) { … }
TEST(Duration, AbsoluteValue) { … }
TEST(Duration, Multiplication) { … }
TEST(Duration, Truncation) { … }
TEST(Duration, Flooring) { … }
TEST(Duration, Ceiling) { … }
TEST(Duration, RoundTripUnits) { … }
TEST(Duration, TruncConversions) { … }
TEST(Duration, SmallConversions) { … }
void VerifyApproxSameAsMul(double time_as_seconds, int* const misses) { … }
TEST(Duration, ToDoubleSecondsCheckEdgeCases) { … }
TEST(Duration, ToDoubleSecondsCheckRandom) { … }
TEST(Duration, ConversionSaturation) { … }
TEST(Duration, FormatDuration) { … }
TEST(Duration, ParseDuration) { … }
TEST(Duration, FormatParseRoundTrip) { … }
TEST(Duration, AbslStringify) { … }
TEST(Duration, NoPadding) { … }
}