summaryrefslogtreecommitdiff
path: root/absl/time/duration_test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'absl/time/duration_test.cc')
-rw-r--r--absl/time/duration_test.cc53
1 files changed, 17 insertions, 36 deletions
diff --git a/absl/time/duration_test.cc b/absl/time/duration_test.cc
index b7abf4ba..dcf7aad6 100644
--- a/absl/time/duration_test.cc
+++ b/absl/time/duration_test.cc
@@ -16,8 +16,9 @@
#include <winsock2.h> // for timeval
#endif
-#include <chrono> // NOLINT(build/c++11)
+#include <array>
#include <cfloat>
+#include <chrono> // NOLINT(build/c++11)
#include <cmath>
#include <cstdint>
#include <ctime>
@@ -28,6 +29,7 @@
#include "gmock/gmock.h"
#include "gtest/gtest.h"
+#include "absl/strings/str_format.h"
#include "absl/time/time.h"
namespace {
@@ -349,11 +351,6 @@ TEST(Duration, ToChrono) {
}
TEST(Duration, FactoryOverloads) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
enum E { kOne = 1 };
#define TEST_FACTORY_OVERLOADS(NAME) \
EXPECT_EQ(1, NAME(kOne) / NAME(kOne)); \
@@ -884,11 +881,6 @@ TEST(Duration, RelationalOperators) {
}
TEST(Duration, Addition) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
#define TEST_ADD_OPS(UNIT) \
do { \
EXPECT_EQ(UNIT(2), UNIT(1) + UNIT(1)); \
@@ -982,11 +974,6 @@ TEST(Duration, Negation) {
}
TEST(Duration, AbsoluteValue) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
EXPECT_EQ(absl::ZeroDuration(), AbsDuration(absl::ZeroDuration()));
EXPECT_EQ(absl::Seconds(1), AbsDuration(absl::Seconds(1)));
EXPECT_EQ(absl::Seconds(1), AbsDuration(absl::Seconds(-1)));
@@ -1004,11 +991,6 @@ TEST(Duration, AbsoluteValue) {
}
TEST(Duration, Multiplication) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
#define TEST_MUL_OPS(UNIT) \
do { \
EXPECT_EQ(UNIT(5), UNIT(2) * 2.5); \
@@ -1261,11 +1243,6 @@ TEST(Duration, RoundTripUnits) {
}
TEST(Duration, TruncConversions) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
// Tests ToTimespec()/DurationFromTimespec()
const struct {
absl::Duration d;
@@ -1562,11 +1539,6 @@ TEST(Duration, ConversionSaturation) {
}
TEST(Duration, FormatDuration) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
// Example from Go's docs.
EXPECT_EQ("72h3m0.5s",
absl::FormatDuration(absl::Hours(72) + absl::Minutes(3) +
@@ -1701,11 +1673,6 @@ TEST(Duration, FormatDuration) {
}
TEST(Duration, ParseDuration) {
-#if defined(ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT) && \
- ABSL_SKIP_TIME_TESTS_BROKEN_ON_MSVC_OPT
- GTEST_SKIP();
-#endif
-
absl::Duration d;
// No specified unit. Should only work for zero and infinity.
@@ -1853,4 +1820,18 @@ TEST(Duration, FormatParseRoundTrip) {
#undef TEST_PARSE_ROUNDTRIP
}
+TEST(Duration, AbslStringify) {
+ // FormatDuration is already well tested, so just use one test case here to
+ // verify that StrFormat("%v", d) works as expected.
+ absl::Duration d = absl::Seconds(1);
+ EXPECT_EQ(absl::StrFormat("%v", d), absl::FormatDuration(d));
+}
+
+TEST(Duration, NoPadding) {
+ // Should match the size of a struct with uint32_t alignment and no padding.
+ using NoPadding = std::array<uint32_t, 3>;
+ EXPECT_EQ(sizeof(NoPadding), sizeof(absl::Duration));
+ EXPECT_EQ(alignof(NoPadding), alignof(absl::Duration));
+}
+
} // namespace