blob: ab8627fa7d2ed8a9d06037f056cc3be2968d2d13 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include "utils.h"
#include "stl_util.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
namespace art {
class UtilsTest : public testing::Test {};
TEST_F(UtilsTest, PrettySize) {
EXPECT_EQ("1024MB", PrettySize(1 * GB));
EXPECT_EQ("2048MB", PrettySize(2 * GB));
if (sizeof(size_t) > sizeof(uint32_t)) {
EXPECT_EQ("100GB", PrettySize(100 * GB));
}
EXPECT_EQ("1024KB", PrettySize(1 * MB));
EXPECT_EQ("10MB", PrettySize(10 * MB));
EXPECT_EQ("100MB", PrettySize(100 * MB));
EXPECT_EQ("1024B", PrettySize(1 * KB));
EXPECT_EQ("10KB", PrettySize(10 * KB));
EXPECT_EQ("100KB", PrettySize(100 * KB));
EXPECT_EQ("0B", PrettySize(0));
EXPECT_EQ("1B", PrettySize(1));
EXPECT_EQ("10B", PrettySize(10));
EXPECT_EQ("100B", PrettySize(100));
EXPECT_EQ("512B", PrettySize(512));
}
void Split(const char* arr, char s, std::vector<std::string_view>* sv) {
Split<std::string_view>(std::string_view(arr), s, sv);
}
TEST_F(UtilsTest, Split) {
std::vector<std::string_view> actual;
std::vector<std::string_view> expected;
expected.clear();
actual.clear();
Split("", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":", ':', &actual);
EXPECT_EQ(expected, actual);
expected.clear();
expected.push_back("foo");
actual.clear();
Split(":foo", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split("foo:", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":foo:", ':', &actual);
EXPECT_EQ(expected, actual);
expected.push_back("bar");
actual.clear();
Split("foo:bar", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":foo:bar", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split("foo:bar:", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":foo:bar:", ':', &actual);
EXPECT_EQ(expected, actual);
expected.push_back("baz");
actual.clear();
Split("foo:bar:baz", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":foo:bar:baz", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split("foo:bar:baz:", ':', &actual);
EXPECT_EQ(expected, actual);
actual.clear();
Split(":foo:bar:baz:", ':', &actual);
EXPECT_EQ(expected, actual);
}
TEST_F(UtilsTest, GetProcessStatus) {
EXPECT_THAT(GetProcessStatus("Name"),
testing::AnyOf(
"art_libartbase_", // Test binary name: `art_libartbase_test`.
"art_standalone_")); // Test binary name: `art_standalone_libartbase_test`.
EXPECT_EQ("R (running)", GetProcessStatus("State"));
EXPECT_EQ("<unknown>", GetProcessStatus("tate"));
EXPECT_EQ("<unknown>", GetProcessStatus("e"));
EXPECT_EQ("<unknown>", GetProcessStatus("InvalidFieldName"));
}
TEST_F(UtilsTest, StringSplit) {
auto range = SplitString("[ab[c[[d[e[", '[');
auto it = range.begin();
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "ab");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "c");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "d");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "e");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "");
EXPECT_TRUE(it == range.end());
}
TEST_F(UtilsTest, StringSplit2) {
auto range = SplitString("ab[c[[d[e", '[');
auto it = range.begin();
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "ab");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "c");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "d");
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "e");
EXPECT_TRUE(it == range.end());
}
TEST_F(UtilsTest, StringSplit3) {
auto range = SplitString("", '[');
auto it = range.begin();
EXPECT_FALSE(it == range.end());
EXPECT_EQ(*it++, "");
EXPECT_TRUE(it == range.end());
}
} // namespace art