blob: 3f2e96190273c23fdf9728e8fb9697343a3c70f6 [file] [log] [blame] [edit]
// Copyright 2012 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "power_manager/common/util.h"
#include <limits>
#include <string>
#include <base/files/file_path.h>
#include <gtest/gtest.h>
namespace power_manager::util {
namespace {
// Creates a TimeDelta and returns TimeDeltaToString()'s output.
std::string RunTimeDeltaToString(int hours, int minutes, int seconds) {
return TimeDeltaToString(
base::Seconds(hours * 3600 + minutes * 60 + seconds));
}
} // namespace
TEST(UtilTest, TimeDeltaToString) {
EXPECT_EQ("3h23m13s", RunTimeDeltaToString(3, 23, 13));
EXPECT_EQ("47m45s", RunTimeDeltaToString(0, 47, 45));
EXPECT_EQ("7s", RunTimeDeltaToString(0, 0, 7));
EXPECT_EQ("0s", RunTimeDeltaToString(0, 0, 0));
EXPECT_EQ("13h17s", RunTimeDeltaToString(13, 0, 17));
EXPECT_EQ("8h59m", RunTimeDeltaToString(8, 59, 0));
EXPECT_EQ("5m33s", RunTimeDeltaToString(0, 5, 33));
EXPECT_EQ("5h", RunTimeDeltaToString(5, 0, 0));
}
TEST(UtilTest, JoinPaths) {
EXPECT_EQ("", JoinPaths({}, ","));
EXPECT_EQ("/foo/bar", JoinPaths({base::FilePath("/foo/bar")}, ","));
EXPECT_EQ("/a,/b,/c", JoinPaths({base::FilePath("/a"), base::FilePath("/b"),
base::FilePath("/c")},
","));
}
TEST(UtilTest, ClampPercent) {
// Inside the range [0, 100].
EXPECT_EQ(ClampPercent(0.0), 0.0);
EXPECT_EQ(ClampPercent(50.0), 50.0);
EXPECT_EQ(ClampPercent(100.0), 100.0);
// Outside the range [0, 100].
EXPECT_EQ(ClampPercent(10000.0), 100.0);
EXPECT_EQ(ClampPercent(101.0), 100.0);
EXPECT_EQ(ClampPercent(-1.0), 0.0);
EXPECT_EQ(ClampPercent(-1000.0), 0.0);
// Special double numbers.
EXPECT_EQ(ClampPercent(std::numeric_limits<double>::infinity()), 100.0);
EXPECT_EQ(ClampPercent(-std::numeric_limits<double>::infinity()), 0.0);
EXPECT_EQ(ClampPercent(std::nan("1")), 0.0);
}
} // namespace power_manager::util