Add locale testing to teeui

Tests that the translations can be successfully rendered in the buffer
given the device configuration.

Test: N/A

Change-Id: Icee92a53480fa4a1fbed7a5e1dfa92c852ed035a
diff --git a/test/Android.bp b/test/Android.bp
index ee8350a..b396b39 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -16,3 +16,24 @@
     ],
     host_supported: true,
 }
+
+cc_library_host_shared {
+    name: "libteeui_localization_rendering_test",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wextra",
+        "-O0",
+    ],
+    export_include_dirs: ["include"],
+    srcs: [
+        "teeui_locale_test.cpp",
+    ],
+    static_libs: [
+        "libteeui_example_layout",
+        "libteeui",
+        "libft2.nodep",
+        "libteeui_localization",
+        "libgtest",
+    ],
+}
diff --git a/test/example_config/README b/test/example_config/README
new file mode 100644
index 0000000..40a024a
--- /dev/null
+++ b/test/example_config/README
@@ -0,0 +1,107 @@
+# Device Configuration for localization_rendering_tests #
+
+## Setup ##
+Include the following three files in a new directory that you would want to run
+your test from. These files would be referred to as the configuration files. 
+* Android.bp
+* TEST_MAPPING
+* test_main.cpp
+
+
+## Android.bp file ##
+Define a new module in the Android.bp file.
+
+The following is a template for the Android.bp file, only the <device name> needs to be replaced.
+
+cc_test_host {
+    name: "system.teeui_localization_rendering_test.<device name>",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wextra",
+        "-O0",
+    ],
+    srcs: [
+        "test_main.cpp",
+    ],
+    shared_libs: [
+        "libbase",
+        "libteeui_localization_rendering_test",
+    ],
+}
+
+## TEST_MAPPING ##
+The TEST_MAPPING file is going to run the test as a postsubmit test with the
+configuration parameters set within this file.
+
+The following is a template for the TEST_MAPPING file. All the flags should be
+configured with the values specific to the device.
+
+{
+  "postsubmit": [
+    {
+      "name": "system.teeui_localization_rendering_test.<device name>",
+      "host" : true,
+      "options": [
+          {
+            "native-test-flag": "--width=<device width in pixels>"
+          },
+          {
+            "native-test-flag": "--height=<device height in pixels>"
+          },
+          {
+            "native-test-flag": "--dp2px=<pixel per density independent pixel (px/dp) ratio of the device. Typically <width in pixels>/412 >"
+          },
+          {
+            "native-test-flag": "--mm2px=<pixel per millimeter (px/mm) ratio>"
+          },
+          {
+            "native-test-flag": "--powerButtonTop=distance from the top of the power button to the top of the screen in mm>"
+          },
+          {
+            "native-test-flag": "--powerButtonBottom=distance from the bottom of the power button to the top of the screen in mm>"
+          },
+          {
+            "native-test-flag": "--volUpButtonTop=<distance from the top of the UP volume button to the top of the screen in mm>"
+          },
+          {
+            "native-test-flag": "--volUpButtonBottom=<distance from the bottom of the UP power button to the top of the screen in mm>"
+          }
+        ]
+    }
+  ]
+}
+
+## test_main.cpp ##
+The current directory contains a test_main.cpp that initiates the localization
+rendering test.
+Make a copy of the cpp file (found in this directory) and place it in the
+test configuration directory you will run the test from.
+
+## Run test ##
+To run the tests against the TEST_MAPPING configurations use the following
+command:
+	atest --test-mapping <config directory>:all
+The <config directory> is where all the configuration files are located.
+
+It is possible to run the test as a binary and pass in configuration
+values as commandline parameters.
+The following command is how to run the test
+in the commandline.
+	atest system.teeui_localization_rendering_test.<device name> -- \
+	--test-arg
+	com.android.tradefed.testtype.HostGTest:native-test-flag:"--width=100"\
+	--test-arg
+	com.android.tradefed.testtype.HostGTest:native-test-flag:"--height=100"\
+	--test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--dp2px=100"\
+	 --test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--mm2px=100"
+	--test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--powerButtonTop=100"\
+	--test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--powerButtonBottom=100"\
+	--test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--volUpButtonTop=100"\
+	 --test-arg
+        com.android.tradefed.testtype.HostGTest:native-test-flag:"--volUpButtonBottom=100"\
diff --git a/test/example_config/test_main.cpp b/test/example_config/test_main.cpp
new file mode 100644
index 0000000..083b0df
--- /dev/null
+++ b/test/example_config/test_main.cpp
@@ -0,0 +1,22 @@
+/*
+ *
+ * Copyright 2020, 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 "teeui_locale_test.h"
+
+int main(int argc, char** argv) {
+    return ::teeui::test::runAllTests(argc, argv);
+}
diff --git a/test/include/teeui_locale_test.h b/test/include/teeui_locale_test.h
new file mode 100644
index 0000000..55e92c6
--- /dev/null
+++ b/test/include/teeui_locale_test.h
@@ -0,0 +1,33 @@
+/*
+ *
+ * Copyright 2020, 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.
+ */
+
+/* Generated by generate_teeui_render_tests.py - DO NOT EDIT */
+
+#ifndef TEEUILOCALETEST_H
+#define TEEUILOCALETEST_H
+
+namespace teeui {
+
+namespace test {
+
+extern int runAllTests(int argc, char** argv);
+
+}  // namespace test
+
+}  // namespace teeui
+
+#endif  // TEEUILOCALETEST_H
diff --git a/test/teeui_locale_test.cpp b/test/teeui_locale_test.cpp
new file mode 100644
index 0000000..1cf47db
--- /dev/null
+++ b/test/teeui_locale_test.cpp
@@ -0,0 +1,1441 @@
+/*
+ *
+ * Copyright 2020, 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.
+ */
+
+/* Generated by generate_teeui_render_tests - DO NOT EDIT */
+
+#include <getopt.h>
+#include <gtest/gtest.h>
+#include <iostream>
+#include <stdio.h>
+#include <stdlib.h>
+#include <teeui/example/teeui.h>
+#include <unistd.h>
+
+#include <teeui_locale_test.h>
+
+#define TeeuiLocaleTest_DO_LOG_DEBUG
+
+namespace teeui {
+
+namespace test {
+
+class TeeuiLocaleTest : public ::testing::Test {
+  public:
+    DeviceInfo device_info;
+
+    static TeeuiLocaleTest* Instance() {
+        static TeeuiLocaleTest* instance = new TeeuiLocaleTest;
+        return instance;
+    }
+
+    void initFromOptions(int argc, char** argv);
+    int runTest(const char* language, bool magnified);
+    void TestBody() {}
+    void createDevice(int widthPx, int heightPx, double dp2px, double mm2px,
+                      double powerButtonTopMm, double powerButtonBottomMm, double volUpButtonTopMm,
+                      double volUpButtonBottomMm);
+};
+
+/*
+ * Configures device with test parameters
+ * widthPx, heightPx : pixel dimension of devices
+ * dp2px : density pixel to pixel
+ * mm2px : millimeter to pixel
+ * powerButtonTopMm : location of the top of the power button in mm
+ * powerButtonBottomMm : location of the bottom of the power button in mm
+ * volUpButtonTopMm : location of the top of the up volume button in mm
+ * volUpButtonBottomMm : location of the bottom of the up power button in mm
+ */
+
+void TeeuiLocaleTest::createDevice(int widthPx, int heightPx, double dp2px, double mm2px,
+                                   double powerButtonTopMm, double powerButtonBottomMm,
+                                   double volUpButtonTopMm, double volUpButtonBottomMm) {
+    DeviceInfo* device_info_ptr = &TeeuiLocaleTest::Instance()->device_info;
+    device_info_ptr->width_ = widthPx;
+    device_info_ptr->height_ = heightPx;
+    device_info_ptr->dp2px_ = dp2px;
+    device_info_ptr->mm2px_ = mm2px;
+    device_info_ptr->powerButtonTopMm_ = powerButtonTopMm;
+    device_info_ptr->powerButtonBottomMm_ = powerButtonBottomMm;
+    device_info_ptr->volUpButtonTopMm_ = volUpButtonTopMm;
+    device_info_ptr->volUpButtonBottomMm_ = volUpButtonBottomMm;
+}
+
+void TeeuiLocaleTest::initFromOptions(int argc, char** argv) {
+
+    uint width = 0, height = 0;
+    double dp2px = 0, mm2px = 0;
+    double powerBottonTopMm = 0, powerButtonBottomMm = 0;
+    double volUpButtonTopMm = 0, volUpButtonBottomMm = 0;
+
+    int option_index = 0;
+    static struct option options[] = {{"width", required_argument, 0, 'w'},
+                                      {"height", required_argument, 0, 'l'},
+                                      {"dp2px", required_argument, 0, 'd'},
+                                      {"mm2px", required_argument, 0, 'm'},
+                                      {"powerButtonTop", required_argument, 0, 't'},
+                                      {"powerButtonBottom", required_argument, 0, 'b'},
+                                      {"volUpButtonTop", required_argument, 0, 'u'},
+                                      {"volUpButtonBottom", required_argument, 0, 'v'},
+                                      {"help", 0, 0, 'h'},
+                                      {"?", 0, 0, '?'},
+                                      {0, 0, 0, 0}};
+    while (true) {
+        int c = getopt_long(argc, argv, "w:l:d:m:t:b:u:v:h?", options, &option_index);
+        if (c == -1) break;
+        double numeric_value = 0;
+        switch (c) {
+        case 'w':
+            width = atoi(optarg);
+            break;
+        case 'l':
+            height = atoi(optarg);
+            break;
+        case 'd':
+            numeric_value = strtod(optarg, NULL);
+            dp2px = numeric_value;
+            break;
+        case 'm':
+            numeric_value = strtod(optarg, NULL);
+            mm2px = numeric_value;
+            break;
+        case 't':
+            numeric_value = strtod(optarg, NULL);
+            powerBottonTopMm = numeric_value;
+            break;
+        case 'b':
+            numeric_value = strtod(optarg, NULL);
+            powerButtonBottomMm = numeric_value;
+            break;
+        case 'u':
+            numeric_value = strtod(optarg, NULL);
+            volUpButtonTopMm = numeric_value;
+            break;
+        case 'v':
+            numeric_value = strtod(optarg, NULL);
+            volUpButtonBottomMm = numeric_value;
+            break;
+        case '?':
+        case 'h':
+            std::cout << "Options:" << std::endl;
+            std::cout << "--width=<device width in pixels>" << std::endl;
+            std::cout << "--height=<device height in pixels>" << std::endl;
+            std::cout << "--dp2px=<pixel per density independent pixel (px/dp) ratio of the "
+                         "device. Typically <width in pixels>/412 >"
+                      << std::endl;
+            std::cout << "--mm2px=<pixel per millimeter (px/mm) ratio>" << std::endl;
+            std::cout << "--powerButtonTop=<distance from the top of the power button to the top "
+                         "of the screen in mm>"
+                      << std::endl;
+            std::cout << "--powerButtonBottom=<distance from the bottom of the power button to the "
+                         "top of the screen in mm>"
+                      << std::endl;
+            std::cout << "--volUpButtonTop=<distance from the top of the UP volume button to the "
+                         "top of the screen in mm>"
+                      << std::endl;
+            std::cout << "--volUpButtonBottom=<distance from the bottom of the UP power button to "
+                         "the top of the screen in mm>"
+                      << std::endl;
+            exit(0);
+        }
+    }
+    createDevice(width, height, dp2px, mm2px, powerBottonTopMm, powerButtonBottomMm,
+                 volUpButtonTopMm, volUpButtonBottomMm);
+}
+
+int TeeuiLocaleTest::runTest(const char* language, bool magnified) {
+    DeviceInfo* device_info_ptr = &TeeuiLocaleTest::Instance()->device_info;
+    selectLanguage(language);
+    setDeviceInfo(*device_info_ptr, magnified);
+    uint32_t w = device_info_ptr->width_;
+    uint32_t h = device_info_ptr->height_;
+    uint32_t linestride = w;
+    uint32_t buffer_size = h * linestride;
+    std::vector<uint32_t> buffer(buffer_size);
+    int error = renderUIIntoBuffer(0, 0, w, h, linestride, buffer.data(), buffer_size);
+    return error;
+}
+
+int runAllTests(int argc, char** argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    ::teeui::test::TeeuiLocaleTest::Instance()->initFromOptions(argc, argv);
+    return RUN_ALL_TESTS();
+}
+
+TEST_F(TeeuiLocaleTest, Test_en) {
+    int error = runTest("en", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_en_M) {
+    int error = runTest("en", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AF) {
+    int error = runTest("af", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AF_M) {
+    int error = runTest("af", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AM) {
+    int error = runTest("am", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AM_M) {
+    int error = runTest("am", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR) {
+    int error = runTest("ar", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_M) {
+    int error = runTest("ar", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_EG) {
+    int error = runTest("ar-EG", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_EG_M) {
+    int error = runTest("ar-EG", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_JO) {
+    int error = runTest("ar-JO", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_JO_M) {
+    int error = runTest("ar-JO", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_MA) {
+    int error = runTest("ar-MA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_MA_M) {
+    int error = runTest("ar-MA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_SA) {
+    int error = runTest("ar-SA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_SA_M) {
+    int error = runTest("ar-SA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_XB) {
+    int error = runTest("ar-XB", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AR_XB_M) {
+    int error = runTest("ar-XB", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AS) {
+    int error = runTest("as", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AS_M) {
+    int error = runTest("as", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AZ) {
+    int error = runTest("az", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_AZ_M) {
+    int error = runTest("az", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BE) {
+    int error = runTest("be", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BE_M) {
+    int error = runTest("be", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BG) {
+    int error = runTest("bg", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BG_M) {
+    int error = runTest("bg", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BN) {
+    int error = runTest("bn", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BN_M) {
+    int error = runTest("bn", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BS) {
+    int error = runTest("bs", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_BS_M) {
+    int error = runTest("bs", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_CA) {
+    int error = runTest("ca", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_CA_M) {
+    int error = runTest("ca", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_CS) {
+    int error = runTest("cs", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_CS_M) {
+    int error = runTest("cs", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DA) {
+    int error = runTest("da", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DA_M) {
+    int error = runTest("da", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE) {
+    int error = runTest("de", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE_M) {
+    int error = runTest("de", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE_AT) {
+    int error = runTest("de-AT", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE_AT_M) {
+    int error = runTest("de-AT", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE_CH) {
+    int error = runTest("de-CH", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_DE_CH_M) {
+    int error = runTest("de-CH", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EL) {
+    int error = runTest("el", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EL_M) {
+    int error = runTest("el", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_AU) {
+    int error = runTest("en-AU", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_AU_M) {
+    int error = runTest("en-AU", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_CA) {
+    int error = runTest("en-CA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_CA_M) {
+    int error = runTest("en-CA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_GB) {
+    int error = runTest("en-GB", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_GB_M) {
+    int error = runTest("en-GB", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_IE) {
+    int error = runTest("en-IE", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_IE_M) {
+    int error = runTest("en-IE", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_IN) {
+    int error = runTest("en-IN", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_IN_M) {
+    int error = runTest("en-IN", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_NZ) {
+    int error = runTest("en-NZ", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_NZ_M) {
+    int error = runTest("en-NZ", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_SG) {
+    int error = runTest("en-SG", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_SG_M) {
+    int error = runTest("en-SG", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_XA) {
+    int error = runTest("en-XA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_XA_M) {
+    int error = runTest("en-XA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_XC) {
+    int error = runTest("en-XC", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_XC_M) {
+    int error = runTest("en-XC", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_ZA) {
+    int error = runTest("en-ZA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EN_ZA_M) {
+    int error = runTest("en-ZA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES) {
+    int error = runTest("es", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_M) {
+    int error = runTest("es", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_419) {
+    int error = runTest("es-419", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_419_M) {
+    int error = runTest("es-419", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_AR) {
+    int error = runTest("es-AR", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_AR_M) {
+    int error = runTest("es-AR", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_BO) {
+    int error = runTest("es-BO", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_BO_M) {
+    int error = runTest("es-BO", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CL) {
+    int error = runTest("es-CL", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CL_M) {
+    int error = runTest("es-CL", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CO) {
+    int error = runTest("es-CO", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CO_M) {
+    int error = runTest("es-CO", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CR) {
+    int error = runTest("es-CR", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_CR_M) {
+    int error = runTest("es-CR", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_DO) {
+    int error = runTest("es-DO", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_DO_M) {
+    int error = runTest("es-DO", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_EC) {
+    int error = runTest("es-EC", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_EC_M) {
+    int error = runTest("es-EC", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_GT) {
+    int error = runTest("es-GT", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_GT_M) {
+    int error = runTest("es-GT", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_HN) {
+    int error = runTest("es-HN", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_HN_M) {
+    int error = runTest("es-HN", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_MX) {
+    int error = runTest("es-MX", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_MX_M) {
+    int error = runTest("es-MX", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_NI) {
+    int error = runTest("es-NI", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_NI_M) {
+    int error = runTest("es-NI", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PA) {
+    int error = runTest("es-PA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PA_M) {
+    int error = runTest("es-PA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PE) {
+    int error = runTest("es-PE", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PE_M) {
+    int error = runTest("es-PE", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PR) {
+    int error = runTest("es-PR", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PR_M) {
+    int error = runTest("es-PR", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PY) {
+    int error = runTest("es-PY", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_PY_M) {
+    int error = runTest("es-PY", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_SV) {
+    int error = runTest("es-SV", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_SV_M) {
+    int error = runTest("es-SV", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_US) {
+    int error = runTest("es-US", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_US_M) {
+    int error = runTest("es-US", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_UY) {
+    int error = runTest("es-UY", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_UY_M) {
+    int error = runTest("es-UY", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_VE) {
+    int error = runTest("es-VE", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ES_VE_M) {
+    int error = runTest("es-VE", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ET) {
+    int error = runTest("et", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ET_M) {
+    int error = runTest("et", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EU) {
+    int error = runTest("eu", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_EU_M) {
+    int error = runTest("eu", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FA) {
+    int error = runTest("fa", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FA_M) {
+    int error = runTest("fa", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FI) {
+    int error = runTest("fi", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FI_M) {
+    int error = runTest("fi", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FIL) {
+    int error = runTest("fil", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FIL_M) {
+    int error = runTest("fil", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR) {
+    int error = runTest("fr", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR_M) {
+    int error = runTest("fr", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR_CA) {
+    int error = runTest("fr-CA", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR_CA_M) {
+    int error = runTest("fr-CA", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR_CH) {
+    int error = runTest("fr-CH", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_FR_CH_M) {
+    int error = runTest("fr-CH", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GL) {
+    int error = runTest("gl", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GL_M) {
+    int error = runTest("gl", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GSW) {
+    int error = runTest("gsw", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GSW_M) {
+    int error = runTest("gsw", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GU) {
+    int error = runTest("gu", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_GU_M) {
+    int error = runTest("gu", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HE) {
+    int error = runTest("he", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HE_M) {
+    int error = runTest("he", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HI) {
+    int error = runTest("hi", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HI_M) {
+    int error = runTest("hi", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HR) {
+    int error = runTest("hr", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HR_M) {
+    int error = runTest("hr", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HU) {
+    int error = runTest("hu", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HU_M) {
+    int error = runTest("hu", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HY) {
+    int error = runTest("hy", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_HY_M) {
+    int error = runTest("hy", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ID) {
+    int error = runTest("id", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ID_M) {
+    int error = runTest("id", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IN) {
+    int error = runTest("in", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IN_M) {
+    int error = runTest("in", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IS) {
+    int error = runTest("is", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IS_M) {
+    int error = runTest("is", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IT) {
+    int error = runTest("it", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IT_M) {
+    int error = runTest("it", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IW) {
+    int error = runTest("iw", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_IW_M) {
+    int error = runTest("iw", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_JA) {
+    int error = runTest("ja", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_JA_M) {
+    int error = runTest("ja", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KA) {
+    int error = runTest("ka", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KA_M) {
+    int error = runTest("ka", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KK) {
+    int error = runTest("kk", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KK_M) {
+    int error = runTest("kk", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KM) {
+    int error = runTest("km", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KM_M) {
+    int error = runTest("km", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KN) {
+    int error = runTest("kn", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KN_M) {
+    int error = runTest("kn", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KO) {
+    int error = runTest("ko", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KO_M) {
+    int error = runTest("ko", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KY) {
+    int error = runTest("ky", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_KY_M) {
+    int error = runTest("ky", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LN) {
+    int error = runTest("ln", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LN_M) {
+    int error = runTest("ln", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LO) {
+    int error = runTest("lo", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LO_M) {
+    int error = runTest("lo", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LT) {
+    int error = runTest("lt", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LT_M) {
+    int error = runTest("lt", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LV) {
+    int error = runTest("lv", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_LV_M) {
+    int error = runTest("lv", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MK) {
+    int error = runTest("mk", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MK_M) {
+    int error = runTest("mk", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ML) {
+    int error = runTest("ml", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ML_M) {
+    int error = runTest("ml", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MN) {
+    int error = runTest("mn", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MN_M) {
+    int error = runTest("mn", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MO) {
+    int error = runTest("mo", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MO_M) {
+    int error = runTest("mo", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MR) {
+    int error = runTest("mr", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MR_M) {
+    int error = runTest("mr", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MS) {
+    int error = runTest("ms", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MS_M) {
+    int error = runTest("ms", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MY) {
+    int error = runTest("my", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_MY_M) {
+    int error = runTest("my", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NB) {
+    int error = runTest("nb", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NB_M) {
+    int error = runTest("nb", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NE) {
+    int error = runTest("ne", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NE_M) {
+    int error = runTest("ne", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NL) {
+    int error = runTest("nl", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NL_M) {
+    int error = runTest("nl", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NO) {
+    int error = runTest("no", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_NO_M) {
+    int error = runTest("no", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_OR) {
+    int error = runTest("or", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_OR_M) {
+    int error = runTest("or", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PA) {
+    int error = runTest("pa", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PA_M) {
+    int error = runTest("pa", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PL) {
+    int error = runTest("pl", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PL_M) {
+    int error = runTest("pl", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT) {
+    int error = runTest("pt", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT_M) {
+    int error = runTest("pt", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT_BR) {
+    int error = runTest("pt-BR", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT_BR_M) {
+    int error = runTest("pt-BR", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT_PT) {
+    int error = runTest("pt-PT", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_PT_PT_M) {
+    int error = runTest("pt-PT", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_RO) {
+    int error = runTest("ro", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_RO_M) {
+    int error = runTest("ro", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_RU) {
+    int error = runTest("ru", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_RU_M) {
+    int error = runTest("ru", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SI) {
+    int error = runTest("si", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SI_M) {
+    int error = runTest("si", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SK) {
+    int error = runTest("sk", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SK_M) {
+    int error = runTest("sk", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SL) {
+    int error = runTest("sl", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SL_M) {
+    int error = runTest("sl", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SQ) {
+    int error = runTest("sq", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SQ_M) {
+    int error = runTest("sq", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SR) {
+    int error = runTest("sr", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SR_M) {
+    int error = runTest("sr", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SR_LATN) {
+    int error = runTest("sr-Latn", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SR_LATN_M) {
+    int error = runTest("sr-Latn", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SV) {
+    int error = runTest("sv", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SV_M) {
+    int error = runTest("sv", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SW) {
+    int error = runTest("sw", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_SW_M) {
+    int error = runTest("sw", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TA) {
+    int error = runTest("ta", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TA_M) {
+    int error = runTest("ta", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TE) {
+    int error = runTest("te", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TE_M) {
+    int error = runTest("te", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TH) {
+    int error = runTest("th", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TH_M) {
+    int error = runTest("th", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TL) {
+    int error = runTest("tl", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TL_M) {
+    int error = runTest("tl", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TR) {
+    int error = runTest("tr", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_TR_M) {
+    int error = runTest("tr", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UK) {
+    int error = runTest("uk", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UK_M) {
+    int error = runTest("uk", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UR) {
+    int error = runTest("ur", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UR_M) {
+    int error = runTest("ur", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UZ) {
+    int error = runTest("uz", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_UZ_M) {
+    int error = runTest("uz", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_VI) {
+    int error = runTest("vi", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_VI_M) {
+    int error = runTest("vi", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH) {
+    int error = runTest("zh", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_M) {
+    int error = runTest("zh", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_CN) {
+    int error = runTest("zh-CN", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_CN_M) {
+    int error = runTest("zh-CN", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_HK) {
+    int error = runTest("zh-HK", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_HK_M) {
+    int error = runTest("zh-HK", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_TW) {
+    int error = runTest("zh-TW", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZH_TW_M) {
+    int error = runTest("zh-TW", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZU) {
+    int error = runTest("zu", false /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+TEST_F(TeeuiLocaleTest, Test_ZU_M) {
+    int error = runTest("zu", true /* magnified */);
+    ASSERT_EQ(error, 0);
+}
+
+}  // namespace test
+
+}  // namespace teeui