diff options
Diffstat (limited to 'cpp/test/language_test.cc')
-rw-r--r-- | cpp/test/language_test.cc | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/cpp/test/language_test.cc b/cpp/test/language_test.cc new file mode 100644 index 0000000..197459e --- /dev/null +++ b/cpp/test/language_test.cc @@ -0,0 +1,62 @@ +// Copyright (C) 2014 Google Inc. +// +// 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 "language.h" + +#include <string> + +#include <gtest/gtest.h> + +namespace { + +using i18n::addressinput::Language; + +struct LanguageTestCase { + LanguageTestCase(const std::string& input_language_tag, + const std::string& expected_language_tag, + const std::string& expected_base_language, + bool expected_has_latin_script) + : input_language_tag(input_language_tag), + expected_language_tag(expected_language_tag), + expected_base_language(expected_base_language), + expected_has_latin_script(expected_has_latin_script) {} + + ~LanguageTestCase() {} + + const std::string input_language_tag; + const std::string expected_language_tag; + const std::string expected_base_language; + const bool expected_has_latin_script; +}; + +class LanguageTest : public testing::TestWithParam<LanguageTestCase> {}; + +TEST_P(LanguageTest, ExtractedDataIsCorrect) { + Language language(GetParam().input_language_tag); + EXPECT_EQ(GetParam().expected_language_tag, language.tag); + EXPECT_EQ(GetParam().expected_base_language, language.base); + EXPECT_EQ(GetParam().expected_has_latin_script, language.has_latin_script); +} + +INSTANTIATE_TEST_CASE_P( + LanguageTestCases, LanguageTest, + testing::Values( + LanguageTestCase("", "", "", false), + LanguageTestCase("en", "en", "en", false), + LanguageTestCase("zh-Latn-CN", "zh-Latn-CN", "zh", true), + LanguageTestCase("zh-cmn-Latn-CN", "zh-cmn-Latn-CN", "zh", true), + LanguageTestCase("zh-Hans", "zh-Hans", "zh", false), + LanguageTestCase("en_GB", "en-GB", "en", false))); + +} // namespace |