123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205 |
- unit tcstrutils;
- {$mode objfpc}{$H+}
- interface
- uses
- Classes, SysUtils, fpcunit, testregistry, strutils;
- type
- { TTestSearchBuf }
- TTestSearchBuf= class(TTestCase)
- Private
- Procedure TestSearch(Sub:String; Start : Integer; O : TStringSearchOptions; Expected : Integer);
- published
- procedure TestSimple;
- procedure TestSimpleNoRes;
- procedure TestSimpleDown;
- procedure TestSimpleDownNoRes;
- procedure TestNotExistDown;
- procedure TestNotExist;
- procedure TestSimpleDownPos;
- procedure TestSimplePos;
- procedure TestSimpleCaseSensitive;
- procedure TestSimpleCaseSensitiveDown;
- procedure TestSimpleWholeWord;
- procedure TestSimpleWholeWordDown;
- procedure TestSimplePartialend;
- procedure TestSimplePartialStart;
- procedure TestEndMatchDown;
- procedure TestEndMatch;
- procedure TestWholeWordAtStart;
- procedure TestWholeWordAtStartDown;
- procedure TestWholeWordAtEnd;
- procedure TestWholeWordAtEndDown;
- procedure TestEmptySearchString;
- procedure TestSelstartBeforeBuf;
- procedure testSelstartAfterBuf;
- end;
- implementation
- Const
- // Don't move this comment, it indicates the positions.
- // 1 2 3 4
- // 1234567890123456789012345678901234567890123456789
- S = 'Some very long string with some words in it';
- SLen = Length(S);
-
- {$define usenew}
- {$ifdef usenew}
- {$i searchbuf.inc}
- const
- WhichSearchbuf = 'new';
- {$else}
- const
- WhichSearchbuf = 'old';
- {$endif}
- procedure TTestSearchBuf.TestSearch(Sub: String; Start: Integer;
- O: TStringSearchOptions; Expected: Integer);
- Var
- P,PR : PChar;
- I : Integer;
-
- begin
- P:=PChar(S);
- PR:=SearchBuf(P,Length(S),Start,0,Sub,O);
- If (PR=Nil) then
- begin
- If (Expected<>-1) then
- Fail(Format('Search for "%s" failed, expected result at %d',[Sub,Expected]));
- end
- else
- begin
- I:=(PR-P)+1;
- If (I<>Expected) then
- Fail(Format('Wrong result for search for "%s", expected result at %d, got %d',[Sub,Expected,I]));
- end;
- end;
- procedure TTestSearchBuf.TestSimpleNoRes;
- begin
- TestSearch('very',0,[],-1);
- end;
- procedure TTestSearchBuf.TestSimple;
- begin
- TestSearch('very',SLen,[],6);
- end;
- procedure TTestSearchBuf.TestSimpleDownNoRes;
- begin
- TestSearch('very',0,[soDown],6);
- end;
- procedure TTestSearchBuf.TestSimpleDown;
- begin
- TestSearch('very',SLen,[soDown],-1);
- end;
- procedure TTestSearchBuf.TestSimplePartialend;
- begin
- TestSearch('its',0,[soDown],-1);
- end;
- procedure TTestSearchBuf.TestSimplePartialStart;
- begin
- TestSearch('Tso',SLen,[],-1);
- end;
- procedure TTestSearchBuf.TestEndMatchDown;
- begin
- TestSearch('it',30,[soDown],42);
- end;
- procedure TTestSearchBuf.TestEndMatch;
- begin
- TestSearch('it',SLen,[],42);
- end;
- procedure TTestSearchBuf.TestWholeWordAtStart;
- begin
- TestSearch('Some',20,[soWholeWord],1);
- end;
- procedure TTestSearchBuf.TestWholeWordAtStartDown;
- begin
- TestSearch('Some',0,[soDown,soWholeWord],1);
- end;
- procedure TTestSearchBuf.TestWholeWordAtEnd;
- begin
- TestSearch('it',SLen,[soWholeWord],42);
- end;
- procedure TTestSearchBuf.TestWholeWordAtEndDown;
- begin
- TestSearch('it',30,[soDown,soWholeWord],42);
- end;
- procedure TTestSearchBuf.TestEmptySearchString;
- begin
- TestSearch('',30,[],-1);
- end;
- procedure TTestSearchBuf.TestSelstartBeforeBuf;
- begin
- TestSearch('very',-5,[soDown],-1);
- end;
- procedure TTestSearchBuf.testSelstartAfterBuf;
- begin
- TestSearch('very',100,[],-1);
- end;
- procedure TTestSearchBuf.TestSimpleDownPos;
- begin
- TestSearch('it',30,[soDown],42);
- end;
- procedure TTestSearchBuf.TestSimplePos;
- begin
- TestSearch('it',30,[],24);
- end;
- procedure TTestSearchBuf.TestNotExist;
- begin
- TestSearch('quid',SLen,[],-1);
- end;
- procedure TTestSearchBuf.TestNotExistDown;
- begin
- TestSearch('quid',0,[soDown],-1);
- end;
- procedure TTestSearchBuf.TestSimpleCaseSensitive;
- begin
- TestSearch('Very',SLen,[soMatchCase],-1);
- end;
- procedure TTestSearchBuf.TestSimpleCaseSensitiveDown;
- begin
- TestSearch('Very',0,[soMatchCase,soDown],-1);
- end;
- procedure TTestSearchBuf.TestSimpleWholeWord;
- begin
- TestSearch('in',SLen,[soWholeWord],39);
- end;
- procedure TTestSearchBuf.TestSimpleWholeWordDown;
- begin
- TestSearch('in',0,[soWholeWord,soDown],39);
- end;
- initialization
- RegisterTest(TTestSearchBuf);
- writeln ('Testing with ', WhichSearchbuf, ' implementation');
- writeln;
- end.
|