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 |