blob: 205baadef9f82458c3a0d0ba1dc842b56f3f509b [file] [log] [blame]
// Copyright 2022 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "croslog/relative_time_util.h"
#include <memory>
#include <string>
#include <utility>
#include "gtest/gtest.h"
#include "croslog/test_util.h"
namespace croslog {
class RelativeTimeUtilTest : public ::testing::Test {
public:
RelativeTimeUtilTest() = default;
RelativeTimeUtilTest(const RelativeTimeUtilTest&) = delete;
RelativeTimeUtilTest& operator=(const RelativeTimeUtilTest&) = delete;
};
TEST_F(RelativeTimeUtilTest, Parse) {
const auto tol = base::Milliseconds(100);
base::Time output;
base::Time target_time;
EXPECT_TRUE(ParseRelativeTime("-100", &output));
// The return value of base::Time::Now() here is slightly different from that
// in ParseRelativeTime(), allow an error of no more than tol
target_time = base::Time::Now() - base::Seconds(100);
EXPECT_LE(target_time - tol, output);
EXPECT_GE(target_time, output);
EXPECT_TRUE(ParseRelativeTime("+600", &output));
target_time = base::Time::Now() + base::Seconds(600);
EXPECT_LE(target_time - tol, output);
EXPECT_GE(target_time, output);
EXPECT_TRUE(ParseRelativeTime("-0", &output));
target_time = base::Time::Now();
EXPECT_LE(target_time - tol, output);
EXPECT_GE(target_time, output);
}
TEST_F(RelativeTimeUtilTest, ParseInvalid) {
base::Time output;
EXPECT_FALSE(ParseRelativeTime("60", &output));
EXPECT_FALSE(ParseRelativeTime("+1second", &output));
EXPECT_FALSE(ParseRelativeTime("", &output));
EXPECT_FALSE(ParseRelativeTime(" -60", &output));
}
} // namespace croslog