diff --git a/Objective-J/CFPropertyList.js b/Objective-J/CFPropertyList.js index da935afba..2a7f466b3 100644 --- a/Objective-J/CFPropertyList.js +++ b/Objective-J/CFPropertyList.js @@ -603,7 +603,8 @@ CFPropertyList.propertyListFromXML = function(/*String | XMLNode*/ aStringOrXMLN break; case PLIST_DATA: object = new CFMutableData(); - object.bytes = FIRST_CHILD(XMLNode) ? CFData.decodeBase64ToArray(TEXT_CONTENT(XMLNode), YES) : []; + var data_bytes = FIRST_CHILD(XMLNode) ? CFData.decodeBase64ToArray(TEXT_CONTENT(XMLNode), YES) : []; + object.setBytes(data_bytes); break; default: throw new Error("*** " + NODE_NAME(XMLNode) + " tag not recognized in Plist."); diff --git a/Tests/Manual/CPPropertyListSerializationTest/AppController.j b/Tests/Manual/CPPropertyListSerializationTest/AppController.j new file mode 100644 index 000000000..c8e3447c4 --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/AppController.j @@ -0,0 +1,97 @@ +/* + * AppController.j + * CPPropertyListSerializationTest + * + * Created by You on March 9, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import + +var originalBase64Data = "YnBsaXN0MDDUAQIDBAUG6utYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QMwcIHyMkKi4yNj5MUF5fYGFzdHx9gIqLjJGUmZqdoqisrbGytr3AwcPK09yI3d7f4OHk51UkbnVsbNsJCgsMDQ4PEBESExQVFhcYGRobHB0dXxAQTlNWaXNpYmxlV2luZG93c11OU09iamVjdHNLZXlzVk5TUm9vdFxOU09pZHNWYWx1ZXNWJGNsYXNzWk5TT2lkc0tleXNdTlNDb25uZWN0aW9uc18QD05TT2JqZWN0c1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXOABYAjgAKAKYAygCiAB4AngDCAMYAx0g0gISJbTlNDbGFzc05hbWWABIADWE5TT2JqZWN00iUmJyhaJGNsYXNzbmFtZVgkY2xhc3Nlc15OU0N1c3RvbU9iamVjdKInKVhOU09iamVjdNINKywtWk5TLm9iamVjdHOABqDSJSYvMFxOU011dGFibGVTZXSjLzEpVU5TU2V00g0rMzSAHqE1gAjUDTc4OTo7PD1XTlNMYWJlbF1OU0Rlc3RpbmF0aW9uWE5TU291cmNlgCKAIYALgAnXPw1AQUJDRDxGR0hJSktdTlNOZXh0S2V5Vmlld1hOU3ZGbGFnc18QD05TTmV4dFJlc3BvbmRlcl8QFE5TUmV1c2VJZGVudGlmaWVyS2V5W05TRnJhbWVTaXplWk5TU3Vidmlld3OAC4AgEQESgACADYAfgArSDSszToAeoTyAC9lRUlNADUFCQ1RVVj1YWT1JXF1ZTlNFbmFibGVkVk5TQ2VsbFtOU1N1cGVydmlld18QGU5TQW50aUNvbXByZXNzaW9uUHJpb3JpdHkJgA+ACREBCoAdgAmADYAMgA5ZezExNiwgMTd9U05pYlp7MjUwLCA3NTB92WJjZGVmZ2gNaWprbEk8b3BxcltOU0NlbGxGbGFnc1xOU0NlbGxGbGFnczJaTlNDb250ZW50c18QEE5TQ2VsbElkZW50aWZpZXJdTlNDb250cm9sVmlld1tOU1RleHRDb2xvcllOU1N1cHBvcnRfEBFOU0JhY2tncm91bmRDb2xvchIEAf5AEhBACACAEIANgAuAGYARgByAFFdNeSBDRUxM1A11dnd4eXp7Vk5TTmFtZVZOU1NpemVYTlNmRmxhZ3OAE4ASI0AqAAAAAAAAEQQUXEx1Y2lkYUdyYW5kZdIlJn5/Vk5TRm9udKJ+KdWBDYKDhIWGh4iJXU5TQ2F0YWxvZ05hbWVbTlNDb2xvck5hbWVcTlNDb2xvclNwYWNlV05TQ29sb3KAFYAYgBYQBoAXVlN5c3RlbVxjb250cm9sQ29sb3LTDYONho+QV05TV2hpdGWAGBADTTAuNjY2NjY2NjY2NwDSJSaSk1dOU0NvbG9yopIp1YENgoOEhYaXiJiAFYAYgBqAG18QEGNvbnRyb2xUZXh0Q29sb3LTDYONho+cgBhCMADSJSaen18QD05TVGV4dEZpZWxkQ2VsbKSeoKEpXE5TQWN0aW9uQ2VsbFZOU0NlbGzSJSajpFtOU1RleHRGaWVsZKWjpaanKVlOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9uZGVy0iUmqapeTlNNdXRhYmxlQXJyYXmjqaspV05TQXJyYXlZezExNiwgMTd90iUmrq9fEA9OU1RhYmxlQ2VsbFZpZXeksKanKV8QD05TVGFibGVDZWxsVmlld1l0ZXh0RmllbGTSJSaztF8QFE5TTmliT3V0bGV0Q29ubmVjdG9yo7O1KV5OU05pYkNvbm5lY3RvctINK7e4gCakPTxWvIAJgAuAD4Ak0g0gIb+ABIAlXU5TQXBwbGljYXRpb27SJSarwqKrKdINK7fFgCakFj08FoACgAmAC4AC0g0rt8yAJqYWPTxWvDWAAoAJgAuAD4AkgAjSDSu31YAmptbX2Nna24AqgCuALIAtgC6ALxAFEAcQCBAJEArSDSsz44AeoNINK7fmgCag0iUm6OleTlNJQk9iamVjdERhdGGi6ClfEA9OU0tleWVkQXJjaGl2ZXLR7O1dSUIub2JqZWN0ZGF0YYABAAgAEQAaACMALQAyADcAbQBzAIoAnQCrALIAvwDGANEA3wDxAQ0BJwFDAUUBRwFJAUsBTQFPAVEBUwFVAVcBWQFeAWoBbAFuAXcBfAGHAZABnwGiAasBsAG7Ab0BvgHDAdAB1AHaAd8B4QHjAeUB7gH2AgQCDQIPAhECEwIVAiQCMgI7Ak0CZAJwAnsCfQJ/AoIChAKGAogCigKPApECkwKVAqgCsgK5AsUC4QLiAuQC5gLpAusC7QLvAvEC8wL9AwEDDAMfAysDOANDA1YDZANwA3oDjgOTA5gDmgOcA54DoAOiA6QDpgOuA7cDvgPFA84D0APSA9sD3gPrA/AD9wP6BAUEEwQfBCwENAQ2BDgEOgQ8BD4ERQRSBFkEYQRjBGUEcwR4BIAEgwSOBJAEkgSUBJYEqQSwBLIEtQS6BMwE0QTeBOUE6gT2BPwFBgUNBRkFHgUtBTEFOQVDBUgFWgVfBXEFewWABZcFmwWqBa8FsQW2BbgFugW8Bb4FwwXFBccF1QXaBd0F4gXkBekF6wXtBe8F8QX2BfgF/wYBBgMGBQYHBgkGCwYQBhIGGQYbBh0GHwYhBiMGJQYnBikGKwYtBi8GNAY2BjcGPAY+Bj8GRAZTBlYGaAZrBnkAAAAAAAACAQAAAAAAAADuAAAAAAAAAAAAAAAAAAAGew=="; + +@implementation AppController : CPObject +{ + CPDictionary deserializedData; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + var theWindow = [[CPWindow alloc] initWithContentRect:CGRectMakeZero() styleMask:CPBorderlessBridgeWindowMask], + contentView = [theWindow contentView]; + + [theWindow orderFront:self]; + + var path = [[CPBundle mainBundle] pathForResource:@"PropertyList.plist"], + request = [CPURLRequest requestWithURL:path], + connection = [CPURLConnection connectionWithRequest:request delegate:self]; + + // Uncomment the following line to turn on the standard menu bar. + //[CPMenu setMenuBarVisible:YES]; +} + +- (void)connection:(CPURLConnection)connection didReceiveData:(CPString)dataString +{ + if (!dataString) + return; + + var receivedData = [[CPData alloc] initWithRawString:dataString]; + + deserializedData = [CPPropertyListSerialization propertyListFromData:receivedData format:CPPropertyListXMLFormat_v1_0]; + + document.write("This test checks the class and value of objects deserialized from a CPPropertyListXMLFormat_v1_0 file

"); + + [self testObjectForKey:@"Number" isKindOfClass:[CPNumber class]]; + [self testObjectForKey:@"Number" isEqual:12]; + + [self testObjectForKey:@"Bool" isEqual:YES]; + + [self testObjectForKey:@"String" isKindOfClass:[CPString class]]; + [self testObjectForKey:@"String" isEqual:@"String"]; + + [self testObjectForKey:@"Data" isKindOfClass:[CPData class]]; + [self testObjectForKey:@"Dict" isKindOfClass:[CPDictionary class]]; + [self testObjectForKey:@"Dict.Number" isKindOfClass:[CPNumber class]]; + [self testObjectForKey:@"Dict.Data" isKindOfClass:[CPData class]]; + [self testObjectForKey:@"Dict.Bool" isEqual:YES]; + + [self testObjectForKey:@"Array" isKindOfClass:[CPArray class]]; + + // CPData -isEqual: is not implemented. Here we convert the CPData we get from CPPropertyListSerialization to base64 (using the CFData API) and compare with the original. + + var dataObject = [deserializedData objectForKey:@"Data"]; + var base64 = CFData.encodeBase64Array(dataObject.bytes()); + var isvalue = (base64 == originalBase64Data); + + if (isvalue) + document.write(@"Key Data base64: TEST PASSED"); + else + document.write(@"Key Data base64 should be :" + originalBase64Data + " was: " + base64); +} + +- (void)testObjectForKey:(CPString)aKey isKindOfClass:(Class)aClass +{ + var value = [deserializedData valueForKeyPath:aKey], + result; + + if ([[value class] isKindOfClass:aClass]) + result = @"Key " + aKey + " class: TEST PASSED
"; + else + result = @"Key " + aKey + "should be of class:" + aClass + " was: " + [value class] + "
"; + + document.write(result); +} + +- (void)testObjectForKey:(CPString)aKey isEqual:(id)aValue +{ + var value = [deserializedData valueForKeyPath:aKey]; + + if (value == aValue || [value isEqual:aValue]) + result = @"Key " + aKey + " value: TEST PASSED
"; + else + result = @"Key " + aKey + "should be :" + aValue + " was: " + value + "
"; + + document.write(result); +} + +@end diff --git a/Tests/Manual/CPPropertyListSerializationTest/Info.plist b/Tests/Manual/CPPropertyListSerializationTest/Info.plist new file mode 100644 index 000000000..e0513d047 --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/Info.plist @@ -0,0 +1,12 @@ + + + + + CPApplicationDelegateClass + AppController + CPBundleName + CPPropertyListSerializationTest + CPPrincipalClass + CPApplication + + diff --git a/Tests/Manual/CPPropertyListSerializationTest/Jakefile b/Tests/Manual/CPPropertyListSerializationTest/Jakefile new file mode 100644 index 000000000..0ec2c726b --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/Jakefile @@ -0,0 +1,93 @@ +/* + * Jakefile + * CPPropertyListSerializationTest + * + * Created by You on March 9, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("CPPropertyListSerializationTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "CPPropertyListSerializationTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("CPPropertyListSerializationTest"); + task.setIdentifier("com.yourcompany.CPPropertyListSerializationTest"); + task.setVersion("1.0"); + task.setAuthor("Your Company"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("CPPropertyListSerializationTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["CPPropertyListSerializationTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "CPPropertyListSerializationTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "CPPropertyListSerializationTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "CPPropertyListSerializationTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "CPPropertyListSerializationTest"), FILE.join("Build", "Deployment", "CPPropertyListSerializationTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "CPPropertyListSerializationTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "CPPropertyListSerializationTest"), FILE.join("Build", "Desktop", "CPPropertyListSerializationTest", "CPPropertyListSerializationTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "CPPropertyListSerializationTest", "CPPropertyListSerializationTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "CPPropertyListSerializationTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/CPPropertyListSerializationTest/Resources/PropertyList.plist b/Tests/Manual/CPPropertyListSerializationTest/Resources/PropertyList.plist new file mode 100644 index 000000000..8ca45fc64 --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/Resources/PropertyList.plist @@ -0,0 +1,32 @@ + + + + + String + String + Number + 12 + Data + YnBsaXN0MDDUAQIDBAUG6utYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QMwcIHyMkKi4yNj5MUF5fYGFzdHx9gIqLjJGUmZqdoqisrbGytr3AwcPK09yI3d7f4OHk51UkbnVsbNsJCgsMDQ4PEBESExQVFhcYGRobHB0dXxAQTlNWaXNpYmxlV2luZG93c11OU09iamVjdHNLZXlzVk5TUm9vdFxOU09pZHNWYWx1ZXNWJGNsYXNzWk5TT2lkc0tleXNdTlNDb25uZWN0aW9uc18QD05TT2JqZWN0c1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXOABYAjgAKAKYAygCiAB4AngDCAMYAx0g0gISJbTlNDbGFzc05hbWWABIADWE5TT2JqZWN00iUmJyhaJGNsYXNzbmFtZVgkY2xhc3Nlc15OU0N1c3RvbU9iamVjdKInKVhOU09iamVjdNINKywtWk5TLm9iamVjdHOABqDSJSYvMFxOU011dGFibGVTZXSjLzEpVU5TU2V00g0rMzSAHqE1gAjUDTc4OTo7PD1XTlNMYWJlbF1OU0Rlc3RpbmF0aW9uWE5TU291cmNlgCKAIYALgAnXPw1AQUJDRDxGR0hJSktdTlNOZXh0S2V5Vmlld1hOU3ZGbGFnc18QD05TTmV4dFJlc3BvbmRlcl8QFE5TUmV1c2VJZGVudGlmaWVyS2V5W05TRnJhbWVTaXplWk5TU3Vidmlld3OAC4AgEQESgACADYAfgArSDSszToAeoTyAC9lRUlNADUFCQ1RVVj1YWT1JXF1ZTlNFbmFibGVkVk5TQ2VsbFtOU1N1cGVydmlld18QGU5TQW50aUNvbXByZXNzaW9uUHJpb3JpdHkJgA+ACREBCoAdgAmADYAMgA5ZezExNiwgMTd9U05pYlp7MjUwLCA3NTB92WJjZGVmZ2gNaWprbEk8b3BxcltOU0NlbGxGbGFnc1xOU0NlbGxGbGFnczJaTlNDb250ZW50c18QEE5TQ2VsbElkZW50aWZpZXJdTlNDb250cm9sVmlld1tOU1RleHRDb2xvcllOU1N1cHBvcnRfEBFOU0JhY2tncm91bmRDb2xvchIEAf5AEhBACACAEIANgAuAGYARgByAFFdNeSBDRUxM1A11dnd4eXp7Vk5TTmFtZVZOU1NpemVYTlNmRmxhZ3OAE4ASI0AqAAAAAAAAEQQUXEx1Y2lkYUdyYW5kZdIlJn5/Vk5TRm9udKJ+KdWBDYKDhIWGh4iJXU5TQ2F0YWxvZ05hbWVbTlNDb2xvck5hbWVcTlNDb2xvclNwYWNlV05TQ29sb3KAFYAYgBYQBoAXVlN5c3RlbVxjb250cm9sQ29sb3LTDYONho+QV05TV2hpdGWAGBADTTAuNjY2NjY2NjY2NwDSJSaSk1dOU0NvbG9yopIp1YENgoOEhYaXiJiAFYAYgBqAG18QEGNvbnRyb2xUZXh0Q29sb3LTDYONho+cgBhCMADSJSaen18QD05TVGV4dEZpZWxkQ2VsbKSeoKEpXE5TQWN0aW9uQ2VsbFZOU0NlbGzSJSajpFtOU1RleHRGaWVsZKWjpaanKVlOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9uZGVy0iUmqapeTlNNdXRhYmxlQXJyYXmjqaspV05TQXJyYXlZezExNiwgMTd90iUmrq9fEA9OU1RhYmxlQ2VsbFZpZXeksKanKV8QD05TVGFibGVDZWxsVmlld1l0ZXh0RmllbGTSJSaztF8QFE5TTmliT3V0bGV0Q29ubmVjdG9yo7O1KV5OU05pYkNvbm5lY3RvctINK7e4gCakPTxWvIAJgAuAD4Ak0g0gIb+ABIAlXU5TQXBwbGljYXRpb27SJSarwqKrKdINK7fFgCakFj08FoACgAmAC4AC0g0rt8yAJqYWPTxWvDWAAoAJgAuAD4AkgAjSDSu31YAmptbX2Nna24AqgCuALIAtgC6ALxAFEAcQCBAJEArSDSsz44AeoNINK7fmgCag0iUm6OleTlNJQk9iamVjdERhdGGi6ClfEA9OU0tleWVkQXJjaGl2ZXLR7O1dSUIub2JqZWN0ZGF0YYABAAgAEQAaACMALQAyADcAbQBzAIoAnQCrALIAvwDGANEA3wDxAQ0BJwFDAUUBRwFJAUsBTQFPAVEBUwFVAVcBWQFeAWoBbAFuAXcBfAGHAZABnwGiAasBsAG7Ab0BvgHDAdAB1AHaAd8B4QHjAeUB7gH2AgQCDQIPAhECEwIVAiQCMgI7Ak0CZAJwAnsCfQJ/AoIChAKGAogCigKPApECkwKVAqgCsgK5AsUC4QLiAuQC5gLpAusC7QLvAvEC8wL9AwEDDAMfAysDOANDA1YDZANwA3oDjgOTA5gDmgOcA54DoAOiA6QDpgOuA7cDvgPFA84D0APSA9sD3gPrA/AD9wP6BAUEEwQfBCwENAQ2BDgEOgQ8BD4ERQRSBFkEYQRjBGUEcwR4BIAEgwSOBJAEkgSUBJYEqQSwBLIEtQS6BMwE0QTeBOUE6gT2BPwFBgUNBRkFHgUtBTEFOQVDBUgFWgVfBXEFewWABZcFmwWqBa8FsQW2BbgFugW8Bb4FwwXFBccF1QXaBd0F4gXkBekF6wXtBe8F8QX2BfgF/wYBBgMGBQYHBgkGCwYQBhIGGQYbBh0GHwYhBiMGJQYnBikGKwYtBi8GNAY2BjcGPAY+Bj8GRAZTBlYGaAZrBnkAAAAAAAACAQAAAAAAAADuAAAAAAAAAAAAAAAAAAAGew== + Bool + + Dict + + Bool + + Data + YnBsaXN0MDDUAQIDBAUG6utYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QMwcIHyMkKi4yNj5MUF5fYGFzdHx9gIqLjJGUmZqdoqisrbGytr3AwcPK09yI3d7f4OHk51UkbnVsbNsJCgsMDQ4PEBESExQVFhcYGRobHB0dXxAQTlNWaXNpYmxlV2luZG93c11OU09iamVjdHNLZXlzVk5TUm9vdFxOU09pZHNWYWx1ZXNWJGNsYXNzWk5TT2lkc0tleXNdTlNDb25uZWN0aW9uc18QD05TT2JqZWN0c1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXOABYAjgAKAKYAygCiAB4AngDCAMYAx0g0gISJbTlNDbGFzc05hbWWABIADWE5TT2JqZWN00iUmJyhaJGNsYXNzbmFtZVgkY2xhc3Nlc15OU0N1c3RvbU9iamVjdKInKVhOU09iamVjdNINKywtWk5TLm9iamVjdHOABqDSJSYvMFxOU011dGFibGVTZXSjLzEpVU5TU2V00g0rMzSAHqE1gAjUDTc4OTo7PD1XTlNMYWJlbF1OU0Rlc3RpbmF0aW9uWE5TU291cmNlgCKAIYALgAnXPw1AQUJDRDxGR0hJSktdTlNOZXh0S2V5Vmlld1hOU3ZGbGFnc18QD05TTmV4dFJlc3BvbmRlcl8QFE5TUmV1c2VJZGVudGlmaWVyS2V5W05TRnJhbWVTaXplWk5TU3Vidmlld3OAC4AgEQESgACADYAfgArSDSszToAeoTyAC9lRUlNADUFCQ1RVVj1YWT1JXF1ZTlNFbmFibGVkVk5TQ2VsbFtOU1N1cGVydmlld18QGU5TQW50aUNvbXByZXNzaW9uUHJpb3JpdHkJgA+ACREBCoAdgAmADYAMgA5ZezExNiwgMTd9U05pYlp7MjUwLCA3NTB92WJjZGVmZ2gNaWprbEk8b3BxcltOU0NlbGxGbGFnc1xOU0NlbGxGbGFnczJaTlNDb250ZW50c18QEE5TQ2VsbElkZW50aWZpZXJdTlNDb250cm9sVmlld1tOU1RleHRDb2xvcllOU1N1cHBvcnRfEBFOU0JhY2tncm91bmRDb2xvchIEAf5AEhBACACAEIANgAuAGYARgByAFFdNeSBDRUxM1A11dnd4eXp7Vk5TTmFtZVZOU1NpemVYTlNmRmxhZ3OAE4ASI0AqAAAAAAAAEQQUXEx1Y2lkYUdyYW5kZdIlJn5/Vk5TRm9udKJ+KdWBDYKDhIWGh4iJXU5TQ2F0YWxvZ05hbWVbTlNDb2xvck5hbWVcTlNDb2xvclNwYWNlV05TQ29sb3KAFYAYgBYQBoAXVlN5c3RlbVxjb250cm9sQ29sb3LTDYONho+QV05TV2hpdGWAGBADTTAuNjY2NjY2NjY2NwDSJSaSk1dOU0NvbG9yopIp1YENgoOEhYaXiJiAFYAYgBqAG18QEGNvbnRyb2xUZXh0Q29sb3LTDYONho+cgBhCMADSJSaen18QD05TVGV4dEZpZWxkQ2VsbKSeoKEpXE5TQWN0aW9uQ2VsbFZOU0NlbGzSJSajpFtOU1RleHRGaWVsZKWjpaanKVlOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9uZGVy0iUmqapeTlNNdXRhYmxlQXJyYXmjqaspV05TQXJyYXlZezExNiwgMTd90iUmrq9fEA9OU1RhYmxlQ2VsbFZpZXeksKanKV8QD05TVGFibGVDZWxsVmlld1l0ZXh0RmllbGTSJSaztF8QFE5TTmliT3V0bGV0Q29ubmVjdG9yo7O1KV5OU05pYkNvbm5lY3RvctINK7e4gCakPTxWvIAJgAuAD4Ak0g0gIb+ABIAlXU5TQXBwbGljYXRpb27SJSarwqKrKdINK7fFgCakFj08FoACgAmAC4AC0g0rt8yAJqYWPTxWvDWAAoAJgAuAD4AkgAjSDSu31YAmptbX2Nna24AqgCuALIAtgC6ALxAFEAcQCBAJEArSDSsz44AeoNINK7fmgCag0iUm6OleTlNJQk9iamVjdERhdGGi6ClfEA9OU0tleWVkQXJjaGl2ZXLR7O1dSUIub2JqZWN0ZGF0YYABAAgAEQAaACMALQAyADcAbQBzAIoAnQCrALIAvwDGANEA3wDxAQ0BJwFDAUUBRwFJAUsBTQFPAVEBUwFVAVcBWQFeAWoBbAFuAXcBfAGHAZABnwGiAasBsAG7Ab0BvgHDAdAB1AHaAd8B4QHjAeUB7gH2AgQCDQIPAhECEwIVAiQCMgI7Ak0CZAJwAnsCfQJ/AoIChAKGAogCigKPApECkwKVAqgCsgK5AsUC4QLiAuQC5gLpAusC7QLvAvEC8wL9AwEDDAMfAysDOANDA1YDZANwA3oDjgOTA5gDmgOcA54DoAOiA6QDpgOuA7cDvgPFA84D0APSA9sD3gPrA/AD9wP6BAUEEwQfBCwENAQ2BDgEOgQ8BD4ERQRSBFkEYQRjBGUEcwR4BIAEgwSOBJAEkgSUBJYEqQSwBLIEtQS6BMwE0QTeBOUE6gT2BPwFBgUNBRkFHgUtBTEFOQVDBUgFWgVfBXEFewWABZcFmwWqBa8FsQW2BbgFugW8Bb4FwwXFBccF1QXaBd0F4gXkBekF6wXtBe8F8QX2BfgF/wYBBgMGBQYHBgkGCwYQBhIGGQYbBh0GHwYhBiMGJQYnBikGKwYtBi8GNAY2BjcGPAY+Bj8GRAZTBlYGaAZrBnkAAAAAAAACAQAAAAAAAADuAAAAAAAAAAAAAAAAAAAGew== + Number + 12 + String + String + + Array + + + YnBsaXN0MDDUAQIDBAUG6utYJHZlcnNpb25YJG9iamVjdHNZJGFyY2hpdmVyVCR0b3ASAAGGoK8QMwcIHyMkKi4yNj5MUF5fYGFzdHx9gIqLjJGUmZqdoqisrbGytr3AwcPK09yI3d7f4OHk51UkbnVsbNsJCgsMDQ4PEBESExQVFhcYGRobHB0dXxAQTlNWaXNpYmxlV2luZG93c11OU09iamVjdHNLZXlzVk5TUm9vdFxOU09pZHNWYWx1ZXNWJGNsYXNzWk5TT2lkc0tleXNdTlNDb25uZWN0aW9uc18QD05TT2JqZWN0c1ZhbHVlc18QGU5TQWNjZXNzaWJpbGl0eUNvbm5lY3RvcnNfEBdOU0FjY2Vzc2liaWxpdHlPaWRzS2V5c18QGU5TQWNjZXNzaWJpbGl0eU9pZHNWYWx1ZXOABYAjgAKAKYAygCiAB4AngDCAMYAx0g0gISJbTlNDbGFzc05hbWWABIADWE5TT2JqZWN00iUmJyhaJGNsYXNzbmFtZVgkY2xhc3Nlc15OU0N1c3RvbU9iamVjdKInKVhOU09iamVjdNINKywtWk5TLm9iamVjdHOABqDSJSYvMFxOU011dGFibGVTZXSjLzEpVU5TU2V00g0rMzSAHqE1gAjUDTc4OTo7PD1XTlNMYWJlbF1OU0Rlc3RpbmF0aW9uWE5TU291cmNlgCKAIYALgAnXPw1AQUJDRDxGR0hJSktdTlNOZXh0S2V5Vmlld1hOU3ZGbGFnc18QD05TTmV4dFJlc3BvbmRlcl8QFE5TUmV1c2VJZGVudGlmaWVyS2V5W05TRnJhbWVTaXplWk5TU3Vidmlld3OAC4AgEQESgACADYAfgArSDSszToAeoTyAC9lRUlNADUFCQ1RVVj1YWT1JXF1ZTlNFbmFibGVkVk5TQ2VsbFtOU1N1cGVydmlld18QGU5TQW50aUNvbXByZXNzaW9uUHJpb3JpdHkJgA+ACREBCoAdgAmADYAMgA5ZezExNiwgMTd9U05pYlp7MjUwLCA3NTB92WJjZGVmZ2gNaWprbEk8b3BxcltOU0NlbGxGbGFnc1xOU0NlbGxGbGFnczJaTlNDb250ZW50c18QEE5TQ2VsbElkZW50aWZpZXJdTlNDb250cm9sVmlld1tOU1RleHRDb2xvcllOU1N1cHBvcnRfEBFOU0JhY2tncm91bmRDb2xvchIEAf5AEhBACACAEIANgAuAGYARgByAFFdNeSBDRUxM1A11dnd4eXp7Vk5TTmFtZVZOU1NpemVYTlNmRmxhZ3OAE4ASI0AqAAAAAAAAEQQUXEx1Y2lkYUdyYW5kZdIlJn5/Vk5TRm9udKJ+KdWBDYKDhIWGh4iJXU5TQ2F0YWxvZ05hbWVbTlNDb2xvck5hbWVcTlNDb2xvclNwYWNlV05TQ29sb3KAFYAYgBYQBoAXVlN5c3RlbVxjb250cm9sQ29sb3LTDYONho+QV05TV2hpdGWAGBADTTAuNjY2NjY2NjY2NwDSJSaSk1dOU0NvbG9yopIp1YENgoOEhYaXiJiAFYAYgBqAG18QEGNvbnRyb2xUZXh0Q29sb3LTDYONho+cgBhCMADSJSaen18QD05TVGV4dEZpZWxkQ2VsbKSeoKEpXE5TQWN0aW9uQ2VsbFZOU0NlbGzSJSajpFtOU1RleHRGaWVsZKWjpaanKVlOU0NvbnRyb2xWTlNWaWV3W05TUmVzcG9uZGVy0iUmqapeTlNNdXRhYmxlQXJyYXmjqaspV05TQXJyYXlZezExNiwgMTd90iUmrq9fEA9OU1RhYmxlQ2VsbFZpZXeksKanKV8QD05TVGFibGVDZWxsVmlld1l0ZXh0RmllbGTSJSaztF8QFE5TTmliT3V0bGV0Q29ubmVjdG9yo7O1KV5OU05pYkNvbm5lY3RvctINK7e4gCakPTxWvIAJgAuAD4Ak0g0gIb+ABIAlXU5TQXBwbGljYXRpb27SJSarwqKrKdINK7fFgCakFj08FoACgAmAC4AC0g0rt8yAJqYWPTxWvDWAAoAJgAuAD4AkgAjSDSu31YAmptbX2Nna24AqgCuALIAtgC6ALxAFEAcQCBAJEArSDSsz44AeoNINK7fmgCag0iUm6OleTlNJQk9iamVjdERhdGGi6ClfEA9OU0tleWVkQXJjaGl2ZXLR7O1dSUIub2JqZWN0ZGF0YYABAAgAEQAaACMALQAyADcAbQBzAIoAnQCrALIAvwDGANEA3wDxAQ0BJwFDAUUBRwFJAUsBTQFPAVEBUwFVAVcBWQFeAWoBbAFuAXcBfAGHAZABnwGiAasBsAG7Ab0BvgHDAdAB1AHaAd8B4QHjAeUB7gH2AgQCDQIPAhECEwIVAiQCMgI7Ak0CZAJwAnsCfQJ/AoIChAKGAogCigKPApECkwKVAqgCsgK5AsUC4QLiAuQC5gLpAusC7QLvAvEC8wL9AwEDDAMfAysDOANDA1YDZANwA3oDjgOTA5gDmgOcA54DoAOiA6QDpgOuA7cDvgPFA84D0APSA9sD3gPrA/AD9wP6BAUEEwQfBCwENAQ2BDgEOgQ8BD4ERQRSBFkEYQRjBGUEcwR4BIAEgwSOBJAEkgSUBJYEqQSwBLIEtQS6BMwE0QTeBOUE6gT2BPwFBgUNBRkFHgUtBTEFOQVDBUgFWgVfBXEFewWABZcFmwWqBa8FsQW2BbgFugW8Bb4FwwXFBccF1QXaBd0F4gXkBekF6wXtBe8F8QX2BfgF/wYBBgMGBQYHBgkGCwYQBhIGGQYbBh0GHwYhBiMGJQYnBikGKwYtBi8GNAY2BjcGPAY+Bj8GRAZTBlYGaAZrBnkAAAAAAAACAQAAAAAAAADuAAAAAAAAAAAAAAAAAAAGew== + 12 + String + + + diff --git a/Tests/Manual/CPPropertyListSerializationTest/Resources/spinner.gif b/Tests/Manual/CPPropertyListSerializationTest/Resources/spinner.gif new file mode 100644 index 000000000..06dbc2bc2 Binary files /dev/null and b/Tests/Manual/CPPropertyListSerializationTest/Resources/spinner.gif differ diff --git a/Tests/Manual/CPPropertyListSerializationTest/index-debug.html b/Tests/Manual/CPPropertyListSerializationTest/index-debug.html new file mode 100644 index 000000000..0ab15ee27 --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + CPPropertyListSerializationTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/CPPropertyListSerializationTest/index.html b/Tests/Manual/CPPropertyListSerializationTest/index.html new file mode 100644 index 000000000..827d3bbbe --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/index.html @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + CPPropertyListSerializationTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + + diff --git a/Tests/Manual/CPPropertyListSerializationTest/main.j b/Tests/Manual/CPPropertyListSerializationTest/main.j new file mode 100644 index 000000000..7f5ccf574 --- /dev/null +++ b/Tests/Manual/CPPropertyListSerializationTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * CPPropertyListSerializationTest + * + * Created by You on March 9, 2012. + * Copyright 2012, Your Company All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +}