199451b44SJordan Rupprecht#import <Foundation/Foundation.h>
299451b44SJordan Rupprecht
399451b44SJordan Rupprecht#if defined(__APPLE__)
499451b44SJordan Rupprecht#if defined(__arm__) || defined(__arm64__) || defined(__aarch64__)
599451b44SJordan Rupprecht#define IOS
699451b44SJordan Rupprecht#endif
799451b44SJordan Rupprecht#endif
899451b44SJordan Rupprecht
999451b44SJordan Rupprecht#if defined(IOS)
1099451b44SJordan Rupprecht#import <Foundation/NSGeometry.h>
1199451b44SJordan Rupprecht#else
1299451b44SJordan Rupprecht#import <Carbon/Carbon.h>
1399451b44SJordan Rupprecht#endif
1499451b44SJordan Rupprecht
1599451b44SJordan Rupprechtint main (int argc, const char * argv[])
1699451b44SJordan Rupprecht{
1799451b44SJordan Rupprecht
1899451b44SJordan Rupprecht    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
1999451b44SJordan Rupprecht
20*7b244258SRaphael Isemann      NSString *empty = @"";
2199451b44SJordan Rupprecht	    NSString *str0 = [[NSNumber numberWithUnsignedLongLong:0xFF] stringValue];
2299451b44SJordan Rupprecht	    NSString *str1 = [NSString stringWithCString:"A rather short ASCII NSString object is here" encoding:NSASCIIStringEncoding];
2399451b44SJordan Rupprecht	    NSString *str2 = [NSString stringWithUTF8String:"A rather short UTF8 NSString object is here"];
2499451b44SJordan Rupprecht	    NSString *str3 = @"A string made with the at sign is here";
2599451b44SJordan Rupprecht	    NSString *str4 = [NSString stringWithFormat:@"This is string number %ld right here", (long)4];
2699451b44SJordan Rupprecht	    NSRect ns_rect_4str = {{1,1},{5,5}};
2799451b44SJordan Rupprecht	    NSString* str5 = NSStringFromRect(ns_rect_4str);
2899451b44SJordan Rupprecht	    NSString* str6 = [@"/usr/doc/README.1ST" pathExtension];
2999451b44SJordan Rupprecht	    const unichar myCharacters[] = {0x03C3,'x','x'};
3099451b44SJordan Rupprecht	    NSString *str7 = [NSString stringWithCharacters: myCharacters
3199451b44SJordan Rupprecht	                                             length: sizeof myCharacters / sizeof *myCharacters];
3299451b44SJordan Rupprecht	    NSString* str8 = [@"/usr/doc/file.hasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTimehasVeryLongExtensionThisTime" pathExtension];
3399451b44SJordan Rupprecht	    const unichar myOtherCharacters[] = {'a',' ', 'v','e','r','y',' ',
3499451b44SJordan Rupprecht	        'm','u','c','h',' ','b','o','r','i','n','g',' ','t','a','s','k',
3599451b44SJordan Rupprecht	        ' ','t','o',' ','w','r','i','t','e', ' ', 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ',
3699451b44SJordan Rupprecht	        't','h','i','s',' ','w','a','y','!','!',0x03C3, 0};
3799451b44SJordan Rupprecht	    NSString *str9 = [NSString stringWithCharacters: myOtherCharacters
3899451b44SJordan Rupprecht	                                             length: sizeof myOtherCharacters / sizeof *myOtherCharacters];
3999451b44SJordan Rupprecht	    const unichar myNextCharacters[] = {0x03C3, 0x0000};
4099451b44SJordan Rupprecht	    NSString *str10 = [NSString stringWithFormat:@"This is a Unicode string %S number %ld right here", myNextCharacters, (long)4];
4199451b44SJordan Rupprecht	    NSString *str11 = NSStringFromClass([str10 class]);
4299451b44SJordan Rupprecht	    NSString *label1 = @"Process Name: ";
4399451b44SJordan Rupprecht	    NSString *label2 = @"Process Id: ";
4499451b44SJordan Rupprecht	    NSString *processName = [[NSProcessInfo processInfo] processName];
4599451b44SJordan Rupprecht	    NSString *processID = [NSString stringWithFormat:@"%d", [[NSProcessInfo processInfo] processIdentifier]];
4699451b44SJordan Rupprecht	    NSString *str12 = [NSString stringWithFormat:@"%@ %@ %@ %@", label1, processName, label2, processID];
4799451b44SJordan Rupprecht	    NSString *eAcute = [NSString stringWithFormat: @"%C", 0x00E9];
4899451b44SJordan Rupprecht	    NSString *randomHaziChar = [NSString stringWithFormat: @"%C", 0x9DC5];
4999451b44SJordan Rupprecht	    NSString *japanese = @"色は匂へど散りぬるを";
5099451b44SJordan Rupprecht	    NSString *italian = @"L'Italia è una Repubblica democratica, fondata sul lavoro. La sovranità appartiene al popolo, che la esercita nelle forme e nei limiti della Costituzione.";
5199451b44SJordan Rupprecht	    NSString* french = @"Que veut cette horde d'esclaves, De traîtres, de rois conjurés?";
5299451b44SJordan Rupprecht	    NSString* german = @"Über-Ich und aus den Ansprüchen der sozialen Umwelt";
5399451b44SJordan Rupprecht	    void* data_set[3] = {str1,str2,str3};
5499451b44SJordan Rupprecht      NSString *hebrew = [NSString stringWithString:@"לילה טוב"];
5599451b44SJordan Rupprecht
5699451b44SJordan Rupprecht	    NSAttributedString* attrString = [[NSAttributedString alloc] initWithString:@"hello world from foo" attributes:[NSDictionary new]];
5799451b44SJordan Rupprecht	    [attrString isEqual:nil];
5899451b44SJordan Rupprecht	    NSAttributedString* mutableAttrString = [[NSMutableAttributedString alloc] initWithString:@"hello world from foo" attributes:[NSDictionary new]];
5999451b44SJordan Rupprecht	    [mutableAttrString isEqual:nil];
6099451b44SJordan Rupprecht
6199451b44SJordan Rupprecht	    NSString* mutableString = [[NSMutableString alloc] initWithString:@"foo"];
6299451b44SJordan Rupprecht	    [mutableString insertString:@"foo said this string needs to be very long so much longer than whatever other string has been seen ever before by anyone of the mankind that of course this is still not long enough given what foo our friend foo our lovely dearly friend foo desired of us so i am adding more stuff here for the sake of it and for the joy of our friend who is named guess what just foo. hence, dear friend foo, stay safe, your string is now  long enough to accommodate your testing need and I will make sure that if not we extend it with even more fuzzy random meaningless words pasted one after the other from a long tiresome friday evening spent working in my office. my office mate went home but I am still randomly typing just for the fun of seeing what happens of the length of a Mutable String in Cocoa if it goes beyond one byte.. so be it, dear " atIndex:0];
6399451b44SJordan Rupprecht
6499451b44SJordan Rupprecht	    NSString* mutableGetConst = [NSString stringWithCString:[mutableString cString]];
6599451b44SJordan Rupprecht
6699451b44SJordan Rupprecht	    [mutableGetConst length];
6799451b44SJordan Rupprecht	    CFMutableStringRef mutable_string_ref = CFStringCreateMutable(NULL,100);
6899451b44SJordan Rupprecht	    CFStringAppend(mutable_string_ref, CFSTR("Wish ya knew"));
6999451b44SJordan Rupprecht	    CFStringRef cfstring_ref = CFSTR("HELLO WORLD");
7099451b44SJordan Rupprecht
7199451b44SJordan Rupprecht	NSArray *components = @[@"usr", @"blah", @"stuff"];
7299451b44SJordan Rupprecht	NSString *path = [NSString pathWithComponents: components];
73*7b244258SRaphael Isemann  NSString *empty_path = [empty stringByDeletingPathExtension];
7499451b44SJordan Rupprecht
7599451b44SJordan Rupprecht  const unichar someOfTheseAreNUL[] = {'a',' ', 'v','e','r','y',' ',
7699451b44SJordan Rupprecht      'm','u','c','h',' ','b','o','r','i','n','g',' ','t','a','s','k',
7799451b44SJordan Rupprecht      ' ','t','o',' ','w','r','i','t','e', 0, 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ',
7899451b44SJordan Rupprecht      't','h','i','s',' ','w','a','y','!','!', 0x03C3, 0};
7999451b44SJordan Rupprecht  NSString *strwithNULs = [NSString stringWithCharacters: someOfTheseAreNUL
8099451b44SJordan Rupprecht                                           length: sizeof someOfTheseAreNUL / sizeof *someOfTheseAreNUL];
8199451b44SJordan Rupprecht
8299451b44SJordan Rupprecht  const unichar someOfTheseAreNUL2[] = {'a',' ', 'v','e','r','y',' ',
8399451b44SJordan Rupprecht      'm','u','c','h',' ','b','o','r','i','n','g',' ','t','a','s','k',
8499451b44SJordan Rupprecht      ' ','t','o',' ','w','r','i','t','e', 0, 'a', ' ', 's', 't', 'r', 'i', 'n', 'g', ' ',
8599451b44SJordan Rupprecht      't','h','i','s',' ','w','a','y','!','!'};
8699451b44SJordan Rupprecht  NSString *strwithNULs2 = [NSString stringWithCharacters: someOfTheseAreNUL2
8799451b44SJordan Rupprecht                                           length: sizeof someOfTheseAreNUL2 / sizeof *someOfTheseAreNUL2];
8899451b44SJordan Rupprecht
8999451b44SJordan Rupprecht    [pool drain]; // break here
9099451b44SJordan Rupprecht    return 0;
9199451b44SJordan Rupprecht}
9299451b44SJordan Rupprecht
93