Changeset 82


Ignore:
Timestamp:
Feb 25, 2007, 4:15:10 PM (18 years ago)
Author:
RBRi
Message:

file util refactoring and many more unit tests

Location:
trunk/NewView
Files:
5 added
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/NewView/CmdLineParameterUnit.pas

    r80 r82  
    7878       PROCEDURE logDetails;
    7979       PROCEDURE parseCmdLine(aCmdLineString : String);
    80   end;
    81 
    82   FUNCTION getOwnHelpFileName: String;
     80       FUNCTION getOwnHelpFileName: String;
     81  end;
    8382
    8483  // returns a string containing the whole
     
    9089uses
    9190  DOS,
    92   ACLFileUtility;
     91  FileUtilsUnit;
    9392
    9493  PROCEDURE TCmdLineParameters.writeDetailsTo(aStrings : TStrings);
     
    426425      if fileNames = '' then
    427426      begin
    428         tmpOwnHelpFileName := FindDefaultLanguageHelpFile('NewView');
     427        tmpOwnHelpFileName := getOwnHelpFileName;
    429428        if FileExists(tmpOwnHelpFileName)
    430429        then
     
    605604
    606605
    607   FUNCTION getOwnHelpFileName: String;
     606  FUNCTION TCmdLineParameters.getOwnHelpFileName: String;
     607  var
     608    tmpLanguage : String;
    608609  begin
    609     result := FindDefaultLanguageHelpFile('NewView');
     610    tmpLanguage := getLanguage;
     611    if tmpLanguage = '' then
     612    begin
     613      tmpLanguage := GetEnv(LanguageEnvironmentVar)
     614    end;
     615
     616    result := FindDefaultLanguageHelpFile('NewView', tmpLanguage);
    610617  end;
    611618
  • trunk/NewView/DebugUnit.pas

    r76 r82  
    6060
    6161Implementation
     62
    6263uses
    6364  BseDos,
  • trunk/NewView/FileDialogForm.pas

    r32 r82  
    124124  SysUtils,
    125125  ACLStringUtility,
    126   ACLFileUtility,
     126  FileUtilsUnit,
    127127  ACLDialogs,
    128128  ACLString,
     
    487487  // (in order to support typing directories, either full or relative)
    488488  Directory := DirectoryListBox.Directory;
    489   NewDirectory := ACLFileUtility.ExpandPath( Directory, FileNameText );
     489  NewDirectory := ExpandPath( Directory, FileNameText );
    490490
    491491  DosErrorAPI( FERR_DISABLEHARDERR );
     
    521521    // Work out directory
    522522    FilePath := ExtractFilePath( FileName );
    523     FilePath := ACLFileUtility.ExpandPath( Directory, FilePath );
    524 
    525     FileName := AddSlash( FilePath )
     523    FilePath := ExpandPath( Directory, FilePath );
     524
     525    FileName := AddDirectorySeparator( FilePath )
    526526                + ExtractFileName( FileName );
    527527    if RequireFileExists then
     
    592592  DosErrorAPI( FERR_DISABLEHARDERR );
    593593
    594   ListDirectory( DirectoryListBox.Directory,
    595                  FileMask,
    596                  Filenames,
    597                  nil );
     594  ListFilesInDirectory( DirectoryListBox.Directory,
     595                        FileMask,
     596                        Filenames);
    598597
    599598  Filenames.Sort;
     
    606605    Filename := Filenames[ i ];
    607606
    608     Title := GetHelpFileTitle( AddSlash( DirectoryListBox.Directory )
     607    Title := GetHelpFileTitle( AddDirectorySeparator( DirectoryListBox.Directory )
    609608                               + Filename );
    610609
  • trunk/NewView/GlobalSearchForm.pas

    r43 r82  
    143143  SysUtils,
    144144  DebugUnit,
    145   ACLFileUtility,
    146145  ACLDialogs,
    147146  ControlsUtility,
     
    153152  SearchDirectoriesFormUnit,
    154153  SettingsUnit,
    155   InformationFormUnit;
     154  InformationFormUnit,
     155  FileUtilsUnit;
    156156
    157157type
     
    517517    begin
    518518      Dir := StrLeftWithout( Dir, 3 );
    519       ListDirectoryRecursiveAdditive2( Dir,
     519      ListFilesInDirectoryRecursiveWithTermination(
     520                                       Dir,
    520521                                       '*.inf;*.hlp',
    521                                        Dir, // want full paths
    522522                                       Files,
    523                                        nil, // don't care to know subdirs
    524523                                       ThreadManager.StopRequested,
    525524                                       true ); // check termination
     
    527526    else
    528527    begin
    529       ListDirectoryAdditive( Dir,
    530                              '*.inf;*.hlp',
    531                              Dir, // want full paths
    532                              Files,
    533                              nil ); // don't care to know subdirs
     528      ListFilesInDirectory( Dir,
     529                            '*.inf;*.hlp',
     530                            Files);
    534531    end;
    535532  end;
  • trunk/NewView/MainForm.pas

    r81 r82  
    827827  // Library
    828828  ACLStringUtility,
    829   ACLFileUtility,
    830829  ACLFileIOUtility,
    831830  ACLUtility,
     
    834833  StringUtilsUnit,
    835834  DebugUnit,
     835
     836  FileUtilsUnit,
    836837
    837838  // Components
     
    13181319  DropObject := Source as TExternalDragDropObject;
    13191320
    1320   g_ExternalLinkFileName := AddSlash( DropObject.ContainerName )
     1321  g_ExternalLinkFileName := AddDirectorySeparator( DropObject.ContainerName )
    13211322                            + DropObject.SourceFilename;
    13221323  g_ExternalLinkTopic := '';
     
    26822683begin
    26832684  // try in same dir as source file
    2684   FilePath := AddSlash( ExtractFilePath( g_ExternalLinkSourceFilename ) )
     2685  FilePath := AddDirectorySeparator( ExtractFilePath( g_ExternalLinkSourceFilename ) )
    26852686              + g_ExternalLinkFilename;
    26862687
     
    38073808  StartingUp := true;
    38083809
    3809   Application.HelpFile := GetOwnHelpFilename; // OWN_HELP_MARKER;
    3810   Application.OnHelp := OnHelp;
    3811 
    38123810  SharedMemory := AccessSharedMemory;
    38133811  GlobalFilelist := TGlobalFilelist.Create;
     
    38173815  CmdLineParameters := TCmdLineParameters.Create;
    38183816  CmdLineParameters.parseCmdLine(tmpCmdLine);
     3817
     3818  Application.HelpFile := CmdLineParameters.GetOwnHelpFilename; // OWN_HELP_MARKER;
     3819  Application.OnHelp := OnHelp;
    38193820
    38203821  RegisterForLanguages( OnLanguageEvent );
     
    64856486
    64866487    // Find the help file, if possible
    6487     FullFilePath := FindHelpFile( Filename );
     6488    if Filename = OWN_HELP_MARKER then
     6489    begin
     6490      FullFilePath := CmdLineParameters.GetOwnHelpFileName;
     6491    end
     6492    else
     6493    begin
     6494      FullFilePath := FindHelpFile( Filename );
     6495    end;
     6496
    64886497    if FullFilePath <> '' then
    64896498    begin
     
    67886797  if Settings.UseOriginalDialogs then
    67896798  begin
    6790     SystemOpenDialog.Filename := AddSlash( Settings.LastOpenDirectory ) + '*.hlp;*.inf';
     6799    SystemOpenDialog.Filename := AddDirectorySeparator( Settings.LastOpenDirectory ) + '*.hlp;*.inf';
    67916800    if not SystemOpenDialog.Execute then
    67926801      exit;
  • trunk/NewView/StartupUnit.pas

    r61 r82  
    4848  PMWin,
    4949  ACLStringUtility,
    50   ACLFileUtility,
    51   HelpManagerUnit;
     50  HelpManagerUnit,
     51  FileUtilsUnit;
    5252
    5353// Look for any items that are actually specifiying environment
     
    9595  AlternativeFileName: string;
    9696begin
    97   if FileName = OWN_HELP_MARKER then
    98   begin
    99     Result := GetOwnHelpFileName;
    100     exit;
    101   end;
    102 
    10397  Result := '';
    10498
  • trunk/NewView/StringUtilsUnit.pas

    r75 r82  
    4545  //     StrExtractStrings('1x2x3\x4', "x", '\') ->
    4646  //     returns 4 strings: "1", "", "2" and "3x4"
    47   Procedure StrExtractStrings(Var aResult : TStringList; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     47  Procedure StrExtractStrings(Var aResult : TStrings; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     48
     49  // same as StrExtractStrings but ignores empty strings
     50  Procedure StrExtractStringsIgnoreEmpty(Var aResult : TStrings; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     51
     52  // removes all occurences of char from aSetOfChars from the beginning
     53  // of a String.
     54  Function StrTrimLeftChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String;
     55
     56  // removes all occurences of char from aSetOfChars from the end
     57  // of a String.
     58  Function StrTrimRightChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String;
    4859
    4960  // removes all occurences of char from aSetOfChars from the beginning
     
    5364  // removes all blanks from beginning and end
    5465  Function StrTrim(const aReceiver: String): String;
     66
     67  // Returns the aCount leftmost chars of aString
     68  Function StrLeft(const aString : String; const aCount : Integer) : String;
    5569
    5670  // returns true if the String ends with the provides one
     
    114128  begin
    115129    result := '';
    116     for i := 0 To stringList.count-1 do
     130    for i := 0 to stringList.count-1 do
    117131    begin
    118132      if (i > 0) then result := result + '&';
     
    156170
    157171
    158   Procedure StrExtractStrings(Var aResult: TStringList; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     172  Procedure PrivateStrExtractStrings(   Var aResult: TStrings;
     173                                        const aReceiver: String;
     174                                        const aSetOfChars: TSetOfChars;
     175                                        const anEscapeChar: char;
     176                                        const anIgnoreEmptyFlag : boolean);
    159177  Var
    160178    i : Integer;
     
    189207          if (tmpChar IN aSetOfChars) then
    190208          begin
    191             aResult.add(tmpPart);
     209            if (NOT anIgnoreEmptyFlag) OR ('' <> tmpPart) then
     210            begin
     211              aResult.add(tmpPart);
     212            end;
    192213            tmpPart := '';
    193214            i := i + 1;
     
    199220          end;
    200221    end;
    201     aResult.add(tmpPart);
     222
     223    if (NOT anIgnoreEmptyFlag) OR ('' <> tmpPart) then
     224    begin
     225      aResult.add(tmpPart);
     226    end;
     227  end;
     228
     229
     230  Procedure StrExtractStrings(Var aResult: TStrings; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     231  Begin
     232    PrivateStrExtractStrings(aResult, aReceiver, aSetOfChars, anEscapeChar, false);
     233  end;
     234
     235
     236  Procedure StrExtractStringsIgnoreEmpty(Var aResult: TStrings; Const aReceiver: String; const aSetOfChars: TSetOfChars; const anEscapeChar: char);
     237  Begin
     238    PrivateStrExtractStrings(aResult, aReceiver, aSetOfChars, anEscapeChar, true);
     239  end;
     240
     241
     242  Function StrTrimLeftChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String;
     243  Var
     244    i : Longint;
     245  Begin
     246    i := 1;
     247    // mem optimization
     248    if aReceiver[i] in aSetOfChars then
     249    begin
     250      while i <= Length(aReceiver) do
     251      begin
     252        if aReceiver[i] in aSetOfChars then
     253          inc(i)
     254        else
     255          break;
     256      end;
     257      result := Copy(aReceiver, i, Length(aReceiver)-i+1);
     258    end
     259    else
     260    begin
     261      result := aReceiver;
     262    end;
     263  end;
     264
     265
     266  Function StrTrimRightChars(const aReceiver: String; const aSetOfChars: TSetOfChars): String;
     267  Var
     268    i : Longint;
     269  Begin
     270    i := Length(aReceiver);
     271
     272    // mem optimization
     273    if aReceiver[i] in aSetOfChars then
     274    begin
     275      while i > 0 do
     276      begin
     277        if aReceiver[i] in aSetOfChars then
     278          dec(i)
     279        else
     280          break;
     281      end;
     282      result := Copy(aReceiver, 1, i);
     283    end
     284    else
     285    begin
     286      result := aReceiver;
     287    end;
    202288  end;
    203289
     
    207293    i : Longint;
    208294    j : Longint;
    209   Begin
     295    tmpNeedCopy : boolean;
     296  Begin
     297    tmpNeedCopy := false;
    210298    i := 1;
    211299    while i < Length(aReceiver) do
    212300    begin
    213301      if aReceiver[i] in aSetOfChars then
    214         inc(i)
    215        else
    216          break;
     302      begin
     303        inc(i);
     304        tmpNeedCopy := true;
     305      end
     306      else
     307      begin
     308        break;
     309      end;
    217310    end;
    218311
     
    221314    begin
    222315      if aReceiver[j] in aSetOfChars then
    223         dec(j)
     316      begin
     317        dec(j);
     318        tmpNeedCopy := true;
     319      end
    224320      else
     321      begin
    225322        break;
    226     end;
    227 
    228     result := Copy(aReceiver, i, j-i+1);
     323      end;
     324    end;
     325
     326    if tmpNeedCopy then
     327    begin
     328      result := Copy(aReceiver, i, j-i+1);
     329    end
     330    else
     331    begin
     332      result := aReceiver;
     333    end;
    229334  end;
    230335
     
    233338  Begin
    234339    result := StrTrimChars(aReceiver, [' ']);
     340  end;
     341
     342
     343  Function StrLeft(const aString : String; const aCount : Integer) : String;
     344  Begin
     345    if aCount >= Length(aString) then
     346      Result := aString
     347    else
     348      Result := copy(aString, 1, aCount);
    235349  end;
    236350
  • trunk/NewView/unittests/StringUtilsUnitTests.pas

    r68 r82  
    88  StringUtilsUnit;
    99
    10  FUNCTION getStringUtilsUnitTests : TList;
     10  FUNCTION getStringUtilsUnitTests : TList;
    1111
    1212
     
    279279
    280280
     281  // ------------------------------------------------------
     282
     283
    281284  PROCEDURE testStrExtractStrings_EmptyReceiver;
    282285  VAR
     
    408411
    409412
     413  // ------------------------------------------------------
     414
     415
     416  PROCEDURE testStrExtractStringsIgnoreEmpty_EmptyReceiver;
     417  VAR
     418    tmpResult : TStringList;
     419  BEGIN
     420    tmpResult := TStringList.Create;
     421    StrExtractStringsIgnoreEmpty(tmpResult, '', ['x'], '\');
     422
     423    assertEqualsInt('testStrExtractStringsIgnoreEmpty_EmptyReceiver', 0, tmpResult.count);
     424    tmpResult.Destroy;
     425  END;
     426
     427
     428  PROCEDURE testStrExtractStringsIgnoreEmpty_OnlyOnePart;
     429  VAR
     430    tmpResult : TStringList;
     431  BEGIN
     432    tmpResult := TStringList.Create;
     433    StrExtractStringsIgnoreEmpty(tmpResult, 'abcd', ['x'], '\');
     434
     435    assertEqualsInt('testStrExtractStringsIgnoreEmpty_OnlyOnePart', 1, tmpResult.count);
     436    assertEqualsString('testStrExtractStringsIgnoreEmpty_OnlyOnePart', 'abcd', tmpResult[0]);
     437
     438    tmpResult.Destroy;
     439  END;
     440
     441
     442  PROCEDURE testStrExtractStringsIgnoreEmpty_ManyParts;
     443  VAR
     444    tmpResult : TStringList;
     445  BEGIN
     446    tmpResult := TStringList.Create;
     447    StrExtractStringsIgnoreEmpty(tmpResult, 'abxcd', ['x'], '\');
     448
     449    assertEqualsInt('testStrExtractStringsIgnoreEmpty_ManyParts', 2, tmpResult.count);
     450    assertEqualsString('testStrExtractStringsIgnoreEmpty_ManyParts', 'ab', tmpResult[0]);
     451    assertEqualsString('testStrExtractStringsIgnoreEmpty_ManyParts', 'cd', tmpResult[1]);
     452
     453    tmpResult.Destroy;
     454  END;
     455
     456
     457  PROCEDURE testStrExtractStringsIgnoreEmpty_StartWithDelimiter;
     458  VAR
     459    tmpResult : TStringList;
     460  BEGIN
     461    tmpResult := TStringList.Create;
     462    StrExtractStringsIgnoreEmpty(tmpResult, 'xab', ['x'], '\');
     463
     464    assertEqualsInt('testStrExtractStringsIgnoreEmpty_StartWithDelimiter', 1, tmpResult.count);
     465    assertEqualsString('testStrExtractStringsIgnoreEmpty_StartWithDelimiter', 'ab', tmpResult[0]);
     466
     467    tmpResult.Destroy;
     468  END;
     469
     470
     471  PROCEDURE testStrExtractStringsIgnoreEmpty_EndWithDelimiter;
     472  VAR
     473    tmpResult : TStringList;
     474  BEGIN
     475    tmpResult := TStringList.Create;
     476    StrExtractStringsIgnoreEmpty(tmpResult, 'abx', ['x'], '\');
     477
     478    assertEqualsInt('testStrExtractStringsIgnoreEmpty_EndWithDelimiter', 1, tmpResult.count);
     479    assertEqualsString('testStrExtractStringsIgnoreEmpty_EndWithDelimiter', 'ab', tmpResult[0]);
     480
     481    tmpResult.Destroy;
     482  END;
     483
     484
     485  PROCEDURE testStrExtractStringsIgnoreEmpty_EmptyPartInside;
     486  VAR
     487    tmpResult : TStringList;
     488  BEGIN
     489    tmpResult := TStringList.Create;
     490    StrExtractStringsIgnoreEmpty(tmpResult, 'axxb', ['x'], '\');
     491
     492    assertEqualsInt('testStrExtractStringsIgnoreEmpty_EmptyPartInside', 2, tmpResult.count);
     493    assertEqualsString('testStrExtractStringsIgnoreEmpty_EmptyPartInside', 'a', tmpResult[0]);
     494    assertEqualsString('testStrExtractStringsIgnoreEmpty_EmptyPartInside', 'b', tmpResult[1]);
     495
     496    tmpResult.Destroy;
     497  END;
     498
     499
     500  PROCEDURE testStrExtractStringsIgnoreEmpty_NoDelimiter;
     501  VAR
     502    tmpResult : TStringList;
     503  BEGIN
     504    tmpResult := TStringList.Create;
     505    StrExtractStringsIgnoreEmpty(tmpResult, 'axxb', [], '\');
     506
     507    assertEqualsInt('testStrExtractStringsIgnoreEmpty_NoDelimiter', 1, tmpResult.count);
     508    assertEqualsString('testStrExtractStringsIgnoreEmpty_NoDelimiter', 'axxb', tmpResult[0]);
     509
     510    tmpResult.Destroy;
     511  END;
     512
     513
     514  PROCEDURE testStrExtractStringsIgnoreEmpty_EscapedDelimiter;
     515  VAR
     516    tmpResult : TStringList;
     517  BEGIN
     518    tmpResult := TStringList.Create;
     519    StrExtractStringsIgnoreEmpty(tmpResult, 'a\xb', ['x'], '\');
     520
     521    assertEqualsInt('testStrExtractStringsIgnoreEmpty_EscapedDelimiter', 1, tmpResult.count);
     522    assertEqualsString('testStrExtractStringsIgnoreEmpty_EscapedDelimiter', 'axb', tmpResult[0]);
     523
     524    tmpResult.Destroy;
     525  END;
     526
     527  PROCEDURE testStrExtractStringsIgnoreEmpty_EscapedEscapeChar;
     528  VAR
     529    tmpResult : TStringList;
     530  BEGIN
     531    tmpResult := TStringList.Create;
     532    StrExtractStringsIgnoreEmpty(tmpResult, 'a\\xb', ['x'], '\');
     533
     534    assertEqualsInt('testStrExtractStringsIgnoreEmpty_EscapedEscapeChar', 2, tmpResult.count);
     535    assertEqualsString('testStrExtractStringsIgnoreEmpty_EscapedEscapeChar', 'a\', tmpResult[0]);
     536    assertEqualsString('testStrExtractStringsIgnoreEmpty_EscapedEscapeChar', 'b', tmpResult[1]);
     537
     538    tmpResult.Destroy;
     539  END;
     540
     541
     542  // -------------------------------------------------------------------
     543
     544
     545  PROCEDURE testTrimLeftChars_Empty;
     546  VAR
     547    tmpResult : String;
     548  BEGIN
     549    tmpResult := StrTrimLeftChars('', ['b', 'x']);
     550
     551    assertEqualsString('testTrimLeftChars_Empty', '', tmpResult);
     552  END;
     553
     554
     555  PROCEDURE testTrimLeftChars_RemoveAll;
     556  VAR
     557    tmpResult : String;
     558  BEGIN
     559    tmpResult := StrTrimLeftChars('bxxxbx', ['b', 'x']);
     560
     561    assertEqualsString('testTrimLeftChars_RemoveAll', '', tmpResult);
     562  END;
     563
     564
     565  PROCEDURE testTrimLeftChars_OneLeft;
     566  VAR
     567    tmpResult : String;
     568  BEGIN
     569    tmpResult := StrTrimLeftChars('bxy', ['b', 'x']);
     570
     571    assertEqualsString('testTrimLeftChars_OneLeft', 'y', tmpResult);
     572  END;
     573
     574
     575  PROCEDURE testTrimLeftChars_LeftOnly;
     576  VAR
     577    tmpResult : String;
     578  BEGIN
     579    tmpResult := StrTrimLeftChars('bxbxxay', ['b', 'x']);
     580
     581    assertEqualsString('testTrimLeftChars_LeftOnly', 'ay', tmpResult);
     582  END;
     583
     584
     585  PROCEDURE testTrimLeftChars_CharsInside;
     586  VAR
     587    tmpResult : String;
     588  BEGIN
     589    tmpResult := StrTrimLeftChars('bxabxvvx', ['b', 'x']);
     590
     591    assertEqualsString('testTrimLeftChars_CharsInside', 'abxvvx', tmpResult);
     592  END;
     593
     594
     595  PROCEDURE testTrimLeftChars_Nothing;
     596  VAR
     597    tmpResult : String;
     598  BEGIN
     599    tmpResult := StrTrimLeftChars('acdef', ['b', 'x']);
     600
     601    assertEqualsString('testTrimLeftChars_Nothing', 'acdef', tmpResult);
     602  END;
     603
     604
     605  // -------------------------------------------------------------------
     606
     607
     608  PROCEDURE testTrimRightChars_Empty;
     609  VAR
     610    tmpResult : String;
     611  BEGIN
     612    tmpResult := StrTrimRightChars('', ['b', 'x']);
     613
     614    assertEqualsString('testTrimRightChars_Empty', '', tmpResult);
     615  END;
     616
     617
     618  PROCEDURE testTrimRightChars_RemoveAll;
     619  VAR
     620    tmpResult : String;
     621  BEGIN
     622    tmpResult := StrTrimRightChars('bxxxbx', ['b', 'x']);
     623
     624    assertEqualsString('testTrimRightChars_RemoveAll', '', tmpResult);
     625  END;
     626
     627
     628  PROCEDURE testTrimRightChars_OneLeft;
     629  VAR
     630    tmpResult : String;
     631  BEGIN
     632    tmpResult := StrTrimRightChars('ybx', ['b', 'x']);
     633
     634    assertEqualsString('testTrimRightChars_OneLeft', 'y', tmpResult);
     635  END;
     636
     637
     638  PROCEDURE testTrimRightChars_RightOnly;
     639  VAR
     640    tmpResult : String;
     641  BEGIN
     642    tmpResult := StrTrimRightChars('aybxbxx', ['b', 'x']);
     643
     644    assertEqualsString('testTrimRightChars_RightOnly', 'ay', tmpResult);
     645  END;
     646
     647
     648  PROCEDURE testTrimRightChars_CharsInside;
     649  VAR
     650    tmpResult : String;
     651  BEGIN
     652    tmpResult := StrTrimRightChars('abxvvxb', ['b', 'x']);
     653
     654    assertEqualsString('testTrimRightChars_CharsInside', 'abxvv', tmpResult);
     655  END;
     656
     657
     658  PROCEDURE testTrimRightChars_Nothing;
     659  VAR
     660    tmpResult : String;
     661  BEGIN
     662    tmpResult := StrTrimRightChars('acdef', ['b', 'x']);
     663
     664    assertEqualsString('testTrimRightChars_Nothing', 'acdef', tmpResult);
     665  END;
     666
     667
     668  // -------------------------------------------------------------------
     669
    410670  PROCEDURE testTrimChars_Empty;
    411671  VAR
     
    428688
    429689
     690  PROCEDURE testTrimChars_OneLeftFromLeft;
     691  VAR
     692    tmpResult : String;
     693  BEGIN
     694    tmpResult := StrTrimChars('bxa', ['b', 'x']);
     695
     696    assertEqualsString('testTrimChars_OneLeftFromLeft', 'a', tmpResult);
     697  END;
     698
     699
     700  PROCEDURE testTrimChars_OneLeftFromRight;
     701  VAR
     702    tmpResult : String;
     703  BEGIN
     704    tmpResult := StrTrimChars('abx', ['b', 'x']);
     705
     706    assertEqualsString('testTrimChars_OneLeftFromRight', 'a', tmpResult);
     707  END;
     708
     709
    430710  PROCEDURE testTrimChars_LeftOnly;
    431711  VAR
     
    468748
    469749
     750  // -------------------------------------------------------------------
     751
     752
    470753  PROCEDURE testTrim;
    471754  VAR
     
    476759    assertEqualsString('testTrim', 'a bc', tmpResult);
    477760  END;
     761
     762
     763  // -------------------------------------------------------------------
     764
     765
     766  PROCEDURE testStrLeft_Empty;
     767  VAR
     768    tmpResult : String;
     769  BEGIN
     770    tmpResult := StrLeft('', 1);
     771
     772    assertEqualsString('testStrLeft_Empty', '', tmpResult);
     773  END;
     774
     775
     776  PROCEDURE testStrLeft_Nothing;
     777  VAR
     778    tmpResult : String;
     779  BEGIN
     780    tmpResult := StrLeft('abc', 0);
     781
     782    assertEqualsString('testStrLeft_Nothing', '', tmpResult);
     783  END;
     784
     785
     786  PROCEDURE testStrLeft_WholeString;
     787  VAR
     788    tmpResult : String;
     789  BEGIN
     790    tmpResult := StrLeft('abc', 3);
     791
     792    assertEqualsString('testStrLeft_WholeString', 'abc', tmpResult);
     793  END;
     794
     795  PROCEDURE testStrLeft_ToManyRequested;
     796  VAR
     797    tmpResult : String;
     798  BEGIN
     799    tmpResult := StrLeft('abc', 5);
     800
     801    assertEqualsString('testStrLeft_ToManyRequested', 'abc', tmpResult);
     802  END;
     803
     804  PROCEDURE testStrLeft_Part;
     805  VAR
     806    tmpResult : String;
     807  BEGIN
     808    tmpResult := StrLeft('abcdef', 2);
     809
     810    assertEqualsString('testStrLeft_Part', 'ab', tmpResult);
     811  END;
     812
     813  // -------------------------------------------------------------------
    478814
    479815
     
    7241060    result.add(@testStrExtractStrings_EscapedEscapeChar);
    7251061
     1062    result.add(@testStrExtractStringsIgnoreEmpty_EmptyReceiver);
     1063    result.add(@testStrExtractStringsIgnoreEmpty_OnlyOnePart);
     1064    result.add(@testStrExtractStringsIgnoreEmpty_ManyParts);
     1065    result.add(@testStrExtractStringsIgnoreEmpty_StartWithDelimiter);
     1066    result.add(@testStrExtractStringsIgnoreEmpty_EndWithDelimiter);
     1067    result.add(@testStrExtractStringsIgnoreEmpty_EmptyPartInside);
     1068    result.add(@testStrExtractStringsIgnoreEmpty_NoDelimiter);
     1069    result.add(@testStrExtractStringsIgnoreEmpty_EscapedDelimiter);
     1070    result.add(@testStrExtractStringsIgnoreEmpty_EscapedEscapeChar);
     1071
     1072    result.add(@testTrimLeftChars_Empty);
     1073    result.add(@testTrimLeftChars_RemoveAll);
     1074    result.add(@testTrimLeftChars_OneLeft);
     1075    result.add(@testTrimLeftChars_LeftOnly);
     1076    result.add(@testTrimLeftChars_CharsInside);
     1077    result.add(@testTrimLeftChars_Nothing);
     1078
     1079    result.add(@testTrimRightChars_Empty);
     1080    result.add(@testTrimRightChars_RemoveAll);
     1081    result.add(@testTrimRightChars_OneLeft);
     1082    result.add(@testTrimRightChars_RightOnly);
     1083    result.add(@testTrimRightChars_CharsInside);
     1084    result.add(@testTrimRightChars_Nothing);
     1085
    7261086    result.add(@testTrimChars_Empty);
    7271087    result.add(@testTrimChars_RemoveAll);
     1088    result.add(@testTrimChars_OneLeftFromLeft);
     1089    result.add(@testTrimChars_OneLeftFromRight);
    7281090    result.add(@testTrimChars_LeftOnly);
    7291091    result.add(@testTrimChars_RightOnly);
    7301092    result.add(@testTrimChars_CharsInside);
    7311093    result.add(@testTrimChars_Nothing);
     1094
    7321095    result.add(@testTrim);
     1096
     1097    result.add(@testStrLeft_Empty);
     1098    result.add(@testStrLeft_Nothing);
     1099    result.add(@testStrLeft_WholeString);
     1100    result.add(@testStrLeft_ToManyRequested);
     1101    result.add(@testStrLeft_Part);
    7331102
    7341103    result.add(@testStrEndsWith_BothEmpty);
Note: See TracChangeset for help on using the changeset viewer.