1 /*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "utils.h"
18
19 #include "gtest/gtest.h"
20
21 namespace art {
22
23 class UtilsTest : public testing::Test {};
24
TEST_F(UtilsTest,PrettySize)25 TEST_F(UtilsTest, PrettySize) {
26 EXPECT_EQ("1024MB", PrettySize(1 * GB));
27 EXPECT_EQ("2048MB", PrettySize(2 * GB));
28 if (sizeof(size_t) > sizeof(uint32_t)) {
29 EXPECT_EQ("100GB", PrettySize(100 * GB));
30 }
31 EXPECT_EQ("1024KB", PrettySize(1 * MB));
32 EXPECT_EQ("10MB", PrettySize(10 * MB));
33 EXPECT_EQ("100MB", PrettySize(100 * MB));
34 EXPECT_EQ("1024B", PrettySize(1 * KB));
35 EXPECT_EQ("10KB", PrettySize(10 * KB));
36 EXPECT_EQ("100KB", PrettySize(100 * KB));
37 EXPECT_EQ("0B", PrettySize(0));
38 EXPECT_EQ("1B", PrettySize(1));
39 EXPECT_EQ("10B", PrettySize(10));
40 EXPECT_EQ("100B", PrettySize(100));
41 EXPECT_EQ("512B", PrettySize(512));
42 }
43
TEST_F(UtilsTest,Split)44 TEST_F(UtilsTest, Split) {
45 std::vector<std::string> actual;
46 std::vector<std::string> expected;
47
48 expected.clear();
49
50 actual.clear();
51 Split("", ':', &actual);
52 EXPECT_EQ(expected, actual);
53
54 actual.clear();
55 Split(":", ':', &actual);
56 EXPECT_EQ(expected, actual);
57
58 expected.clear();
59 expected.push_back("foo");
60
61 actual.clear();
62 Split(":foo", ':', &actual);
63 EXPECT_EQ(expected, actual);
64
65 actual.clear();
66 Split("foo:", ':', &actual);
67 EXPECT_EQ(expected, actual);
68
69 actual.clear();
70 Split(":foo:", ':', &actual);
71 EXPECT_EQ(expected, actual);
72
73 expected.push_back("bar");
74
75 actual.clear();
76 Split("foo:bar", ':', &actual);
77 EXPECT_EQ(expected, actual);
78
79 actual.clear();
80 Split(":foo:bar", ':', &actual);
81 EXPECT_EQ(expected, actual);
82
83 actual.clear();
84 Split("foo:bar:", ':', &actual);
85 EXPECT_EQ(expected, actual);
86
87 actual.clear();
88 Split(":foo:bar:", ':', &actual);
89 EXPECT_EQ(expected, actual);
90
91 expected.push_back("baz");
92
93 actual.clear();
94 Split("foo:bar:baz", ':', &actual);
95 EXPECT_EQ(expected, actual);
96
97 actual.clear();
98 Split(":foo:bar:baz", ':', &actual);
99 EXPECT_EQ(expected, actual);
100
101 actual.clear();
102 Split("foo:bar:baz:", ':', &actual);
103 EXPECT_EQ(expected, actual);
104
105 actual.clear();
106 Split(":foo:bar:baz:", ':', &actual);
107 EXPECT_EQ(expected, actual);
108 }
109
TEST_F(UtilsTest,GetProcessStatus)110 TEST_F(UtilsTest, GetProcessStatus) {
111 EXPECT_EQ("art_libartbase_", GetProcessStatus("Name"));
112 EXPECT_EQ("R (running)", GetProcessStatus("State"));
113 EXPECT_EQ("<unknown>", GetProcessStatus("tate"));
114 EXPECT_EQ("<unknown>", GetProcessStatus("e"));
115 EXPECT_EQ("<unknown>", GetProcessStatus("InvalidFieldName"));
116 }
117
118 } // namespace art
119