parser_unittest
string_util_unittest
version_number_unittest
+ language_tag_validator_unittest
)
SET(DESTINATION_DIR manifest-parser-ut)
parser_unittest.cc)
ADD_EXECUTABLE(string_util_unittest string_util_unittest.cc)
ADD_EXECUTABLE(version_number_unittest version_number_unittest.cc)
+ADD_EXECUTABLE(language_tag_validator_unittest language_tag_validator_unittest.cc)
INSTALL(DIRECTORY test_samples/ DESTINATION ${SHAREDIR}/${DESTINATION_DIR}/test_samples)
TARGET_LINK_LIBRARIES(parser_unittest PUBLIC ${TARGET_LIBNAME_PARSER} ${GTEST_MAIN_LIBRARIES})
TARGET_LINK_LIBRARIES(string_util_unittest PUBLIC ${TARGET_LIBNAME_UTILS} ${GTEST_MAIN_LIBRARIES})
TARGET_LINK_LIBRARIES(version_number_unittest PUBLIC ${TARGET_LIBNAME_UTILS} ${GTEST_MAIN_LIBRARIES})
+TARGET_LINK_LIBRARIES(language_tag_validator_unittest PUBLIC ${TARGET_LIBNAME_UTILS} ${GTEST_MAIN_LIBRARIES})
FOREACH(test ${TESTS})
INSTALL(TARGETS ${test} DESTINATION ${BINDIR}/${DESTINATION_DIR})
--- /dev/null
+// Copyright (c) 2015 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by a apache-2.0 license that can be
+// found in the LICENSE file.
+#include <gtest/gtest.h>
+
+#include <string>
+
+#include "manifest_parser/utils/language_tag_validator.h"
+
+#define TEST_VALID(Name, Sequence) \
+ TEST_F(LanguageTagValidatorTest, LangTagValid_ ## Name) { \
+ std::string langTag = std::string(Sequence); \
+ ASSERT_TRUE(ValidateLanguageTag(langTag)); \
+ } \
+
+#define TEST_FAIL(Name, Sequence) \
+ TEST_F(LanguageTagValidatorTest, LangTagFail_ ## Name) { \
+ std::string langTag = std::string(Sequence); \
+ ASSERT_FALSE(ValidateLanguageTag(langTag)); \
+ } \
+
+namespace utils {
+namespace w3c_languages {
+
+class LanguageTagValidatorTest : public testing::Test { };
+
+TEST_FAIL(Empty, "");
+TEST_FAIL(DashAtTheEnd, "en-");
+
+TEST_VALID(MainLanguage, "en");
+TEST_FAIL(MainLanguageNotExist, "dsa");
+
+TEST_VALID(ExtLang, "zh-yue");
+TEST_FAIL(ExtLangNotExsit, "en-enb");
+
+TEST_VALID(Script, "ru-Latn");
+TEST_FAIL(ScriptNotExist, "en-Kerd");
+
+TEST_VALID(Region, "en-GB");
+TEST_FAIL(RegionNotExist, "en-EL");
+
+TEST_VALID(Variant, "zh-Latn-TW-pinyin");
+TEST_FAIL(VariantNotExist, "sl-rozaj-biske-1995");
+
+TEST_VALID(Extension, "de-DE-u-co-phonebk");
+TEST_FAIL(ExtensionNotProvided_1, "de-DE-z");
+TEST_FAIL(ExtensionNotProvided_2, "de-DE-z-a-fasd");
+TEST_FAIL(ExtensionTwoTimesTheSame, "de-DE-u-adfa-u-aaaa");
+TEST_VALID(ExtensionMoreExts, "de-DE-u-aaa-a-faf-b-aaaa");
+TEST_FAIL(ExtensionTooLong, "de-DE-u-abcdefghijklmnopqrstuwxyz");
+
+TEST_VALID(PrivateUse, "en-US-x-twain");
+TEST_FAIL(PrivateUseMoreThanOne, "en-US-x-twain-x-bbe");
+TEST_FAIL(PrivateUseNotProvided, "en-US-x");
+TEST_FAIL(PrivateUseTooLong, "en-US-x-abcdefghijklmnopqrstuwxyz");
+TEST_FAIL(PrivateUseExtAfter, "en-US-x-abcde-a-abcd");
+TEST_FAIL(PrivateUseMoreUsetag, "en-US-x-twain-twain");
+
+
+} // namespace w3c_languages
+} // namespace utils