1378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath/*
2378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * Copyright (C) 2014 The Android Open Source Project
3378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath *
4378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * Licensed under the Apache License, Version 2.0 (the "License");
5378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * you may not use this file except in compliance with the License.
6378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * You may obtain a copy of the License at
7378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath *
8378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath *      http://www.apache.org/licenses/LICENSE-2.0
9378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath *
10378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * Unless required by applicable law or agreed to in writing, software
11378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS,
12378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * See the License for the specific language governing permissions and
14378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath * limitations under the License.
15378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath */
16378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
17378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath#include <androidfw/ResourceTypes.h>
18378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath#include <utils/Log.h>
19378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath#include <utils/String8.h>
20378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
21378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath#include <gtest/gtest.h>
22378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamathnamespace android {
23378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
2431245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, packAndUnpack2LetterLanguage) {
25378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     ResTable_config config;
26378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.packLanguage("en");
27378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
28378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('e', config.language[0]);
29378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('n', config.language[1]);
30378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
31378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     char out[4] = { 1, 1, 1, 1};
32378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.unpackLanguage(out);
33378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('e', out[0]);
34378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('n', out[1]);
35378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[2]);
36378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[3]);
37378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
38378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     memset(out, 1, sizeof(out));
39378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.locale = 0;
40378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.unpackLanguage(out);
41378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[0]);
42378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[1]);
43378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[2]);
44378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[3]);
45378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
46378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
4731245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, packAndUnpack2LetterRegion) {
48378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     ResTable_config config;
49378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.packRegion("US");
50378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
51378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('U', config.country[0]);
52378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('S', config.country[1]);
53378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
54378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     char out[4] = { 1, 1, 1, 1};
55378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.unpackRegion(out);
56378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('U', out[0]);
57378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('S', out[1]);
58378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[2]);
59378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[3]);
60378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
61378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
6231245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, packAndUnpack3LetterLanguage) {
63378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     ResTable_config config;
64378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.packLanguage("eng");
65378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
66378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     // 1-00110-01 101-00100
67f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski     EXPECT_EQ('\x99', config.language[0]);
68f90f2f8dc36e7243b85e0b6a7fd5a590893c827eAdam Lesinski     EXPECT_EQ('\xA4', config.language[1]);
69378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
70378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     char out[4] = { 1, 1, 1, 1};
71378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.unpackLanguage(out);
72378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('e', out[0]);
73378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('n', out[1]);
74378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('g', out[2]);
75378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ(0, out[3]);
76378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
77378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
7831245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, packAndUnpack3LetterLanguageAtOffset16) {
79b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     ResTable_config config;
80b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     config.packLanguage("tgp");
81b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath
82b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // We had a bug where we would accidentally mask
83b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // the 5th bit of both bytes
84b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     //
85b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // packed[0] = 1011 1100
86b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // packed[1] = 1101 0011
87b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     //
88b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // which is equivalent to:
89b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // 1  [0]   [1]   [2]
90b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     // 1-01111-00110-10011
9131245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski     EXPECT_EQ(char(0xbc), config.language[0]);
9231245b4f06003f1c8cd44c31b387c96ab4e282f9Adam Lesinski     EXPECT_EQ(char(0xd3), config.language[1]);
93b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath
94b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     char out[4] = { 1, 1, 1, 1};
95b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     config.unpackLanguage(out);
96b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     EXPECT_EQ('t', out[0]);
97b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     EXPECT_EQ('g', out[1]);
98b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     EXPECT_EQ('p', out[2]);
99b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath     EXPECT_EQ(0, out[3]);
100b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath}
101b2975916224caecfc2fbb84e71ebd625ce6eeb1cNarayan Kamath
10231245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, packAndUnpack3LetterRegion) {
103378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     ResTable_config config;
104378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.packRegion("419");
105378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
106378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     char out[4] = { 1, 1, 1, 1};
107378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     config.unpackRegion(out);
108378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
109378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('4', out[0]);
110378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('1', out[1]);
111378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     EXPECT_EQ('9', out[2]);
112378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
113378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
114378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath/* static */ void fillIn(const char* lang, const char* country,
115378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath        const char* script, const char* variant, ResTable_config* out) {
116378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     memset(out, 0, sizeof(ResTable_config));
117378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     if (lang != NULL) {
118378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath         out->packLanguage(lang);
119378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     }
120378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
121378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     if (country != NULL) {
122378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath         out->packRegion(country);
123378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     }
124378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
125378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     if (script != NULL) {
126378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath         memcpy(out->localeScript, script, 4);
127378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     }
128378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
129378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     if (variant != NULL) {
130378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath         memcpy(out->localeVariant, variant, strlen(variant));
131378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath     }
132378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
133378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
13431245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, IsMoreSpecificThan) {
135378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    ResTable_config l;
136378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    ResTable_config r;
137378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
138378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", NULL, NULL, NULL, &l);
139378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn(NULL, NULL, NULL, NULL, &r);
140378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
141378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(l.isMoreSpecificThan(r));
142378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(r.isMoreSpecificThan(l));
143378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
144378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("eng", NULL, NULL, NULL, &l);
145378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(l.isMoreSpecificThan(r));
146378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(r.isMoreSpecificThan(l));
147378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
148378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("eng", "419", NULL, NULL, &r);
149378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(l.isMoreSpecificThan(r));
150378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(r.isMoreSpecificThan(l));
151378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
152378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", NULL, NULL, NULL, &l);
153378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", NULL, NULL, &r);
154378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(l.isMoreSpecificThan(r));
155378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(r.isMoreSpecificThan(l));
156378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
157378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", NULL, NULL, &l);
158378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", "Latn", NULL, &r);
159378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(l.isMoreSpecificThan(r));
160378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(r.isMoreSpecificThan(l));
161378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
162378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", NULL, NULL, &l);
163378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", NULL, "POSIX", &r);
164378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(l.isMoreSpecificThan(r));
165378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(r.isMoreSpecificThan(l));
166378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
167378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", "Latn", NULL, &l);
168378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    fillIn("en", "US", NULL, "POSIX", &r);
169378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_FALSE(l.isMoreSpecificThan(r));
170378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath    EXPECT_TRUE(r.isMoreSpecificThan(l));
171378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}
172378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
17331245b4f06003f1c8cd44c31b387c96ab4e282f9Adam LesinskiTEST(ConfigLocaleTest, setLocale) {
17491447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    ResTable_config test;
17591447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.setBcp47Locale("en-US");
17691447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('e', test.language[0]);
17791447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('n', test.language[1]);
17891447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('U', test.country[0]);
17991447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('S', test.country[1]);
18091447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ(0, test.localeScript[0]);
18191447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ(0, test.localeVariant[0]);
18291447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath
18391447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.setBcp47Locale("eng-419");
18491447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    char out[4] = { 1, 1, 1, 1};
18591447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.unpackLanguage(out);
18691447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('e', out[0]);
18791447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('n', out[1]);
18891447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('g', out[2]);
18991447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ(0, out[3]);
19091447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    memset(out, 1, 4);
19191447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.unpackRegion(out);
19291447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('4', out[0]);
19391447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('1', out[1]);
19491447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('9', out[2]);
19591447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath
19691447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath
19791447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.setBcp47Locale("en-Latn-419");
19891447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    memset(out, 1, 4);
19991447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('e', test.language[0]);
20091447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('n', test.language[1]);
20191447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath
20291447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ(0, memcmp("Latn", test.localeScript, 4));
20391447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    test.unpackRegion(out);
20491447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('4', out[0]);
20591447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('1', out[1]);
20691447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath    EXPECT_EQ('9', out[2]);
20791447d88f2bdf9c2bf8d1a53570efef6172fba74Narayan Kamath}
208378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath
209378c6775a62d9c461cde51f06c1b14bb014c78fdNarayan Kamath}  // namespace android.
210