| OLD | NEW |
| 1 /******************************************************************** | 1 /******************************************************************** |
| 2 * COPYRIGHT: | 2 * COPYRIGHT: |
| 3 * Copyright (c) 1998-2012, International Business Machines Corporation and | 3 * Copyright (c) 1998-2014, International Business Machines Corporation and |
| 4 * others. All Rights Reserved. | 4 * others. All Rights Reserved. |
| 5 ********************************************************************/ | 5 ********************************************************************/ |
| 6 /* | 6 /* |
| 7 * File test.c | 7 * File test.c |
| 8 * | 8 * |
| 9 * Modification History: | 9 * Modification History: |
| 10 * | 10 * |
| 11 * Date Name Description | 11 * Date Name Description |
| 12 * 05/01/2000 Madhu Creation | 12 * 05/01/2000 Madhu Creation |
| 13 ******************************************************************************* | 13 ******************************************************************************* |
| 14 */ | 14 */ |
| 15 | 15 |
| 16 #include "unicode/utypes.h" | 16 #include "unicode/utypes.h" |
| 17 #include "unicode/utf16.h" | 17 #include "unicode/utf16.h" |
| 18 #include "unicode/ustring.h" | 18 #include "unicode/ustring.h" |
| 19 #include "cmemory.h" | 19 #include "cmemory.h" |
| 20 #include "cstring.h" | 20 #include "cstring.h" |
| 21 #include "cintltst.h" | 21 #include "cintltst.h" |
| 22 #include <stdio.h> | 22 #include <stdio.h> |
| 23 | 23 |
| 24 #define LENGTHOF(array) (sizeof(array)/sizeof((array)[0])) | |
| 25 | |
| 26 static void printUChars(const UChar *uchars); | 24 static void printUChars(const UChar *uchars); |
| 27 | 25 |
| 28 static void TestCodeUnitValues(void); | 26 static void TestCodeUnitValues(void); |
| 29 static void TestCharLength(void); | 27 static void TestCharLength(void); |
| 30 static void TestGetChar(void); | 28 static void TestGetChar(void); |
| 31 static void TestNextPrevChar(void); | 29 static void TestNextPrevChar(void); |
| 32 static void TestNulTerminated(void); | 30 static void TestNulTerminated(void); |
| 33 static void TestFwdBack(void); | 31 static void TestFwdBack(void); |
| 34 static void TestSetChar(void); | 32 static void TestSetChar(void); |
| 35 static void TestAppendChar(void); | 33 static void TestAppendChar(void); |
| (...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 735 /* none from this line */ | 733 /* none from this line */ |
| 736 0, 0x400 | 734 0, 0x400 |
| 737 }; | 735 }; |
| 738 | 736 |
| 739 UChar buffer[100]; | 737 UChar buffer[100]; |
| 740 UChar32 c; | 738 UChar32 c; |
| 741 int32_t i, length; | 739 int32_t i, length; |
| 742 UBool isError, expectIsError, wrongIsError; | 740 UBool isError, expectIsError, wrongIsError; |
| 743 | 741 |
| 744 length=0; | 742 length=0; |
| 745 for(i=0; i<LENGTHOF(codePoints); ++i) { | 743 for(i=0; i<UPRV_LENGTHOF(codePoints); ++i) { |
| 746 c=codePoints[i]; | 744 c=codePoints[i]; |
| 747 if(c<0 || 0x10ffff<c) { | 745 if(c<0 || 0x10ffff<c) { |
| 748 continue; /* skip non-code points for U16_APPEND_UNSAFE */ | 746 continue; /* skip non-code points for U16_APPEND_UNSAFE */ |
| 749 } | 747 } |
| 750 | 748 |
| 751 U16_APPEND_UNSAFE(buffer, length, c); | 749 U16_APPEND_UNSAFE(buffer, length, c); |
| 752 } | 750 } |
| 753 if(length!=LENGTHOF(expectUnsafe) || 0!=memcmp(buffer, expectUnsafe, length*
U_SIZEOF_UCHAR)) { | 751 if(length!=UPRV_LENGTHOF(expectUnsafe) || 0!=memcmp(buffer, expectUnsafe, le
ngth*U_SIZEOF_UCHAR)) { |
| 754 log_err("U16_APPEND_UNSAFE did not generate the expected output\n"); | 752 log_err("U16_APPEND_UNSAFE did not generate the expected output\n"); |
| 755 } | 753 } |
| 756 | 754 |
| 757 length=0; | 755 length=0; |
| 758 wrongIsError=FALSE; | 756 wrongIsError=FALSE; |
| 759 for(i=0; i<LENGTHOF(codePoints); ++i) { | 757 for(i=0; i<UPRV_LENGTHOF(codePoints); ++i) { |
| 760 c=codePoints[i]; | 758 c=codePoints[i]; |
| 761 expectIsError= c<0 || 0x10ffff<c; /* || U_IS_SURROGATE(c); */ /* surroga
tes in UTF-32 shouldn't be used, but it's okay to pass them around internally. *
/ | 759 expectIsError= c<0 || 0x10ffff<c; /* || U_IS_SURROGATE(c); */ /* surroga
tes in UTF-32 shouldn't be used, but it's okay to pass them around internally. *
/ |
| 762 isError=FALSE; | 760 isError=FALSE; |
| 763 | 761 |
| 764 U16_APPEND(buffer, length, LENGTHOF(buffer), c, isError); | 762 U16_APPEND(buffer, length, UPRV_LENGTHOF(buffer), c, isError); |
| 765 wrongIsError|= isError!=expectIsError; | 763 wrongIsError|= isError!=expectIsError; |
| 766 } | 764 } |
| 767 if(wrongIsError) { | 765 if(wrongIsError) { |
| 768 log_err("U16_APPEND did not set isError correctly\n"); | 766 log_err("U16_APPEND did not set isError correctly\n"); |
| 769 } | 767 } |
| 770 if(length!=LENGTHOF(expectSafe) || 0!=memcmp(buffer, expectSafe, length*U_SI
ZEOF_UCHAR)) { | 768 if(length!=UPRV_LENGTHOF(expectSafe) || 0!=memcmp(buffer, expectSafe, length
*U_SIZEOF_UCHAR)) { |
| 771 log_err("U16_APPEND did not generate the expected output\n"); | 769 log_err("U16_APPEND did not generate the expected output\n"); |
| 772 } | 770 } |
| 773 } | 771 } |
| 774 | 772 |
| 775 static void TestSurrogate(){ | 773 static void TestSurrogate(){ |
| 776 static UChar32 s[] = {0x10000, 0x10ffff, 0x50000, 0x100000, 0x1abcd}; | 774 static UChar32 s[] = {0x10000, 0x10ffff, 0x50000, 0x100000, 0x1abcd}; |
| 777 int i = 0; | 775 int i = 0; |
| 778 while (i < 5) { | 776 while (i < 5) { |
| 779 UChar first = UTF_FIRST_SURROGATE(s[i]); | 777 UChar first = UTF_FIRST_SURROGATE(s[i]); |
| 780 UChar second = UTF_SECOND_SURROGATE(s[i]); | 778 UChar second = UTF_SECOND_SURROGATE(s[i]); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 793 i ++; | 791 i ++; |
| 794 } | 792 } |
| 795 } | 793 } |
| 796 | 794 |
| 797 static void printUChars(const UChar *uchars){ | 795 static void printUChars(const UChar *uchars){ |
| 798 int16_t i=0; | 796 int16_t i=0; |
| 799 for(i=0; i<u_strlen(uchars); i++){ | 797 for(i=0; i<u_strlen(uchars); i++){ |
| 800 printf("%x ", *(uchars+i)); | 798 printf("%x ", *(uchars+i)); |
| 801 } | 799 } |
| 802 } | 800 } |
| OLD | NEW |