|
@@ -53,6 +53,10 @@ type
|
|
TTestScanner= class(TTestCase)
|
|
TTestScanner= class(TTestCase)
|
|
Private
|
|
Private
|
|
FLI: String;
|
|
FLI: String;
|
|
|
|
+ FLibAlias: String;
|
|
|
|
+ FLibName: String;
|
|
|
|
+ FLibOptions: String;
|
|
|
|
+ FLinkLibHandled: Boolean;
|
|
FScanner : TPascalScanner;
|
|
FScanner : TPascalScanner;
|
|
FResolver : TStreamResolver;
|
|
FResolver : TStreamResolver;
|
|
FDoCommentCalled : Boolean;
|
|
FDoCommentCalled : Boolean;
|
|
@@ -61,10 +65,12 @@ type
|
|
FTestTokenString: String;
|
|
FTestTokenString: String;
|
|
protected
|
|
protected
|
|
procedure DoComment(Sender: TObject; aComment: String);
|
|
procedure DoComment(Sender: TObject; aComment: String);
|
|
|
|
+ procedure DoLinkLib(Sender: TObject; const aLibName,aAlias,aOptions : String; var aHandled : Boolean);
|
|
procedure SetUp; override;
|
|
procedure SetUp; override;
|
|
procedure TearDown; override;
|
|
procedure TearDown; override;
|
|
Procedure DoMultilineError;
|
|
Procedure DoMultilineError;
|
|
Function TokenToString(tk : TToken) : string;
|
|
Function TokenToString(tk : TToken) : string;
|
|
|
|
+
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TToken); overload;
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TToken); overload;
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TModeSwitch); overload;
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TModeSwitch); overload;
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TModeSwitches); overload;
|
|
Procedure AssertEquals(Msg : String; Expected,Actual : TModeSwitches); overload;
|
|
@@ -78,6 +84,12 @@ type
|
|
// Path for source filename.
|
|
// Path for source filename.
|
|
Property PathPrefix : String Read FPathPrefix Write FPathPrefix;
|
|
Property PathPrefix : String Read FPathPrefix Write FPathPrefix;
|
|
Property TestTokenString : String Read FTestTokenString;
|
|
Property TestTokenString : String Read FTestTokenString;
|
|
|
|
+ // Results from DoLinkLib;
|
|
|
|
+ Property LibName : String Read FLibName;
|
|
|
|
+ Property LibAlias : String Read FLibAlias;
|
|
|
|
+ Property LibOptions : String read FLibOptions;
|
|
|
|
+ // Will be returned in aHandled in DoLinkLib
|
|
|
|
+ Property LinkLibHandled : Boolean Read FLinkLibHandled Write FLinkLibHandled;
|
|
published
|
|
published
|
|
Procedure TestEmpty;
|
|
Procedure TestEmpty;
|
|
procedure TestEOF;
|
|
procedure TestEOF;
|
|
@@ -287,6 +299,11 @@ type
|
|
Procedure TestOperatorIdentifier;
|
|
Procedure TestOperatorIdentifier;
|
|
Procedure TestUTF8BOM;
|
|
Procedure TestUTF8BOM;
|
|
Procedure TestBooleanSwitch;
|
|
Procedure TestBooleanSwitch;
|
|
|
|
+ Procedure TestLinkLibSimple;
|
|
|
|
+ Procedure TestLinkLibAlias;
|
|
|
|
+ Procedure TestLinkLibDefaultAlias;
|
|
|
|
+ Procedure TestLinkLibDefaultAliasStrip;
|
|
|
|
+ Procedure TestLinkLibOptions;
|
|
end;
|
|
end;
|
|
|
|
|
|
implementation
|
|
implementation
|
|
@@ -417,9 +434,21 @@ begin
|
|
FComment:=aComment;
|
|
FComment:=aComment;
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestScanner.DoLinkLib(Sender: TObject; const aLibName, aAlias, aOptions: String; var aHandled: Boolean);
|
|
|
|
+begin
|
|
|
|
+ FLibName:=aLibName;
|
|
|
|
+ FLibAlias:=aAlias;
|
|
|
|
+ FLibOptions:=aOptions;
|
|
|
|
+ aHandled:=FLinkLibHandled;
|
|
|
|
+end;
|
|
|
|
+
|
|
procedure TTestScanner.SetUp;
|
|
procedure TTestScanner.SetUp;
|
|
begin
|
|
begin
|
|
FTestTokenString:='';
|
|
FTestTokenString:='';
|
|
|
|
+ FLibAlias:='';
|
|
|
|
+ FLibName:='';
|
|
|
|
+ FLibOptions:='';
|
|
|
|
+ FLinkLibHandled:=False;
|
|
FDoCommentCalled:=False;
|
|
FDoCommentCalled:=False;
|
|
FResolver:=TStreamResolver.Create;
|
|
FResolver:=TStreamResolver.Create;
|
|
FResolver.OwnsStreams:=True;
|
|
FResolver.OwnsStreams:=True;
|
|
@@ -2135,6 +2164,56 @@ begin
|
|
AssertFalse('Hints off',bshints in Scanner.CurrentBoolSwitches);
|
|
AssertFalse('Hints off',bshints in Scanner.CurrentBoolSwitches);
|
|
end;
|
|
end;
|
|
|
|
|
|
|
|
+procedure TTestScanner.TestLinkLibSimple;
|
|
|
|
+begin
|
|
|
|
+ FScanner.OnLinkLib:=@DoLinkLib;
|
|
|
|
+ // DoTestToken because we don't want to change casing
|
|
|
|
+ DoTestToken(tkComment,'{$LINKLIB myfile.js}');
|
|
|
|
+ AssertEquals('Library name','myfile.js',LibName);
|
|
|
|
+ AssertEquals('Library alias','myfile',LibAlias);
|
|
|
|
+ AssertEquals('Library options','',LibOptions);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestScanner.TestLinkLibAlias;
|
|
|
|
+begin
|
|
|
|
+ FScanner.OnLinkLib:=@DoLinkLib;
|
|
|
|
+ // DoTestToken because we don't want to change casing
|
|
|
|
+ DoTestToken(tkComment,'{$LINKLIB myfile.js MyLib}');
|
|
|
|
+ AssertEquals('Library name','myfile.js',LibName);
|
|
|
|
+ AssertEquals('Library alias','MyLib',LibAlias);
|
|
|
|
+ AssertEquals('Library options','',LibOptions);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestScanner.TestLinkLibDefaultAlias;
|
|
|
|
+begin
|
|
|
|
+ FScanner.OnLinkLib:=@DoLinkLib;
|
|
|
|
+ // DoTestToken because we don't want to change casing
|
|
|
|
+ DoTestToken(tkComment,'{$LINKLIB my-file.min.js}');
|
|
|
|
+ AssertEquals('Library name','my-file.min.js',LibName);
|
|
|
|
+ AssertEquals('Library alias','my_file_min',LibAlias);
|
|
|
|
+ AssertEquals('Library options','',LibOptions);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestScanner.TestLinkLibDefaultAliasStrip;
|
|
|
|
+begin
|
|
|
|
+ FScanner.OnLinkLib:=@DoLinkLib;
|
|
|
|
+ // DoTestToken because we don't want to change casing
|
|
|
|
+ DoTestToken(tkComment,'{$LINKLIB ../solong/my-file.min.js}');
|
|
|
|
+ AssertEquals('Library name','../solong/my-file.min.js',LibName);
|
|
|
|
+ AssertEquals('Library alias','my_file_min',LibAlias);
|
|
|
|
+ AssertEquals('Library options','',LibOptions);
|
|
|
|
+end;
|
|
|
|
+
|
|
|
|
+procedure TTestScanner.TestLinkLibOptions;
|
|
|
|
+begin
|
|
|
|
+ FScanner.OnLinkLib:=@DoLinkLib;
|
|
|
|
+ // DoTestToken because we don't want to change casing
|
|
|
|
+ DoTestToken(tkComment,'{$LINKLIB ../solong/my-file.min.js MyFile opt1, opt2 }');
|
|
|
|
+ AssertEquals('Library name','../solong/my-file.min.js',LibName);
|
|
|
|
+ AssertEquals('Library alias','MyFile',LibAlias);
|
|
|
|
+ AssertEquals('Library options','opt1, opt2',LibOptions);
|
|
|
|
+end;
|
|
|
|
+
|
|
initialization
|
|
initialization
|
|
RegisterTests([TTestTokenFinder,TTestStreamLineReader,TTestScanner]);
|
|
RegisterTests([TTestTokenFinder,TTestStreamLineReader,TTestScanner]);
|
|
end.
|
|
end.
|