1 /*
2  * Copyright (C) 2015 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 "minikin/FontFamily.h"
18 
19 #include <gtest/gtest.h>
20 
21 #include "minikin/LocaleList.h"
22 
23 #include "LocaleListCache.h"
24 #include "MinikinInternal.h"
25 
26 namespace minikin {
27 
TEST(LocaleListCacheTest,getId)28 TEST(LocaleListCacheTest, getId) {
29     EXPECT_NE(0UL, registerLocaleList("en"));
30     EXPECT_NE(0UL, registerLocaleList("jp"));
31     EXPECT_NE(0UL, registerLocaleList("en,zh-Hans"));
32 
33     EXPECT_EQ(0UL, LocaleListCache::getId(""));
34 
35     EXPECT_EQ(LocaleListCache::getId("en"), LocaleListCache::getId("en"));
36     EXPECT_NE(LocaleListCache::getId("en"), LocaleListCache::getId("jp"));
37 
38     EXPECT_EQ(LocaleListCache::getId("en,zh-Hans"), LocaleListCache::getId("en,zh-Hans"));
39     EXPECT_NE(LocaleListCache::getId("en,zh-Hans"), LocaleListCache::getId("zh-Hans,en"));
40     EXPECT_NE(LocaleListCache::getId("en,zh-Hans"), LocaleListCache::getId("jp"));
41     EXPECT_NE(LocaleListCache::getId("en,zh-Hans"), LocaleListCache::getId("en"));
42     EXPECT_NE(LocaleListCache::getId("en,zh-Hans"), LocaleListCache::getId("en,zh-Hant"));
43 }
44 
TEST(LocaleListCacheTest,getById)45 TEST(LocaleListCacheTest, getById) {
46     uint32_t enLangId = LocaleListCache::getId("en");
47     uint32_t jpLangId = LocaleListCache::getId("jp");
48     Locale english = LocaleListCache::getById(enLangId)[0];
49     Locale japanese = LocaleListCache::getById(jpLangId)[0];
50 
51     const LocaleList& defLangs = LocaleListCache::getById(0);
52     EXPECT_TRUE(defLangs.empty());
53 
54     const LocaleList& locales = LocaleListCache::getById(LocaleListCache::getId("en"));
55     ASSERT_EQ(1UL, locales.size());
56     EXPECT_EQ(english, locales[0]);
57 
58     const LocaleList& locales2 = LocaleListCache::getById(LocaleListCache::getId("en,jp"));
59     ASSERT_EQ(2UL, locales2.size());
60     EXPECT_EQ(english, locales2[0]);
61     EXPECT_EQ(japanese, locales2[1]);
62 }
63 
64 }  // namespace minikin
65