Loading minui/minui.h +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ int ev_get_epollfd(); // Resources // bool matches_locale(const char* prefix, const char* locale); // res_create_*_surface() functions return 0 if no error, else // negative. // Loading minui/resources.cpp +8 −13 Original line number Diff line number Diff line Loading @@ -370,21 +370,16 @@ int res_create_alpha_surface(const char* name, GRSurface** pSurface) { return result; } static int matches_locale(const char* loc, const char* locale) { if (locale == NULL) return 0; // This function tests if a locale string stored in PNG (prefix) matches // the locale string provided by the system (locale). bool matches_locale(const char* prefix, const char* locale) { if (locale == NULL) return false; if (strcmp(loc, locale) == 0) return 1; // Return true if the whole string of prefix matches the top part of // locale. For instance, prefix == "en" matches locale == "en_US"; // and prefix == "zh_CN" matches locale == "zh_CN_#Hans". // if loc does *not* have an underscore, and it matches the start // of locale, and the next character in locale *is* an underscore, // that's a match. For instance, loc == "en" matches locale == // "en_US". int i; for (i = 0; loc[i] != 0 && loc[i] != '_'; ++i); if (loc[i] == '_') return 0; return (strncmp(locale, loc, i) == 0 && locale[i] == '_'); return (strncmp(prefix, locale, strlen(prefix)) == 0); } int res_create_localized_alpha_surface(const char* name, Loading tests/Android.mk +5 −1 Original line number Diff line number Diff line Loading @@ -21,9 +21,13 @@ include $(CLEAR_VARS) LOCAL_CLANG := true LOCAL_MODULE := recovery_unit_test LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_STATIC_LIBRARIES := libverifier LOCAL_STATIC_LIBRARIES := \ libverifier \ libminui LOCAL_SRC_FILES := unit/asn1_decoder_test.cpp LOCAL_SRC_FILES += unit/recovery_test.cpp LOCAL_SRC_FILES += unit/locale_test.cpp LOCAL_C_INCLUDES := bootable/recovery LOCAL_SHARED_LIBRARIES := liblog include $(BUILD_NATIVE_TEST) Loading tests/unit/locale_test.cpp 0 → 100644 +29 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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 <gtest/gtest.h> #include "minui/minui.h" TEST(LocaleTest, Misc) { EXPECT_TRUE(matches_locale("zh_CN", "zh_CN_#Hans")); EXPECT_TRUE(matches_locale("zh", "zh_CN_#Hans")); EXPECT_FALSE(matches_locale("zh_HK", "zh_CN_#Hans")); EXPECT_TRUE(matches_locale("en_GB", "en_GB")); EXPECT_TRUE(matches_locale("en", "en_GB")); EXPECT_FALSE(matches_locale("en_GB", "en")); EXPECT_FALSE(matches_locale("en_GB", "en_US")); } Loading
minui/minui.h +2 −0 Original line number Diff line number Diff line Loading @@ -84,6 +84,8 @@ int ev_get_epollfd(); // Resources // bool matches_locale(const char* prefix, const char* locale); // res_create_*_surface() functions return 0 if no error, else // negative. // Loading
minui/resources.cpp +8 −13 Original line number Diff line number Diff line Loading @@ -370,21 +370,16 @@ int res_create_alpha_surface(const char* name, GRSurface** pSurface) { return result; } static int matches_locale(const char* loc, const char* locale) { if (locale == NULL) return 0; // This function tests if a locale string stored in PNG (prefix) matches // the locale string provided by the system (locale). bool matches_locale(const char* prefix, const char* locale) { if (locale == NULL) return false; if (strcmp(loc, locale) == 0) return 1; // Return true if the whole string of prefix matches the top part of // locale. For instance, prefix == "en" matches locale == "en_US"; // and prefix == "zh_CN" matches locale == "zh_CN_#Hans". // if loc does *not* have an underscore, and it matches the start // of locale, and the next character in locale *is* an underscore, // that's a match. For instance, loc == "en" matches locale == // "en_US". int i; for (i = 0; loc[i] != 0 && loc[i] != '_'; ++i); if (loc[i] == '_') return 0; return (strncmp(locale, loc, i) == 0 && locale[i] == '_'); return (strncmp(prefix, locale, strlen(prefix)) == 0); } int res_create_localized_alpha_surface(const char* name, Loading
tests/Android.mk +5 −1 Original line number Diff line number Diff line Loading @@ -21,9 +21,13 @@ include $(CLEAR_VARS) LOCAL_CLANG := true LOCAL_MODULE := recovery_unit_test LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk LOCAL_STATIC_LIBRARIES := libverifier LOCAL_STATIC_LIBRARIES := \ libverifier \ libminui LOCAL_SRC_FILES := unit/asn1_decoder_test.cpp LOCAL_SRC_FILES += unit/recovery_test.cpp LOCAL_SRC_FILES += unit/locale_test.cpp LOCAL_C_INCLUDES := bootable/recovery LOCAL_SHARED_LIBRARIES := liblog include $(BUILD_NATIVE_TEST) Loading
tests/unit/locale_test.cpp 0 → 100644 +29 −0 Original line number Diff line number Diff line /* * Copyright (C) 2016 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 <gtest/gtest.h> #include "minui/minui.h" TEST(LocaleTest, Misc) { EXPECT_TRUE(matches_locale("zh_CN", "zh_CN_#Hans")); EXPECT_TRUE(matches_locale("zh", "zh_CN_#Hans")); EXPECT_FALSE(matches_locale("zh_HK", "zh_CN_#Hans")); EXPECT_TRUE(matches_locale("en_GB", "en_GB")); EXPECT_TRUE(matches_locale("en", "en_GB")); EXPECT_FALSE(matches_locale("en_GB", "en")); EXPECT_FALSE(matches_locale("en_GB", "en_US")); }