Changeset 63262 in webkit
- Timestamp:
- Jul 13, 2010 4:59:57 PM (14 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r63236 r63262 1 2010-07-13 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> 2 3 Reviewed by Oliver Hunt. 4 5 Separate CoreFoundation specific tests in JSC's testapi.c 6 7 testapi.c depends on the Core Foundation. 8 https://bugs.webkit.org/show_bug.cgi?id=40058 9 10 * WebKit.pro: enable compilation of JSC C API test. 11 1 12 2010-07-13 Scott Violet <sky@chromium.org> 2 13 -
trunk/JavaScriptCore/API/tests/testapi.c
r61946 r63262 24 24 */ 25 25 26 #include "config.h" 27 28 #if PLATFORM(CF) 26 29 #include "JavaScriptCore.h" 30 #else 31 #include "JavaScript.h" 32 #include <stdio.h> 33 #include <stdlib.h> 34 #include <string.h> 35 #include <time.h> 36 #endif 37 27 38 #include "JSBasePrivate.h" 28 39 #include "JSContextRefPrivate.h" … … 92 103 } 93 104 105 // FIXME: define this assert for non-CF platforms. 106 #if PLATFORM(CF) 94 107 static void assertEqualsAsCharactersPtr(JSValueRef value, const char* expectedValue) 95 108 { … … 120 133 JSStringRelease(valueAsString); 121 134 } 135 #endif 122 136 123 137 static bool timeZoneIsPST() … … 818 832 } 819 833 834 #if PLATFORM(CF) 835 // Test the JavaScriptCore specific API for converting JSStringRefs to/from CFStrings. 836 static void testJSStringRefCF() 837 { 838 UniChar singleUniChar = 65; // Capital A 839 CFMutableStringRef cfString = 840 CFStringCreateMutableWithExternalCharactersNoCopy(kCFAllocatorDefault, 841 &singleUniChar, 842 1, 843 1, 844 kCFAllocatorNull); 845 846 JSStringRef jsCFIString = JSStringCreateWithCFString(cfString); 847 JSValueRef jsCFString = JSValueMakeString(context, jsCFIString); 848 849 CFStringRef cfEmptyString = CFStringCreateWithCString(kCFAllocatorDefault, "", kCFStringEncodingUTF8); 850 851 JSStringRef jsCFEmptyIString = JSStringCreateWithCFString(cfEmptyString); 852 JSValueRef jsCFEmptyString = JSValueMakeString(context, jsCFEmptyIString); 853 854 CFIndex cfStringLength = CFStringGetLength(cfString); 855 UniChar *buffer = (UniChar*)malloc(cfStringLength * sizeof(UniChar)); 856 CFStringGetCharacters(cfString, 857 CFRangeMake(0, cfStringLength), 858 buffer); 859 JSStringRef jsCFIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, cfStringLength); 860 JSValueRef jsCFStringWithCharacters = JSValueMakeString(context, jsCFIStringWithCharacters); 861 862 JSStringRef jsCFEmptyIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, CFStringGetLength(cfEmptyString)); 863 free(buffer); 864 JSValueRef jsCFEmptyStringWithCharacters = JSValueMakeString(context, jsCFEmptyIStringWithCharacters); 865 866 ASSERT(JSValueGetType(context, jsCFString) == kJSTypeString); 867 ASSERT(JSValueGetType(context, jsCFStringWithCharacters) == kJSTypeString); 868 ASSERT(JSValueGetType(context, jsCFEmptyString) == kJSTypeString); 869 ASSERT(JSValueGetType(context, jsCFEmptyStringWithCharacters) == kJSTypeString); 870 871 assertEqualsAsBoolean(jsCFString, true); 872 assertEqualsAsBoolean(jsCFStringWithCharacters, true); 873 assertEqualsAsBoolean(jsCFEmptyString, false); 874 assertEqualsAsBoolean(jsCFEmptyStringWithCharacters, false); 875 876 assertEqualsAsNumber(jsCFString, nan("")); 877 assertEqualsAsNumber(jsCFStringWithCharacters, nan("")); 878 assertEqualsAsNumber(jsCFEmptyString, 0); 879 assertEqualsAsNumber(jsCFEmptyStringWithCharacters, 0); 880 ASSERT(sizeof(JSChar) == sizeof(UniChar)); 881 882 assertEqualsAsCharactersPtr(jsCFString, "A"); 883 assertEqualsAsCharactersPtr(jsCFStringWithCharacters, "A"); 884 assertEqualsAsCharactersPtr(jsCFEmptyString, ""); 885 assertEqualsAsCharactersPtr(jsCFEmptyStringWithCharacters, ""); 886 887 assertEqualsAsUTF8String(jsCFString, "A"); 888 assertEqualsAsUTF8String(jsCFStringWithCharacters, "A"); 889 assertEqualsAsUTF8String(jsCFEmptyString, ""); 890 assertEqualsAsUTF8String(jsCFEmptyStringWithCharacters, ""); 891 892 CFStringRef cfJSString = JSStringCopyCFString(kCFAllocatorDefault, jsCFIString); 893 CFStringRef cfJSEmptyString = JSStringCopyCFString(kCFAllocatorDefault, jsCFEmptyIString); 894 ASSERT(CFEqual(cfJSString, cfString)); 895 ASSERT(CFEqual(cfJSEmptyString, cfEmptyString)); 896 CFRelease(cfJSString); 897 CFRelease(cfJSEmptyString); 898 899 CFRelease(cfString); 900 CFRelease(cfEmptyString); 901 902 JSStringRelease(jsCFIString); 903 JSStringRelease(jsCFEmptyIString); 904 JSStringRelease(jsCFIStringWithCharacters); 905 JSStringRelease(jsCFEmptyIStringWithCharacters); 906 } 907 #endif 908 820 909 int main(int argc, char* argv[]) 821 910 { … … 870 959 JSValueRef jsOneString = JSValueMakeString(context, jsOneIString); 871 960 872 UniChar singleUniChar = 65; // Capital A873 CFMutableStringRef cfString =874 CFStringCreateMutableWithExternalCharactersNoCopy(kCFAllocatorDefault,875 &singleUniChar,876 1,877 1,878 kCFAllocatorNull);879 880 JSStringRef jsCFIString = JSStringCreateWithCFString(cfString);881 JSValueRef jsCFString = JSValueMakeString(context, jsCFIString);882 883 CFStringRef cfEmptyString = CFStringCreateWithCString(kCFAllocatorDefault, "", kCFStringEncodingUTF8);884 885 JSStringRef jsCFEmptyIString = JSStringCreateWithCFString(cfEmptyString);886 JSValueRef jsCFEmptyString = JSValueMakeString(context, jsCFEmptyIString);887 888 CFIndex cfStringLength = CFStringGetLength(cfString);889 UniChar* buffer = (UniChar*)malloc(cfStringLength * sizeof(UniChar));890 CFStringGetCharacters(cfString,891 CFRangeMake(0, cfStringLength),892 buffer);893 JSStringRef jsCFIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, cfStringLength);894 JSValueRef jsCFStringWithCharacters = JSValueMakeString(context, jsCFIStringWithCharacters);895 896 JSStringRef jsCFEmptyIStringWithCharacters = JSStringCreateWithCharacters((JSChar*)buffer, CFStringGetLength(cfEmptyString));897 free(buffer);898 JSValueRef jsCFEmptyStringWithCharacters = JSValueMakeString(context, jsCFEmptyIStringWithCharacters);899 900 961 ASSERT(JSValueGetType(context, jsUndefined) == kJSTypeUndefined); 901 962 ASSERT(JSValueGetType(context, jsNull) == kJSTypeNull); … … 907 968 ASSERT(JSValueGetType(context, jsEmptyString) == kJSTypeString); 908 969 ASSERT(JSValueGetType(context, jsOneString) == kJSTypeString); 909 ASSERT(JSValueGetType(context, jsCFString) == kJSTypeString); 910 ASSERT(JSValueGetType(context, jsCFStringWithCharacters) == kJSTypeString); 911 ASSERT(JSValueGetType(context, jsCFEmptyString) == kJSTypeString); 912 ASSERT(JSValueGetType(context, jsCFEmptyStringWithCharacters) == kJSTypeString); 970 971 // FIXME: Add tests for JSStringCreateWithCharacters, they are only covered in the 972 // CoreFoundation-specific tests. 973 974 #if PLATFORM(CF) 975 testJSStringRefCF(); 976 #endif 913 977 914 978 JSObjectRef myObject = JSObjectMake(context, MyObject_class(context), NULL); … … 964 1028 JSGarbageCollect(context); 965 1029 966 for (int i = 0; i < 10000; i++) 1030 int i; 1031 for (i = 0; i < 10000; i++) 967 1032 JSObjectMake(context, 0, 0); 968 1033 … … 1066 1131 assertEqualsAsBoolean(jsEmptyString, false); 1067 1132 assertEqualsAsBoolean(jsOneString, true); 1068 assertEqualsAsBoolean(jsCFString, true);1069 assertEqualsAsBoolean(jsCFStringWithCharacters, true);1070 assertEqualsAsBoolean(jsCFEmptyString, false);1071 assertEqualsAsBoolean(jsCFEmptyStringWithCharacters, false);1072 1133 1073 1134 assertEqualsAsNumber(jsUndefined, nan("")); … … 1080 1141 assertEqualsAsNumber(jsEmptyString, 0); 1081 1142 assertEqualsAsNumber(jsOneString, 1); 1082 assertEqualsAsNumber(jsCFString, nan("")); 1083 assertEqualsAsNumber(jsCFStringWithCharacters, nan("")); 1084 assertEqualsAsNumber(jsCFEmptyString, 0); 1085 assertEqualsAsNumber(jsCFEmptyStringWithCharacters, 0); 1086 ASSERT(sizeof(JSChar) == sizeof(UniChar)); 1087 1143 1144 // FIXME: Implement assertEqualsAsCharactersPtr for non-CF platforms. 1145 #if PLATFORM(CF) 1088 1146 assertEqualsAsCharactersPtr(jsUndefined, "undefined"); 1089 1147 assertEqualsAsCharactersPtr(jsNull, "null"); … … 1095 1153 assertEqualsAsCharactersPtr(jsEmptyString, ""); 1096 1154 assertEqualsAsCharactersPtr(jsOneString, "1"); 1097 assertEqualsAsCharactersPtr(jsCFString, "A"); 1098 assertEqualsAsCharactersPtr(jsCFStringWithCharacters, "A"); 1099 assertEqualsAsCharactersPtr(jsCFEmptyString, ""); 1100 assertEqualsAsCharactersPtr(jsCFEmptyStringWithCharacters, ""); 1155 #endif 1101 1156 1102 1157 assertEqualsAsUTF8String(jsUndefined, "undefined"); … … 1109 1164 assertEqualsAsUTF8String(jsEmptyString, ""); 1110 1165 assertEqualsAsUTF8String(jsOneString, "1"); 1111 assertEqualsAsUTF8String(jsCFString, "A");1112 assertEqualsAsUTF8String(jsCFStringWithCharacters, "A");1113 assertEqualsAsUTF8String(jsCFEmptyString, "");1114 assertEqualsAsUTF8String(jsCFEmptyStringWithCharacters, "");1115 1166 1116 1167 ASSERT(JSValueIsStrictEqual(context, jsTrue, jsTrue)); … … 1120 1171 ASSERT(!JSValueIsEqual(context, jsTrue, jsFalse, NULL)); 1121 1172 1122 CFStringRef cfJSString = JSStringCopyCFString(kCFAllocatorDefault, jsCFIString); 1123 CFStringRef cfJSEmptyString = JSStringCopyCFString(kCFAllocatorDefault, jsCFEmptyIString); 1124 ASSERT(CFEqual(cfJSString, cfString)); 1125 ASSERT(CFEqual(cfJSEmptyString, cfEmptyString)); 1126 CFRelease(cfJSString); 1127 CFRelease(cfJSEmptyString); 1128 1129 CFRelease(cfString); 1130 CFRelease(cfEmptyString); 1131 1173 1132 1174 jsGlobalValue = JSObjectMake(context, NULL, NULL); 1133 1175 makeGlobalNumberValue(context); … … 1257 1299 o = JSObjectMake(context, NULL, NULL); 1258 1300 JSObjectSetProperty(context, o, jsOneIString, JSValueMakeNumber(context, 1), kJSPropertyAttributeNone, NULL); 1259 JSObjectSetProperty(context, o, jsCFIString,JSValueMakeNumber(context, 1), kJSPropertyAttributeDontEnum, NULL);1301 JSObjectSetProperty(context, o, propertyName, JSValueMakeNumber(context, 1), kJSPropertyAttributeDontEnum, NULL); 1260 1302 JSPropertyNameArrayRef nameArray = JSObjectCopyPropertyNames(context, o); 1261 1303 size_t expectedCount = JSPropertyNameArrayGetCount(nameArray); … … 1358 1400 printf("FAIL: Test script returned unexpected value:\n"); 1359 1401 JSStringRef exceptionIString = JSValueToStringCopy(context, exception, NULL); 1360 CFStringRef exceptionCF = JSStringCopyCFString(kCFAllocatorDefault, exceptionIString); 1361 CFShow(exceptionCF); 1362 CFRelease(exceptionCF); 1402 1403 size_t sizeUTF8 = JSStringGetMaximumUTF8CStringSize(exceptionIString); 1404 char *exceptionUTF8 = malloc(sizeUTF8); 1405 JSStringGetUTF8CString(exceptionIString, exceptionUTF8, sizeUTF8); 1406 printf("%s\n", exceptionUTF8); 1407 free(exceptionUTF8); 1408 1363 1409 JSStringRelease(exceptionIString); 1364 1410 failed = 1; … … 1377 1423 JSStringRelease(jsEmptyIString); 1378 1424 JSStringRelease(jsOneIString); 1379 JSStringRelease(jsCFIString);1380 JSStringRelease(jsCFEmptyIString);1381 JSStringRelease(jsCFIStringWithCharacters);1382 JSStringRelease(jsCFEmptyIStringWithCharacters);1383 1425 JSStringRelease(goodSyntax); 1384 1426 JSStringRelease(badSyntax); -
trunk/JavaScriptCore/ChangeLog
r63244 r63262 1 2010-07-13 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> 2 3 Reviewed by Oliver Hunt. 4 5 testapi.c depends on the Core Foundation. 6 https://bugs.webkit.org/show_bug.cgi?id=40058 7 8 Separate CoreFoundation specific tests in JSC's testapi.c. Enabling it 9 to compile in Qt environments. 10 11 All tests should work except for the JSStringCreateWithCharacters() function, 12 because its tests depend on Core Foundation specific functions. 13 14 * API/tests/testapi.c: 15 (testJSStringRefCF): moved CoreFoundation specific tests to this function. 16 (main): The moves plus some minor tweaks. 17 * testapi.pro: Added. 18 1 19 2010-07-13 Gavin Barraclough <barraclough@apple.com> 2 20 -
trunk/WebKit.pro
r62483 r63262 14 14 } 15 15 exists($$PWD/JavaScriptCore/jsc.pro): SUBDIRS += JavaScriptCore/jsc.pro 16 exists($$PWD/JavaScriptCore/testapi.pro): SUBDIRS += JavaScriptCore/testapi.pro 16 17 exists($$PWD/WebKit/qt/tests): SUBDIRS += WebKit/qt/tests 17 18 exists($$PWD/WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro): SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro
Note: See TracChangeset
for help on using the changeset viewer.