home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1994 June / NEBULA_SE.ISO / SourceCode / MiscKit / Examples / MiscString / StringTest.m < prev    next >
Encoding:
Text File  |  1994-01-13  |  8.3 KB  |  186 lines

  1. //
  2. // StringTest.m -- test out the String class
  3. //        Written by Don Yacktman (c) 1993 by Don Yacktman.
  4. //                Version 1.0.  All rights reserved.
  5. //
  6. //        This notice may not be removed from this source code.
  7. //
  8. //    This program is included in the MiscKit by permission from the author
  9. //    and its use is governed by the MiscKit license, found in the file
  10. //    "LICENSE.rtf" in the MiscKit distribution.  Please refer to that file
  11. //    for a list of all applicable permissions and restrictions.
  12. //    
  13.  
  14. #import <appkit/appkit.h>
  15. #import <misckit/misckit.h>
  16. #import <stdio.h>
  17.  
  18. void main()
  19. {
  20.     id string1, string2, string3, string4, string5, string6, string7; int i;
  21.     string1 = [[[MiscString alloc] init] setStringValue:"The first string."];
  22.     string2 = [[MiscString alloc] initString:"01234567890123456789"];
  23.     printf("string1 = \"%s\", length = %d.\n", [string1 stringValue],
  24.             [string1 length]);
  25.     printf("string2 = \"%s\", length = %d.\n", [string2 stringValue],
  26.             [string2 length]);
  27.     string3 = [string1 copy];
  28.     [string3 concatenate:string2];
  29.     printf("String1 + String2 = \"%s\", length = %d.\n",
  30.             [string3 stringValue], [string3 length]);
  31.     printf("String1 = \"%s\", length = %d.\n", [string1 stringValue],
  32.             [string1 length]);
  33.     [string3 free];
  34.     printf("string1!=string1: %d, string1!=string2: %d\n",
  35.             [string1 compareTo:string1], [string1 compareTo:string2]);
  36.     string3 = [string2 left:5];
  37.     string4 = [string2 right:5];
  38.     string5 = [string2 midFrom:5 to:10];
  39.     string6 = [string2 midFrom:6 length:5];
  40.     printf("left5 = %s right5 = %s mid5to10 = %s mid6len5 = %s\n",
  41.             [string3 stringValue], [string4 stringValue],
  42.             [string5 stringValue], [string6 stringValue]);
  43.     [string3 free]; [string4 free]; [string5 free];
  44.     [string6 free]; string6 = nil;
  45.     string5 = [[MiscString alloc] initString:"first"];
  46.     string3 = [string1 subStringLeft:string5];
  47.     string4 = [string1 subStringRight:string5];
  48.     printf("Substrings from string1 and \"first\"...Left:\"%s\" Right:\"%s\"\n",
  49.             [string3 stringValue], [string4 stringValue]);
  50.     [string5 setStringValue:"don:*:23:21:Don Yacktman:/LocalLibrary/Users/don:/bin/csh"];
  51.     printf("Extract parts from \"%s\" delimiting with ':':\n",
  52.             [string5 stringValue]);
  53.     printf("    Part    #3 is \"%s\"\n",
  54.             [[string5 extractPart:2 useAsDelimiter:':'] stringValueAndFree]);
  55.     printf("    Part   #10 is \"%s\"\n",
  56.             [[string5 extractPart:9 useAsDelimiter:':'] stringValueAndFree]);
  57.     printf("Return was %s.\n", [string5 extractPart:10 useAsDelimiter:':']
  58.             ? "empty object" : "nil");
  59.     printf("    First part is \"%s\"\n",
  60.             [[string5 extractPart:DAY_FIRST useAsDelimiter:':'] stringValueAndFree]);
  61.     printf("    Last  part is \"%s\"\n",
  62.             [[string5 extractPart:DAY_LAST useAsDelimiter:':'] stringValueAndFree]);
  63.     printf("Extract all parts with while loop:\n"); i = 0;
  64.     while (string6 = [string5 extractPart:i useAsDelimiter:':']) {
  65.         printf("    part #%d is: \"%s\".\n", i++, [string6 stringValueAndFree]);
  66.     }
  67.     [string5 setStringValue:"/Net/darth/Users/don/Projects/daymisckit_proj/daymisckit-1/DAYString.m"];
  68.     printf("Given:        %s\n", [string5 stringValue]);
  69.     printf("    Path is:  %s\n", [[string5 pathName] stringValueAndFree]);
  70.     printf("Filename is:  %s\n", [[string5 fileName] stringValueAndFree]);
  71.  
  72.     //Carl's tests...
  73.     string7 = [MiscString newWithString:"   Hello, how are you?   "];
  74.     printf("Carl's string: \"%s\", length = %d\n",
  75.             [string7 stringValue], [string7 length]);
  76.     printf("Numwords: %d\n",[string7 numWords]);
  77.     printf("3rd word: \"%s\"\n",[[string7 wordNum:2] stringValueAndFree]);
  78.     printf("trimmed: \"%s\"\n",[[string7 trimSpaces] stringValue]);
  79.     printf("Numwords: %d\n",[string7 numWords]);
  80.     printf("Reversed: \"%s\"\n",[[string7 reverse] stringValue]);
  81.     printf("Reversed again: \"%s\"\n",[[string7 reverse] stringValue]);
  82.     printf("ToUpper:  \"%s\"\n",[[string7 toUpper] stringValue]);
  83.     printf("ToLower:  \"%s\"\n",[[string7 toLower] stringValue]);
  84.     printf("Inserting \"Oh! \" at 0:  \"%s\"\n",
  85.             [[string7 insert:"Oh! " at:0] stringValue]);
  86.     printf("Char at 0: '%c'\n",[string7 charAt:0]);
  87.     printf("ReplaceFrom 0to2 with \"YOHO!\":  \"%s\"\n",
  88.             [[string7 replaceFrom:0 to:2 with:"YOHO!"] stringValue]);
  89.     printf("spotOf 'o': %d\n",[string7 spotOf:'o']);
  90.     printf("spotOf 'o' nocase: %d\n",
  91.             [string7 spotOf:'o' caseSensitive:NO]);
  92.     printf("rspotOf 'O': %d\n",[string7 rspotOf:'O']);
  93.     printf("rspotOf 'O' nocase: %d\n",
  94.             [string7 rspotOf:'O' caseSensitive:NO]);
  95.     printf("10th rspotOf 'O': %d\n",[string7 rspotOf:'O' occurrenceNum:10]);
  96.     printf("replace \"YOHO!\" with \"My!\": \"%s\"\n",
  97.             [[string7 replace:"YOHO!" with:"My!"] stringValue]);
  98.     printf("String now is \"%s\"\n",
  99.             [[string7 setStringValue:"  Hello,   I    am  fine today.  Right?  "]
  100.             stringValue]);
  101.     printf("Squashed: \"%s\"\n",[[string7 squashSpaces] stringValue]);
  102.     printf("endcmp \"Right?\": %d\n",[string7 endcmp:"Right?"]);
  103.     printf("endcasecmp \"RIGHT?\": %d\n",[string7 endcasecmp:"RIGHT?"]);
  104.     printf("endcmp \"RIGHT?\": %d\n",[string7 endcmp:"RIGHT?"]);
  105.     printf("endcasecmp n:3 \"nacHT?\": %d\n",
  106.             [string7 endcasecmp:"nacHT?" n:3]);
  107.     [string7 replaceCharAt:0 with:'J'];
  108.     printf("replaceCharAt:0 with 'J': \"%s\"\n",
  109.             [string7 stringValue]);
  110.     printf("insertChar 'a' at 1: \"%s\"\n",
  111.             [[string7 insertChar:'a' at:1] stringValue]);
  112.     // tests for v1.3:
  113.     [string1 setStringValue:"not empty"];
  114.     printf("Not empty (\"%s\"): %s  (length = %d)\n", [string1 stringValue],
  115.             ([string1 emptyString] ? "YES" : "NO"), [string1 length]);
  116.     [string1 freeString];
  117.     printf("Empty (\"%s\"): %s  (length = %d)\n", [string1 stringValue],
  118.             ([string1 emptyString] ? "YES" : "NO"), [string1 length]);
  119.     [string1 setStringValue:"Something wicked this way comes."];
  120.     printf("Replace all 'i' with '!':  \"%s\".\n",
  121.             [[string1 replaceEveryInstanceOfChar:'i' withChar:'!']
  122.                     stringValue]);
  123.     [string1 setStringValue:"One "]; [string7 setStringValue:"one "];
  124.     [string2 setStringValue:"Two "]; [string3 setStringValue:"Three "];
  125.     [string4 setStringValue:"Four "]; [string5 setStringValue:"Five"];
  126.     [string7 catStrings:"two ", "three ", "four ", "five", NULL];
  127.     printf("catStrings:  \"%s\".\n", [string7 stringValue]);
  128.     [string1 concatenateStrings:string2, string3, string4, string5, nil];
  129.     printf("concatenateStrings:  \"%s\".\n", [string1 stringValue]);
  130.  
  131.     printf("String now is \"%s\"\n",
  132.             [[string1 setStringValue:"Something wicked this way comes."]
  133.             stringValue]);
  134.     printf("(All tests below restart with above string)\n");
  135.     printf("Number of 's': %d\n", [string1 numOfChar:'s']);
  136.     printf("Number of 's' nocase: %d\n", [string1 numOfChar:'s' caseSensitive:NO]);
  137.  
  138.     printf("Replace all 's' with '!':  \"%s\".\n",
  139.             [[string1 replaceEveryOccurrenceOfChar:'s' withChar:'!']
  140.             stringValue]);
  141.     [string1 setStringValue:"Something wicked this way comes."];
  142.     printf("Replace all 's' with 's' nocase:  \"%s\".\n",
  143.             [[string1 replaceEveryOccurrenceOfChar:'s' withChar:'s'
  144.                 caseSensitive:NO] stringValue]);
  145.  
  146.     [string1 setStringValue:"Something wicked this way comes."];
  147.     printf("Replace all 's' with \"Hi!\":  \"%s\".\n",
  148.             [[string1 replaceEveryOccurrenceOfChar:'s'
  149.             with:"Hi!"] stringValue]);
  150.  
  151.     [string1 setStringValue:"Something wicked this way comes."];
  152.     printf("Replace all 's' with \"Hi!\" nocase:  \"%s\".\n",
  153.             [[string1 replaceEveryOccurrenceOfChar:'s'
  154.             with:"Hi!" caseSensitive:NO] stringValue]);
  155.     
  156.     [string1 setStringValue:"Something wicked this way comes."];
  157.     printf("Replace all 's' with \"\" nocase:  \"%s\".\n",
  158.             [[string1 replaceEveryOccurrenceOfChar:'s'
  159.             with:"" caseSensitive:NO] stringValue]);
  160.     
  161.     [string1 setStringValue:"Something wicked this way comes."];
  162.     printf("numOfChars 'siw' nocase: %d\n",
  163.             [string1 numOfChars:"siw" caseSensitive:NO]);
  164.     
  165.     [string1 setStringValue:"Something wicked this way comes."];
  166.     printf("spotOfChars 'siw': %d\n",
  167.             [string1 spotOfChars:"siw"]);
  168.     
  169.     [string1 setStringValue:"Something wicked this way comes."];
  170.     printf("spotOfChars 'siopen w' nocase: %d\n",
  171.             [string1 spotOfChars:"siw" caseSensitive:NO]);
  172.     
  173.     [string1 setStringValue:"Something wicked this way comes."];
  174.     printf("spotOfChars 'siw' #3 nocase: %d\n",
  175.             [string1 spotOfChars:"siw" occurrenceNum:3 caseSensitive:NO]);
  176.     
  177.     [string1 setStringValue:"Something wicked this way comes."];
  178.     printf("Replace all 'siw' with '!' nocase:  \"%s\".\n",
  179.             [[string1 replaceEveryOccurrenceOfChars:"siw"
  180.             withChar:'!' caseSensitive:NO] stringValue]);
  181.     
  182.     [string3 free]; [string4 free]; [string5 free];
  183.     [string1 free]; [string2 free]; [string7 free];
  184.     exit(0);
  185. }
  186.