TestCases for LanguageTag 96/85296/2
authorPiotr Ganicz <p.ganicz@samsung.com>
Wed, 24 Aug 2016 08:10:24 +0000 (10:10 +0200)
committerTomasz Iwanek <t.iwanek@samsung.com>
Wed, 24 Aug 2016 12:21:32 +0000 (05:21 -0700)
Change-Id: I255074fafdd3a7de97c567caec0bb36e0903abd1

src/unit_tests/CMakeLists.txt
src/unit_tests/language_tag_validator_unittest.cc [new file with mode: 0644]

index 3ee699c03f12b44071ebee44a96680525a2b0c85..9b0a962a38fe257f97114c95811940226536e1ae 100644 (file)
@@ -7,6 +7,7 @@ SET(TESTS
   parser_unittest
   string_util_unittest
   version_number_unittest
+  language_tag_validator_unittest
 )
 SET(DESTINATION_DIR manifest-parser-ut)
 
@@ -23,6 +24,7 @@ ADD_EXECUTABLE(parser_unittest
                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)
 
@@ -46,6 +48,7 @@ TARGET_LINK_LIBRARIES(manifest_handler_unittest PUBLIC ${TARGET_LIBNAME_PARSER}
 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})
diff --git a/src/unit_tests/language_tag_validator_unittest.cc b/src/unit_tests/language_tag_validator_unittest.cc
new file mode 100644 (file)
index 0000000..75ef802
--- /dev/null
@@ -0,0 +1,61 @@
+// 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