Imported Upstream version 58.1
[platform/upstream/icu.git] / source / test / intltest / bytestrietest.cpp
index f5ad2f3..735f330 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright (C) 2016 and later: Unicode, Inc. and others.
+// License & terms of use: http://www.unicode.org/copyright.html
 /*
 *******************************************************************************
 *   Copyright (C) 2010-2014, International Business Machines
@@ -53,6 +55,7 @@ public:
     void TestTruncatingIteratorFromLinearMatchShort();
     void TestTruncatingIteratorFromLinearMatchLong();
     void TestIteratorFromBytes();
+    void TestFailedIterator();
 
     void checkData(const StringAndValue data[], int32_t dataLength);
     void checkData(const StringAndValue data[], int32_t dataLength, UStringTrieBuildOption buildOption);
@@ -105,6 +108,7 @@ void BytesTrieTest::runIndexedTest(int32_t index, UBool exec, const char *&name,
     TESTCASE_AUTO(TestTruncatingIteratorFromLinearMatchShort);
     TESTCASE_AUTO(TestTruncatingIteratorFromLinearMatchLong);
     TESTCASE_AUTO(TestIteratorFromBytes);
+    TESTCASE_AUTO(TestFailedIterator);
     TESTCASE_AUTO_END;
 }
 
@@ -585,6 +589,15 @@ void BytesTrieTest::TestIteratorFromBytes() {
     checkIterator(iter, data, UPRV_LENGTHOF(data));
 }
 
+void BytesTrieTest::TestFailedIterator() {
+    UErrorCode failure = U_ILLEGAL_ARGUMENT_ERROR;
+    BytesTrie::Iterator iter(NULL, 0, failure);
+    StringPiece sp = iter.getString();
+    if (!sp.empty()) {
+        errln("failed iterator returned garbage data");
+    }
+}
+
 void BytesTrieTest::checkData(const StringAndValue data[], int32_t dataLength) {
     logln("checkData(dataLength=%d, fast)", (int)dataLength);
     checkData(data, dataLength, USTRINGTRIE_BUILD_FAST);