mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-07-26 22:46:06 +02:00
632 lines
16 KiB
ObjectPascal
632 lines
16 KiB
ObjectPascal
unit tconstparser;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, fpcunit, pastree, pscanner, tcbaseparser, testregistry;
|
|
|
|
Type
|
|
{ TTestConstParser }
|
|
|
|
TTestConstParser = Class(TTestParser)
|
|
private
|
|
FConst: TPasConst;
|
|
FExpr: TPasExpr;
|
|
FHint : string;
|
|
FTyped: String;
|
|
Protected
|
|
Function ParseConst(ASource : String) : TPasConst;
|
|
Procedure CheckExprNameKindClass(AKind : TPasExprKind; AClass : TClass);
|
|
Property TheConst : TPasConst Read FConst;
|
|
Property TheExpr : TPasExpr Read FExpr;
|
|
Property Hint : string Read FHint Write FHint;
|
|
Property Typed : String Read FTyped Write FTyped;
|
|
procedure SetUp; override;
|
|
Public
|
|
Procedure DoTestSimpleIntConst;
|
|
Procedure DoTestSimpleFloatConst;
|
|
Procedure DoTestSimpleStringConst;
|
|
Procedure DoTestSimpleNilConst;
|
|
Procedure DoTestSimpleBoolConst;
|
|
Procedure DoTestSimpleIdentifierConst;
|
|
Procedure DoTestSimpleSetConst;
|
|
Procedure DoTestSimpleExprConst;
|
|
Published
|
|
Procedure TestSimpleIntConst;
|
|
Procedure TestSimpleFloatConst;
|
|
Procedure TestSimpleStringConst;
|
|
Procedure TestSimpleNilConst;
|
|
Procedure TestSimpleBoolConst;
|
|
Procedure TestSimpleIdentifierConst;
|
|
Procedure TestSimpleSetConst;
|
|
Procedure TestSimpleExprConst;
|
|
Procedure TestSimpleIntConstDeprecatedMsg;
|
|
Procedure TestSimpleIntConstDeprecated;
|
|
Procedure TestSimpleFloatConstDeprecated;
|
|
Procedure TestSimpleStringConstDeprecated;
|
|
Procedure TestSimpleNilConstDeprecated;
|
|
Procedure TestSimpleBoolConstDeprecated;
|
|
Procedure TestSimpleIdentifierConstDeprecated;
|
|
Procedure TestSimpleSetConstDeprecated;
|
|
Procedure TestSimpleExprConstDeprecated;
|
|
Procedure TestSimpleIntConstPlatform;
|
|
Procedure TestSimpleFloatConstPlatform;
|
|
Procedure TestSimpleStringConstPlatform;
|
|
Procedure TestSimpleNilConstPlatform;
|
|
Procedure TestSimpleBoolConstPlatform;
|
|
Procedure TestSimpleIdentifierConstPlatform;
|
|
Procedure TestSimpleSetConstPlatform;
|
|
Procedure TestSimpleExprConstPlatform;
|
|
Procedure TestSimpleIntConstExperimental;
|
|
Procedure TestSimpleFloatConstExperimental;
|
|
Procedure TestSimpleStringConstExperimental;
|
|
Procedure TestSimpleNilConstExperimental;
|
|
Procedure TestSimpleBoolConstExperimental;
|
|
Procedure TestSimpleIdentifierConstExperimental;
|
|
Procedure TestSimpleSetConstExperimental;
|
|
Procedure TestSimpleExprConstExperimental;
|
|
Procedure TestTypedIntConst;
|
|
Procedure TestTypedFloatConst;
|
|
Procedure TestTypedStringConst;
|
|
Procedure TestTypedNilConst;
|
|
Procedure TestTypedBoolConst;
|
|
Procedure TestTypedIdentifierConst;
|
|
Procedure TestTypedSetConst;
|
|
Procedure TestTypedExprConst;
|
|
Procedure TestRecordConst;
|
|
Procedure TestArrayConst;
|
|
end;
|
|
|
|
{ TTestResourcestringParser }
|
|
|
|
TTestResourcestringParser = Class(TTestParser)
|
|
private
|
|
FExpr: TPasExpr;
|
|
FHint : string;
|
|
FTheStr: TPasResString;
|
|
Protected
|
|
Function ParseResourcestring(ASource : String) : TPasResString;
|
|
Procedure CheckExprNameKindClass(AKind : TPasExprKind; AClass : TClass);
|
|
Property Hint : string Read FHint Write FHint;
|
|
Property TheStr : TPasResString Read FTheStr;
|
|
Property TheExpr : TPasExpr Read FExpr;
|
|
Public
|
|
Procedure DoTestSimple;
|
|
Procedure DoTestSum;
|
|
Procedure DoTestSum2;
|
|
Published
|
|
Procedure TestSimple;
|
|
Procedure TestSimpleDeprecated;
|
|
Procedure TestSimplePlatform;
|
|
Procedure TestSum1;
|
|
Procedure TestSum1Deprecated;
|
|
Procedure TestSum1Platform;
|
|
Procedure TestSum2;
|
|
Procedure TestSum2Deprecated;
|
|
Procedure TestSum2Platform;
|
|
end;
|
|
|
|
|
|
implementation
|
|
{ TTestConstParser }
|
|
|
|
function TTestConstParser.ParseConst(ASource: String): TPasConst;
|
|
|
|
Var
|
|
D : String;
|
|
begin
|
|
Add('Const');
|
|
D:=' A ';
|
|
If (Typed<>'') then
|
|
D:=D+' : '+Typed+' ';
|
|
D:=D+' = '+ASource;
|
|
If Hint<>'' then
|
|
D:=D+' '+Hint;
|
|
Add(' '+D+';');
|
|
ParseDeclarations;
|
|
AssertEquals('One constant definition',1,Declarations.Consts.Count);
|
|
AssertEquals('First declaration is constant definition.',TPasConst,TObject(Declarations.Consts[0]).ClassType);
|
|
Result:=TPasConst(Declarations.Consts[0]);
|
|
AssertNotNull(Result.Expr);
|
|
FExpr:=Result.Expr;
|
|
FConst:=Result;
|
|
Definition:=Result;
|
|
end;
|
|
|
|
|
|
procedure TTestConstParser.CheckExprNameKindClass(
|
|
AKind: TPasExprKind; AClass : TClass);
|
|
begin
|
|
AssertEquals('Correct name','A',TheConst.Name);
|
|
AssertExpression('Const', TheExpr,aKind,AClass);
|
|
end;
|
|
|
|
procedure TTestConstParser.SetUp;
|
|
begin
|
|
inherited SetUp;
|
|
Hint:='';
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleIntConst;
|
|
|
|
begin
|
|
ParseConst('1');
|
|
AssertExpression('Integer Const',TheExpr,pekNumber,'1');
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleFloatConst;
|
|
begin
|
|
ParseConst('1.2');
|
|
AssertExpression('Float const', TheExpr,pekNumber,'1.2');
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleStringConst;
|
|
begin
|
|
ParseConst('''test''');
|
|
AssertExpression('String const', TheExpr,pekString,'''test''');
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleNilConst;
|
|
begin
|
|
ParseConst('Nil');
|
|
CheckExprNameKindClass(pekNil,TNilExpr);
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleBoolConst;
|
|
begin
|
|
ParseConst('True');
|
|
CheckExprNameKindClass(pekBoolConst,TBoolconstExpr);
|
|
AssertEquals('Correct expression value',True,TBoolconstExpr(TheExpr).Value);
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleIdentifierConst;
|
|
begin
|
|
ParseConst('taCenter');
|
|
AssertExpression('Enumeration const', theExpr,pekIdent,'taCenter');
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleSetConst;
|
|
begin
|
|
ParseConst('[taLeftJustify,taRightJustify]');
|
|
CheckExprNameKindClass(pekSet,TParamsExpr);
|
|
AssertEquals('Correct set count',2,Length(TParamsExpr(TheExpr).Params));
|
|
AssertExpression('Set element 1',TParamsExpr(TheExpr).Params[0],pekIdent,'taLeftJustify');
|
|
AssertExpression('Set element 2',TParamsExpr(TheExpr).Params[1],pekIdent,'taRightJustify');
|
|
end;
|
|
|
|
procedure TTestConstParser.DoTestSimpleExprConst;
|
|
|
|
Var
|
|
B : TBinaryExpr;
|
|
|
|
begin
|
|
ParseConst('1 + 2');
|
|
CheckExprNameKindClass(pekBinary,TBinaryExpr);
|
|
B:=TBinaryExpr(TheExpr);
|
|
AssertExpression('Left expression',B.Left,pekNumber,'1');
|
|
AssertExpression('Right expression',B.Right,pekNumber,'2');
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIntConst;
|
|
begin
|
|
DoTestSimpleIntConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleFloatConst;
|
|
begin
|
|
DoTestSimpleFloatConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleStringConst;
|
|
begin
|
|
DoTestSimpleStringConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleNilConst;
|
|
begin
|
|
DoTestSimpleNilConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleBoolConst;
|
|
begin
|
|
DoTestSimpleBoolConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIdentifierConst;
|
|
begin
|
|
DoTestSimpleIdentifierConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleSetConst;
|
|
begin
|
|
DoTestSimpleSetConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleExprConst;
|
|
begin
|
|
DoTestSimpleExprConst;
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIntConstDeprecatedMsg;
|
|
begin
|
|
Hint:='deprecated ''this is old''' ;
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIntConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleFloatConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleStringConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleStringConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleNilConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleNilConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleBoolConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleBoolConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIdentifierConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleIdentifierConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleSetConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleSetConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleExprConstDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimpleExprConst;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIntConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleFloatConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleStringConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleStringConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleNilConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleNilConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleBoolConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleBoolConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIdentifierConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleIdentifierConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleExprConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleExprConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleSetConstPlatform;
|
|
begin
|
|
Hint:='Platform';
|
|
DoTestSimpleSetConst;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIntConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleFloatConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleIntConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleStringConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleStringConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleNilConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleNilConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleBoolConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleBoolConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleIdentifierConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleIdentifierConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleSetConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleSetConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestSimpleExprConstExperimental;
|
|
begin
|
|
Hint:='Experimental';
|
|
DoTestSimpleExprConst;
|
|
CheckHint(hExperimental);
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedIntConst;
|
|
begin
|
|
Typed:='Integer';
|
|
DoTestSimpleIntConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedFloatConst;
|
|
begin
|
|
Typed:='Double';
|
|
DoTestSimpleFloatConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedStringConst;
|
|
begin
|
|
Typed:='shortstring';
|
|
DoTestSimpleStringConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedNilConst;
|
|
begin
|
|
Typed:='PChar';
|
|
DoTestSimpleNilConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedBoolConst;
|
|
begin
|
|
Typed:='Boolean';
|
|
DoTestSimpleBoolConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedIdentifierConst;
|
|
begin
|
|
Typed:='TAlign';
|
|
DoTestSimpleIdentifierConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedSetConst;
|
|
begin
|
|
Typed:='TAligns';
|
|
DoTestSimpleSetConst
|
|
end;
|
|
|
|
procedure TTestConstParser.TestTypedExprConst;
|
|
begin
|
|
Typed:='ShortInt';
|
|
DoTestSimpleExprConst;
|
|
end;
|
|
|
|
procedure TTestConstParser.TestRecordConst;
|
|
Var
|
|
R : TRecordValues;
|
|
Fi : TRecordValuesItem;
|
|
begin
|
|
Typed := 'TPoint';
|
|
ParseConst('(x:1;y: 2)');
|
|
AssertEquals('Record Values',TRecordValues,TheExpr.ClassType);
|
|
R:=TheExpr as TRecordValues;
|
|
AssertEquals('Expression list of ',pekListOfExp,TheExpr.Kind);
|
|
AssertEquals('2 elements',2,Length(R.Fields));
|
|
FI:=R.Fields[0];
|
|
AssertEquals('Name field 1','x',Fi.Name);
|
|
AssertExpression('Field 1 value',Fi.ValueExp,pekNumber,'1');
|
|
FI:=R.Fields[1];
|
|
AssertEquals('Name field 2','y',Fi.Name);
|
|
AssertExpression('Field 2 value',Fi.ValueExp,pekNumber,'2');
|
|
end;
|
|
|
|
procedure TTestConstParser.TestArrayConst;
|
|
|
|
Var
|
|
R : TArrayValues;
|
|
begin
|
|
Typed := 'TMyArray';
|
|
ParseConst('(1 , 2)');
|
|
AssertEquals('Array Values',TArrayValues,TheExpr.ClassType);
|
|
R:=TheExpr as TArrayValues;
|
|
AssertEquals('Expression list of ',pekListOfExp,TheExpr.Kind);
|
|
AssertEquals('2 elements',2,Length(R.Values));
|
|
AssertExpression('Element 1 value',R.Values[0],pekNumber,'1');
|
|
AssertExpression('Element 2 value',R.Values[1],pekNumber,'2');
|
|
end;
|
|
|
|
{ TTestResourcestringParser }
|
|
|
|
function TTestResourcestringParser.ParseResourcestring(ASource: String
|
|
): TPasResString;
|
|
|
|
Var
|
|
D : String;
|
|
begin
|
|
Add('Resourcestring');
|
|
D:=' A = '+ASource;
|
|
If Hint<>'' then
|
|
D:=D+' '+Hint;
|
|
Add(' '+D+';');
|
|
Add('end.');
|
|
//Writeln(source.text);
|
|
ParseDeclarations;
|
|
AssertEquals('One resourcestring definition',1,Declarations.ResStrings.Count);
|
|
AssertEquals('First declaration is constant definition.',TPasResString,TObject(Declarations.ResStrings[0]).ClassType);
|
|
Result:=TPasResString(Declarations.ResStrings[0]);
|
|
FTheStr:=Result;
|
|
FExpr:=Result.Expr;
|
|
Definition:=Result;
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.CheckExprNameKindClass(AKind: TPasExprKind;
|
|
AClass: TClass);
|
|
begin
|
|
AssertEquals('Correct name','A',TheStr.Name);
|
|
AssertEquals('Correct expression kind',aKind,TheExpr.Kind);
|
|
AssertEquals('Correct expression class',AClass,TheExpr.ClassType);
|
|
// Writeln('Delcaration : ',TheStr.GetDeclaration(True));
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.DoTestSimple;
|
|
begin
|
|
ParseResourcestring('''Something''');
|
|
CheckExprNameKindClass(pekString,TPrimitiveExpr);
|
|
AssertEquals('Correct expression value','''Something''',TPrimitiveExpr(TheExpr).Value);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.DoTestSum;
|
|
begin
|
|
ParseResourcestring('''Something''+'' else''');
|
|
CheckExprNameKindClass(pekBinary,TBinaryExpr);
|
|
AssertEquals('Correct left',TPrimitiveExpr,TBinaryExpr(TheExpr).Left.ClassType);
|
|
AssertEquals('Correct right',TPrimitiveExpr,TBinaryExpr(TheExpr).Right.ClassType);
|
|
AssertEquals('Correct left expression value','''Something''',TPrimitiveExpr(TBinaryExpr(TheExpr).Left).Value);
|
|
AssertEquals('Correct right expression value',''' else''',TPrimitiveExpr(TBinaryExpr(TheExpr).Right).Value);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.DoTestSum2;
|
|
begin
|
|
ParseResourcestring('''Something''+different');
|
|
CheckExprNameKindClass(pekBinary,TBinaryExpr);
|
|
AssertEquals('Correct left',TPrimitiveExpr,TBinaryExpr(TheExpr).Left.ClassType);
|
|
AssertEquals('Correct right',TPrimitiveExpr,TBinaryExpr(TheExpr).Right.ClassType);
|
|
AssertEquals('Correct left expression value','''Something''',TPrimitiveExpr(TBinaryExpr(TheExpr).Left).Value);
|
|
AssertEquals('Correct right expression value','different',TPrimitiveExpr(TBinaryExpr(TheExpr).Right).Value);
|
|
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSimple;
|
|
begin
|
|
DoTestSimple;
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSimpleDeprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSimple;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSimplePlatform;
|
|
begin
|
|
Hint:='platform';
|
|
DoTestSimple;
|
|
CheckHint(hPlatform);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSum2;
|
|
begin
|
|
DoTestSum2;
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSum2Deprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSum2;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSum2Platform;
|
|
begin
|
|
Hint:='platform';
|
|
DoTestSum2;
|
|
CheckHint(hplatform);
|
|
end;
|
|
procedure TTestResourcestringParser.TestSum1;
|
|
begin
|
|
DoTestSum;
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSum1Deprecated;
|
|
begin
|
|
Hint:='deprecated';
|
|
DoTestSum;
|
|
CheckHint(hDeprecated);
|
|
end;
|
|
|
|
procedure TTestResourcestringParser.TestSum1Platform;
|
|
begin
|
|
Hint:='platform';
|
|
DoTestSum;
|
|
CheckHint(hplatform);
|
|
end;
|
|
|
|
initialization
|
|
RegisterTests([TTestConstParser,TTestResourcestringParser]);
|
|
|
|
|
|
end.
|
|
|