string_util_unittest
version_number_unittest
language_tag_validator_unittest
+ iri_util_unittest
)
SET(DESTINATION_DIR manifest-parser-ut)
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)
+ADD_EXECUTABLE(iri_util_unittest iri_util_unittest.cc)
INSTALL(DIRECTORY test_samples/ DESTINATION ${SHAREDIR}/${DESTINATION_DIR}/test_samples)
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})
+TARGET_LINK_LIBRARIES(iri_util_unittest PUBLIC ${TARGET_LIBNAME_UTILS} ${GTEST_MAIN_LIBRARIES})
FOREACH(test ${TESTS})
INSTALL(TARGETS ${test} DESTINATION ${BINDIR}/${DESTINATION_DIR})
--- /dev/null
+// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
+// Use of this source code is governed by an apache 2.0 license that can be
+// found in the LICENSE file.
+
+#include <gtest/gtest.h>
+
+#include <string>
+
+#include "manifest_parser/utils/iri_util.h"
+
+#define TEST_VALID(Name, Sequence) \
+ TEST_F(IriUtilTest, IriUtilValid_ ## Name) { \
+ std::string iri = std::string(Sequence); \
+ ASSERT_TRUE(IsValidIRI(iri)) << iri; \
+ }
+
+#define TEST_FAIL(Name, Sequence) \
+ TEST_F(IriUtilTest, IriNotValid_ ## Name) { \
+ std::string iri = std::string(Sequence); \
+ ASSERT_FALSE(IsValidIRI(iri)) << iri; \
+ }
+
+#define TEST_WRAP_VALID(Name, Sequence) \
+ TEST_F(IriUtilTest, IriWarpValid_ ## Name) { \
+ std::string iri = std::string(Sequence); \
+ ASSERT_TRUE(IsValidWarpIRI(iri)) << iri; \
+ }
+
+#define TEST_WRAP_FAIL(Name, Sequence) \
+ TEST_F(IriUtilTest, IriWarpNotValid_ ## Name) { \
+ std::string iri = std::string(Sequence); \
+ ASSERT_FALSE(IsValidWarpIRI(iri)) << iri; \
+ }
+
+namespace parser {
+namespace utils {
+
+class IriUtilTest : public testing::Test { };
+
+TEST_FAIL(TC_1, "");
+TEST_VALID(TC_2, "ab1+-.://a1-._~%xA0%AB/a1-._~%xA0:@asdf%AB");
+TEST_VALID(TC_3, "http://www.example.com"
+ "/foobar/foo?bar");
+TEST_VALID(TC_4, "http://:300");
+TEST_VALID(TC_5, "http:///");
+TEST_VALID(TC_6, "http:///?\?/?#??..ab1+-.");
+TEST_VALID(TC_7, "http:/");
+TEST_VALID(TC_8, "ftp:abv");
+TEST_VALID(TC_9, "ftp:");
+TEST_VALID(TC_10, "ftp:/a////");
+TEST_FAIL(TC_11, "ftp");
+TEST_VALID(TC_12, "ftp://[2001:0db8:0000:0000:0000:0000:1428:57ab]:300");
+TEST_VALID(TC_13, "ftp://[2001:0db8::1428:57ab]:300");
+
+TEST_WRAP_FAIL(EmptyScheme, "://asdfa.com");
+TEST_WRAP_VALID(ValidScheme, "http://asda.com");
+TEST_WRAP_FAIL(EmptyHostWrap, "http://:30");
+TEST_WRAP_VALID(ValidHost, "http://asas.com:30");
+TEST_WRAP_FAIL(HasIuserinfo, "http://user@example.com:300");
+
+} // namespace utils
+} // namespace parser