Export of internal Abseil changes.
-- 906c47420646d510edd2479d5542c56f5fa31b65 by CJ Johnson <johnsoncj@google.com>: Import of CCTZ from GitHub. PiperOrigin-RevId: 216573923 -- 74560d4afd2b605909e677c6fc3076049fb3010a by Eric Fiselier <ericwf@google.com>: Avoid -Wformat-pedantic in benchmark. PiperOrigin-RevId: 216523769 -- 9bcc9da8b03e6d1ea43ee78931256c5541cb9686 by Eric Fiselier <ericwf@google.com>: Delete unused CityHash functions. PiperOrigin-RevId: 216464492 -- a42563b394c89fbb4c55cb5a6a5edbf96d271eea by Abseil Team <absl-team@google.com>: Introduce new Abseil interfaces for converting between civil times and absolute times.s Deprecates absl::ConvertDateTime() and absl::FromDateTime(). PiperOrigin-RevId: 216424948 -- 088e11235124267517d7f137854fa5554679c24f by Eric Fiselier <ericwf@google.com>: Remove unneeded break statements in test. PiperOrigin-RevId: 216403321 GitOrigin-RevId: 906c47420646d510edd2479d5542c56f5fa31b65 Change-Id: Idb44420be623e369c66f5a9c92bdc9ab46d3ec92
This commit is contained in:
parent
445998d7ac
commit
f340f773ed
24 changed files with 2675 additions and 2592 deletions
|
|
@ -118,7 +118,7 @@ TEST(FormatTime, RFC1123FormatPadsYear) { // locale specific
|
|||
absl::TimeZone tz = absl::UTCTimeZone();
|
||||
|
||||
// A year of 77 should be padded to 0077.
|
||||
absl::Time t = absl::FromDateTime(77, 6, 28, 9, 8, 7, tz);
|
||||
absl::Time t = absl::FromCivil(absl::CivilSecond(77, 6, 28, 9, 8, 7), tz);
|
||||
EXPECT_EQ("Mon, 28 Jun 0077 09:08:07 +0000",
|
||||
absl::FormatTime(absl::RFC1123_full, t, tz));
|
||||
EXPECT_EQ("28 Jun 0077 09:08:07 +0000",
|
||||
|
|
@ -154,9 +154,9 @@ TEST(ParseTime, Basics) {
|
|||
EXPECT_TRUE(absl::ParseTime("%Y-%m-%d %H:%M:%S %z",
|
||||
"2013-06-28 19:08:09 -0800", &t, &err))
|
||||
<< err;
|
||||
absl::Time::Breakdown bd = t.In(absl::FixedTimeZone(-8 * 60 * 60));
|
||||
ABSL_INTERNAL_EXPECT_TIME(bd, 2013, 6, 28, 19, 8, 9, -8 * 60 * 60, false);
|
||||
EXPECT_EQ(absl::ZeroDuration(), bd.subsecond);
|
||||
const auto ci = absl::FixedTimeZone(-8 * 60 * 60).At(t);
|
||||
EXPECT_EQ(absl::CivilSecond(2013, 6, 28, 19, 8, 9), ci.cs);
|
||||
EXPECT_EQ(absl::ZeroDuration(), ci.subsecond);
|
||||
}
|
||||
|
||||
TEST(ParseTime, NullErrorString) {
|
||||
|
|
@ -177,17 +177,17 @@ TEST(ParseTime, WithTimeZone) {
|
|||
EXPECT_TRUE(
|
||||
absl::ParseTime("%Y-%m-%d %H:%M:%S", "2013-06-28 19:08:09", tz, &t, &e))
|
||||
<< e;
|
||||
absl::Time::Breakdown bd = t.In(tz);
|
||||
ABSL_INTERNAL_EXPECT_TIME(bd, 2013, 6, 28, 19, 8, 9, -7 * 60 * 60, true);
|
||||
EXPECT_EQ(absl::ZeroDuration(), bd.subsecond);
|
||||
auto ci = tz.At(t);
|
||||
EXPECT_EQ(absl::CivilSecond(2013, 6, 28, 19, 8, 9), ci.cs);
|
||||
EXPECT_EQ(absl::ZeroDuration(), ci.subsecond);
|
||||
|
||||
// But the timezone is ignored when a UTC offset is present.
|
||||
EXPECT_TRUE(absl::ParseTime("%Y-%m-%d %H:%M:%S %z",
|
||||
"2013-06-28 19:08:09 +0800", tz, &t, &e))
|
||||
<< e;
|
||||
bd = t.In(absl::FixedTimeZone(8 * 60 * 60));
|
||||
ABSL_INTERNAL_EXPECT_TIME(bd, 2013, 6, 28, 19, 8, 9, 8 * 60 * 60, false);
|
||||
EXPECT_EQ(absl::ZeroDuration(), bd.subsecond);
|
||||
ci = absl::FixedTimeZone(8 * 60 * 60).At(t);
|
||||
EXPECT_EQ(absl::CivilSecond(2013, 6, 28, 19, 8, 9), ci.cs);
|
||||
EXPECT_EQ(absl::ZeroDuration(), ci.subsecond);
|
||||
}
|
||||
|
||||
TEST(ParseTime, ErrorCases) {
|
||||
|
|
@ -332,15 +332,15 @@ TEST(ParseTime, InfiniteTime) {
|
|||
EXPECT_TRUE(absl::ParseTime("infinite-future %H:%M", "infinite-future 03:04",
|
||||
&t, &err));
|
||||
EXPECT_NE(absl::InfiniteFuture(), t);
|
||||
EXPECT_EQ(3, t.In(tz).hour);
|
||||
EXPECT_EQ(4, t.In(tz).minute);
|
||||
EXPECT_EQ(3, tz.At(t).cs.hour());
|
||||
EXPECT_EQ(4, tz.At(t).cs.minute());
|
||||
|
||||
// "infinite-past" as literal std::string
|
||||
EXPECT_TRUE(
|
||||
absl::ParseTime("infinite-past %H:%M", "infinite-past 03:04", &t, &err));
|
||||
EXPECT_NE(absl::InfinitePast(), t);
|
||||
EXPECT_EQ(3, t.In(tz).hour);
|
||||
EXPECT_EQ(4, t.In(tz).minute);
|
||||
EXPECT_EQ(3, tz.At(t).cs.hour());
|
||||
EXPECT_EQ(4, tz.At(t).cs.minute());
|
||||
|
||||
// The input doesn't match the format.
|
||||
EXPECT_FALSE(absl::ParseTime("infinite-future %H:%M", "03:04", &t, &err));
|
||||
|
|
@ -365,16 +365,17 @@ TEST(ParseTime, FailsOnUnrepresentableTime) {
|
|||
//
|
||||
|
||||
TEST(FormatParse, RoundTrip) {
|
||||
const absl::TimeZone gst =
|
||||
const absl::TimeZone lax =
|
||||
absl::time_internal::LoadTimeZone("America/Los_Angeles");
|
||||
const absl::Time in = absl::FromDateTime(1977, 6, 28, 9, 8, 7, gst);
|
||||
const absl::Time in =
|
||||
absl::FromCivil(absl::CivilSecond(1977, 6, 28, 9, 8, 7), lax);
|
||||
const absl::Duration subseconds = absl::Nanoseconds(654321);
|
||||
std::string err;
|
||||
|
||||
// RFC3339, which renders subseconds.
|
||||
{
|
||||
absl::Time out;
|
||||
const std::string s = absl::FormatTime(absl::RFC3339_full, in + subseconds, gst);
|
||||
const std::string s = absl::FormatTime(absl::RFC3339_full, in + subseconds, lax);
|
||||
EXPECT_TRUE(absl::ParseTime(absl::RFC3339_full, s, &out, &err))
|
||||
<< s << ": " << err;
|
||||
EXPECT_EQ(in + subseconds, out); // RFC3339_full includes %Ez
|
||||
|
|
@ -383,7 +384,7 @@ TEST(FormatParse, RoundTrip) {
|
|||
// RFC1123, which only does whole seconds.
|
||||
{
|
||||
absl::Time out;
|
||||
const std::string s = absl::FormatTime(absl::RFC1123_full, in, gst);
|
||||
const std::string s = absl::FormatTime(absl::RFC1123_full, in, lax);
|
||||
EXPECT_TRUE(absl::ParseTime(absl::RFC1123_full, s, &out, &err))
|
||||
<< s << ": " << err;
|
||||
EXPECT_EQ(in, out); // RFC1123_full includes %z
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue