Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: source/test/cintltst/reapits.c

Issue 1621843002: ICU 56 update step 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/icu.git@561
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « source/test/cintltst/nucnvtst.c ('k') | source/test/cintltst/spooftest.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /******************************************************************** 1 /********************************************************************
2 * COPYRIGHT: 2 * COPYRIGHT:
3 * Copyright (c) 2004-2014, International Business Machines Corporation and 3 * Copyright (c) 2004-2015, International Business Machines Corporation and
4 * others. All Rights Reserved. 4 * others. All Rights Reserved.
5 ********************************************************************/ 5 ********************************************************************/
6 /******************************************************************************* * 6 /******************************************************************************* *
7 * 7 *
8 * File reapits.c 8 * File reapits.c
9 * 9 *
10 ******************************************************************************** */ 10 ******************************************************************************** */
11 /*C API TEST FOR Regular Expressions */ 11 /*C API TEST FOR Regular Expressions */
12 /** 12 /**
13 * This is an API test for ICU regular expressions in C. It doesn't test very many cases, and doesn't 13 * This is an API test for ICU regular expressions in C. It doesn't test very many cases, and doesn't
(...skipping 1001 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 bufCap = UPRV_LENGTHOF(buf); 1015 bufCap = UPRV_LENGTHOF(buf);
1016 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status); 1016 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status);
1017 TEST_ASSERT_SUCCESS(status); 1017 TEST_ASSERT_SUCCESS(status);
1018 TEST_ASSERT_STRING("some other", buf, TRUE); 1018 TEST_ASSERT_STRING("some other", buf, TRUE);
1019 1019
1020 /* Match has \u \U escapes */ 1020 /* Match has \u \U escapes */
1021 uregex_find(re, 0, &status); 1021 uregex_find(re, 0, &status);
1022 TEST_ASSERT_SUCCESS(status); 1022 TEST_ASSERT_SUCCESS(status);
1023 bufPtr = buf; 1023 bufPtr = buf;
1024 bufCap = UPRV_LENGTHOF(buf); 1024 bufCap = UPRV_LENGTHOF(buf);
1025 u_uastrncpy(repl, "abc\\u0041\\U00000042 \\\\ $ \\abc", UPRV_LENGTHOF(re pl)); 1025 u_uastrncpy(repl, "abc\\u0041\\U00000042 \\\\ \\$ \\abc", UPRV_LENGTHOF( repl));
1026 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status); 1026 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status);
1027 TEST_ASSERT_SUCCESS(status); 1027 TEST_ASSERT_SUCCESS(status);
1028 TEST_ASSERT_STRING("abcAB \\ $ abc", buf, TRUE); 1028 TEST_ASSERT_STRING("abcAB \\ $ abc", buf, TRUE);
1029 1029
1030 /* Bug 6813, parameter check of NULL destCapacity; crashed before fix. * / 1030 /* Bug 6813, parameter check of NULL destCapacity; crashed before fix. * /
1031 status = U_ZERO_ERROR; 1031 status = U_ZERO_ERROR;
1032 uregex_find(re, 0, &status); 1032 uregex_find(re, 0, &status);
1033 TEST_ASSERT_SUCCESS(status); 1033 TEST_ASSERT_SUCCESS(status);
1034 bufPtr = buf; 1034 bufPtr = buf;
1035 status = U_BUFFER_OVERFLOW_ERROR; 1035 status = U_BUFFER_OVERFLOW_ERROR;
(...skipping 711 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 TEST_ASSERT_SUCCESS(status); 1747 TEST_ASSERT_SUCCESS(status);
1748 1748
1749 result = uregex_findNext(re, &status); 1749 result = uregex_findNext(re, &status);
1750 TEST_ASSERT(result == FALSE); 1750 TEST_ASSERT(result == FALSE);
1751 TEST_ASSERT_SUCCESS(status); 1751 TEST_ASSERT_SUCCESS(status);
1752 1752
1753 uregex_close(re); 1753 uregex_close(re);
1754 } 1754 }
1755 1755
1756 /* 1756 /*
1757 * group() 1757 * groupUText()
1758 */ 1758 */
1759 { 1759 {
1760 UChar text1[80]; 1760 UChar text1[80];
1761 UText *actual; 1761 UText *actual;
1762 UBool result; 1762 UBool result;
1763 1763 int64_t groupLen = 0;
1764 const char str_abcinteriordef[] = { 0x61, 0x62, 0x63, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x20, 0x64, 0x65, 0x66, 0x00 }; /* abc inter ior def */ 1764 UChar groupBuf[20];
1765 const char str_interior[] = { 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x69, 0x6f, 0x72, 0x20, 0x00 }; /* ' interior ' */
1766
1767 1765
1768 u_uastrncpy(text1, "noise abc interior def, and this is off the end", U PRV_LENGTHOF(text1)); 1766 u_uastrncpy(text1, "noise abc interior def, and this is off the end", U PRV_LENGTHOF(text1));
1769 1767
1770 status = U_ZERO_ERROR; 1768 status = U_ZERO_ERROR;
1771 re = uregex_openC("abc(.*?)def", 0, NULL, &status); 1769 re = uregex_openC("abc(.*?)def", 0, NULL, &status);
1772 TEST_ASSERT_SUCCESS(status); 1770 TEST_ASSERT_SUCCESS(status);
1773 1771
1774 uregex_setText(re, text1, -1, &status); 1772 uregex_setText(re, text1, -1, &status);
1775 result = uregex_find(re, 0, &status); 1773 result = uregex_find(re, 0, &status);
1776 TEST_ASSERT(result==TRUE); 1774 TEST_ASSERT(result==TRUE);
1777 1775
1778 /* Capture Group 0, the full match. Should succeed. */
1779 status = U_ZERO_ERROR;
1780 actual = uregex_groupUTextDeep(re, 0, NULL, &status);
1781 TEST_ASSERT_SUCCESS(status);
1782 TEST_ASSERT_UTEXT(str_abcinteriordef, actual);
1783 utext_close(actual);
1784
1785 /* Capture Group 0 with shallow clone API. Should succeed. */ 1776 /* Capture Group 0 with shallow clone API. Should succeed. */
1786 status = U_ZERO_ERROR; 1777 status = U_ZERO_ERROR;
1787 { 1778 actual = uregex_groupUText(re, 0, NULL, &groupLen, &status);
1788 int64_t group_len; 1779 TEST_ASSERT_SUCCESS(status);
1789 int32_t len16;
1790 UErrorCode shallowStatus = U_ZERO_ERROR;
1791 int64_t nativeIndex;
1792 UChar *groupChars;
1793 UText groupText = UTEXT_INITIALIZER;
1794 1780
1795 actual = uregex_groupUText(re, 0, NULL, &group_len, &status); 1781 TEST_ASSERT(utext_getNativeIndex(actual) == 6); /* index of "abc " with in "noise abc ..." */
1796 TEST_ASSERT_SUCCESS(status); 1782 TEST_ASSERT(groupLen == 16); /* length of "abc interior def" */
1783 utext_extract(actual, 6 /*start index */, 6+16 /*limit index*/, groupBuf , sizeof(groupBuf), &status);
1797 1784
1798 nativeIndex = utext_getNativeIndex(actual); 1785 TEST_ASSERT_STRING("abc interior def", groupBuf, TRUE);
1799 /* Following returns U_INDEX_OUTOFBOUNDS_ERROR... looks like a bug in ucstrFuncs UTextFuncs [utext.cpp] */
1800 /* len16 = utext_extract(actual, nativeIndex, nativeIndex + group_l en, NULL, 0, &shallowStatus); */
1801 len16 = (int32_t)group_len;
1802
1803 groupChars = (UChar *)malloc(sizeof(UChar)*(len16+1));
1804 utext_extract(actual, nativeIndex, nativeIndex + group_len, groupCha rs, len16+1, &shallowStatus);
1805
1806 utext_openUChars(&groupText, groupChars, len16, &shallowStatus);
1807
1808 TEST_ASSERT_UTEXT(str_abcinteriordef, &groupText);
1809 utext_close(&groupText);
1810 free(groupChars);
1811 }
1812 utext_close(actual); 1786 utext_close(actual);
1813 1787
1814 /* Capture group #1. Should succeed. */ 1788 /* Capture group #1. Should succeed. */
1815 status = U_ZERO_ERROR; 1789 status = U_ZERO_ERROR;
1816 actual = uregex_groupUTextDeep(re, 1, NULL, &status); 1790
1791 actual = uregex_groupUText(re, 1, NULL, &groupLen, &status);
1817 TEST_ASSERT_SUCCESS(status); 1792 TEST_ASSERT_SUCCESS(status);
1818 TEST_ASSERT_UTEXT(str_interior, actual); 1793 TEST_ASSERT(9 == utext_getNativeIndex(actual)); /* index of " interio r " within "noise abc interior def ... " */
1794 /* (within the str ing text1) */
1795 TEST_ASSERT(10 == groupLen); /* length of " interi or " */
1796 utext_extract(actual, 9 /*start index*/, 9+10 /*limit index*/, groupBuf, sizeof(groupBuf), &status);
1797 TEST_ASSERT_STRING(" interior ", groupBuf, TRUE);
1798
1819 utext_close(actual); 1799 utext_close(actual);
1820 1800
1821 /* Capture group out of range. Error. */ 1801 /* Capture group out of range. Error. */
1822 status = U_ZERO_ERROR; 1802 status = U_ZERO_ERROR;
1823 actual = uregex_groupUTextDeep(re, 2, NULL, &status); 1803 actual = uregex_groupUText(re, 2, NULL, &groupLen, &status);
1824 TEST_ASSERT(status == U_INDEX_OUTOFBOUNDS_ERROR); 1804 TEST_ASSERT(status == U_INDEX_OUTOFBOUNDS_ERROR);
1825 TEST_ASSERT(utext_nativeLength(actual) == 0);
1826 utext_close(actual); 1805 utext_close(actual);
1827 1806
1828 uregex_close(re); 1807 uregex_close(re);
1829
1830 } 1808 }
1831 1809
1832 /* 1810 /*
1833 * replaceFirst() 1811 * replaceFirst()
1834 */ 1812 */
1835 { 1813 {
1836 UChar text1[80]; 1814 UChar text1[80];
1837 UChar text2[80]; 1815 UChar text2[80];
1838 UText replText = UTEXT_INITIALIZER; 1816 UText replText = UTEXT_INITIALIZER;
1839 UText *result; 1817 UText *result;
1840 const char str_Replxxx[] = { 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0 x20, 0x3c, 0x61, 0x61, 0x3e, 0x20, 0x78, 0x31, 0x78, 0x20, 0x78, 0x2e, 0x2e, 0x2 e, 0x78, 0x2e, 0x00 }; /* Replace <aa> x1x x...x. */ 1818 const char str_Replxxx[] = { 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0 x20, 0x3c, 0x61, 0x61, 0x3e, 0x20, 0x78, 0x31, 0x78, 0x20, 0x78, 0x2e, 0x2e, 0x2 e, 0x78, 0x2e, 0x00 }; /* Replace <aa> x1x x...x. */
1841 const char str_Nomatchhere[] = { 0x4e, 0x6f, 0x20, 0x6d, 0x61, 0x74, 0x6 3, 0x68, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, 0x00 }; /* No match here. */ 1819 const char str_Nomatchhere[] = { 0x4e, 0x6f, 0x20, 0x6d, 0x61, 0x74, 0x6 3, 0x68, 0x20, 0x68, 0x65, 0x72, 0x65, 0x2e, 0x00 }; /* No match here. */
1842 const char str_u00411U00000042a[] = { 0x5c, 0x5c, 0x5c, 0x75, 0x30, 0x3 0, 0x34, 0x31, 0x24, 0x31, 0x5c, 0x55, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x32, 0x24, 0x5c, 0x61, 0x00 }; /* \\\u0041$1\U00000042$\a */ 1820 const char str_u00411U00000042a[] = { 0x5c, 0x5c, 0x5c, 0x75, 0x30, 0x3 0, 0x34, 0x31, 0x24, 0x31,
1821 0x5c, 0x55, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x32, 0x5c, 0x24, 0x5c, 0x61, 0x00 }; /* \\\u0041$1\U00000042\$\a */
1843 const char str_1x[] = { 0x3c, 0x24, 0x31, 0x3e, 0x00 }; /* <$1> */ 1822 const char str_1x[] = { 0x3c, 0x24, 0x31, 0x3e, 0x00 }; /* <$1> */
1844 const char str_ReplaceAaaBax1xxx[] = { 0x52, 0x65, 0x70, 0x6c, 0x61, 0x6 3, 0x65, 0x20, 0x5c, 0x41, 0x61, 0x61, 0x42, 0x24, 0x61, 0x20, 0x78, 0x31, 0x78, 0x20, 0x78, 0x2e, 0x2e, 0x2e, 0x78, 0x2e, 0x00 }; /* Replace \AaaB$a x1x x...x. */ 1823 const char str_ReplaceAaaBax1xxx[] = { 0x52, 0x65, 0x70, 0x6c, 0x61, 0x6 3, 0x65, 0x20, 0x5c, 0x41, 0x61, 0x61, 0x42, 0x24, 0x61, 0x20, 0x78, 0x31, 0x78, 0x20, 0x78, 0x2e, 0x2e, 0x2e, 0x78, 0x2e, 0x00 }; /* Replace \AaaB$a x1x x...x. */
1845 status = U_ZERO_ERROR; 1824 status = U_ZERO_ERROR;
1846 u_uastrncpy(text1, "Replace xaax x1x x...x.", UPRV_LENGTHOF(text1)); 1825 u_uastrncpy(text1, "Replace xaax x1x x...x.", UPRV_LENGTHOF(text1));
1847 u_uastrncpy(text2, "No match here.", UPRV_LENGTHOF(text2)); 1826 u_uastrncpy(text2, "No match here.", UPRV_LENGTHOF(text2));
1848 utext_openUTF8(&replText, str_1x, -1, &status); 1827 utext_openUTF8(&replText, str_1x, -1, &status);
1849 1828
1850 re = uregex_openC("x(.*?)x", 0, NULL, &status); 1829 re = uregex_openC("x(.*?)x", 0, NULL, &status);
1851 TEST_ASSERT_SUCCESS(status); 1830 TEST_ASSERT_SUCCESS(status);
1852 1831
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
1940 bufCap = UPRV_LENGTHOF(buf); 1919 bufCap = UPRV_LENGTHOF(buf);
1941 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status); 1920 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status);
1942 TEST_ASSERT_SUCCESS(status); 1921 TEST_ASSERT_SUCCESS(status);
1943 TEST_ASSERT_STRING("some other", buf, TRUE); 1922 TEST_ASSERT_STRING("some other", buf, TRUE);
1944 1923
1945 /* Match has \u \U escapes */ 1924 /* Match has \u \U escapes */
1946 uregex_find(re, 0, &status); 1925 uregex_find(re, 0, &status);
1947 TEST_ASSERT_SUCCESS(status); 1926 TEST_ASSERT_SUCCESS(status);
1948 bufPtr = buf; 1927 bufPtr = buf;
1949 bufCap = UPRV_LENGTHOF(buf); 1928 bufCap = UPRV_LENGTHOF(buf);
1950 u_uastrncpy(repl, "abc\\u0041\\U00000042 \\\\ $ \\abc", UPRV_LENGTHOF(re pl)); 1929 u_uastrncpy(repl, "abc\\u0041\\U00000042 \\\\ \\$ \\abc", UPRV_LENGTHOF( repl));
1951 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status); 1930 uregex_appendReplacement(re, repl, -1, &bufPtr, &bufCap, &status);
1952 TEST_ASSERT_SUCCESS(status); 1931 TEST_ASSERT_SUCCESS(status);
1953 TEST_ASSERT_STRING("abcAB \\ $ abc", buf, TRUE); 1932 TEST_ASSERT_STRING("abcAB \\ $ abc", buf, TRUE);
1954 1933
1955 uregex_close(re); 1934 uregex_close(re);
1956 } 1935 }
1957 1936
1958 1937
1959 /* 1938 /*
1960 * appendReplacement(), appendTail() checked in replaceFirst(), replaceAll( ). 1939 * appendReplacement(), appendTail() checked in replaceFirst(), replaceAll( ).
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after
2319 TEST_ASSERT_SUCCESS(status); 2298 TEST_ASSERT_SUCCESS(status);
2320 2299
2321 uregex_findNext(re, &status); 2300 uregex_findNext(re, &status);
2322 TEST_ASSERT(status == U_REGEX_STOPPED_BY_CALLER); 2301 TEST_ASSERT(status == U_REGEX_STOPPED_BY_CALLER);
2323 2302
2324 uregex_close(re); 2303 uregex_close(re);
2325 } 2304 }
2326 2305
2327 2306
2328 #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */ 2307 #endif /* !UCONFIG_NO_REGULAR_EXPRESSIONS */
OLDNEW
« no previous file with comments | « source/test/cintltst/nucnvtst.c ('k') | source/test/cintltst/spooftest.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698