123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- program demoregex;
- {$mode objfpc}
- uses
- browserconsole, JS, Classes, SysUtils, Web, fpexprpars, db,jsondataset;
- Procedure AssertTrue(Msg : String; B : Boolean);
- begin
- if not B then
- Writeln('Failed: '+Msg)
- else
- Writeln('OK: '+Msg);
- end;
- Procedure TestEx;
- var
- Ex : TFPExpressionParser;
- begin
- Ex:=TFPExpressionParser.Create(Nil);
- Ex.AllowLike:=True;
- Ex.Identifiers.AddStringVariable('aField','Michael');
- Ex.Expression:='aField like ''M%''';
- AssertTrue('M% on match',Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Aimee';
- AssertTrue('M% on no match (not beginning)',not Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Liesbet';
- AssertTrue('M% on not match',Not Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Liam';
- Ex.Expression:='aField like ''%M''';
- AssertTrue('%M on match',Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Aimee';
- AssertTrue('%M on no match (not end)',not Ex.AsBoolean);
- end;
- Procedure TestEx2;
- var
- Ex : TFPExpressionParser;
- begin
- Ex:=TFPExpressionParser.Create(Nil);
- Ex.AllowLike:=True;
- Ex.Identifiers.AddStringVariable('aField','Michael');
- Ex.Expression:='aField like ''%e%''';
- AssertTrue('%e% on match',Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Sara';
- AssertTrue('%e% on not match',Not Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Liesbet';
- AssertTrue('%e% on match 2',Ex.AsBoolean);
- end;
- Procedure TestDotted;
- var
- Ex : TFPExpressionParser;
- begin
- Ex:=TFPExpressionParser.Create(Nil);
- Ex.AllowLike:=True;
- Ex.Identifiers.AddStringVariable('aField','12.14.2023');
- Ex.Expression:='aField like ''%.%.%''';
- AssertTrue('%.%.% on match',Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='Liesbet';
- AssertTrue('%.%.% on not match',Not Ex.AsBoolean);
- end;
- Procedure TestUnderscore;
- var
- Ex : TFPExpressionParser;
- begin
- Ex:=TFPExpressionParser.Create(Nil);
- Ex.AllowLike:=True;
- Ex.Identifiers.AddStringVariable('aField','man');
- Ex.Expression:='aField like ''M_n''';
- AssertTrue('M_n on match',Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='moon';
- AssertTrue('M_n on not match',Not Ex.AsBoolean);
- Ex.IdentifierByName('aField').AsString:='mon';
- AssertTrue('M_n on match 2',Ex.AsBoolean);
- end;
- Procedure TestDatasetFilter;
- var
- DS : TJSONDataset;
- begin
- DS:=TJSONDataset.Create(Nil);
- DS.FieldDefs.Add('name',ftString,50);
- DS.Open;
- DS.AppendRecord(['Michael']);
- DS.AppendRecord(['mattias']);
- DS.AppendRecord(['Bruno']);
- DS.AppendRecord(['Detlef']);
- DS.AppendRecord(['Aimee']);
- AssertTrue('RecordCount',5=DS.RecordCount);
- DS.First;
- DS.Filter:='(name like ''M%'')';
- DS.Filtered:=True;
- AssertTrue('First',DS.Fields[0].AsString='Michael');
- DS.Next;
- AssertTrue('Second',DS.Fields[0].AsString='mattias');
- DS.Next;
- AssertTrue('EOf',DS.EOF);
- DS.Free;
- end;
- begin
- testex;
- testex2;
- TestDotted;
- TestUnderscore;
- TestDatasetFilter;
- end.
|