diff --git a/AG.Logs.pas b/AG.Logs.pas
index 5a7be72..3001f22 100644
--- a/AG.Logs.pas
+++ b/AG.Logs.pas
@@ -2,17 +2,17 @@ unit AG.Logs;
interface
-{$IFDEF FPC}
- {$UNDEF MSWINDOWS}
-{$ENDIF}
+//{$UNDEF MSWINDOWS}
uses
{$IFDEF MSWINDOWS}{$IFDEF FPC}Windows{$ELSE}Winapi.Windows{$ENDIF},{$ENDIF}
{$IFDEF FPC}FGL{$ELSE}System.Generics.Collections{$ENDIF},
{$IFDEF FPC}SysUtils{$ELSE}System.SysUtils{$ENDIF},
{$IFDEF FPC}Classes{$ELSE}System.Classes{$ENDIF},
- {$IFDEF FPC}DateUtils{$ELSE}System.DateUtils{$ENDIF},
- {$IFDEF FPC}SyncObjs{$ELSE}System.SyncObjs{$ENDIF}
+ {$IFDEF FPC}DateUtils{$ELSE}System.DateUtils{$ENDIF}
+ {$IF defined(MSWINDOWS) and not defined(FPC)},
+ {$IFDEF FPC}SyncObjs{$ELSE}System.SyncObjs{$ENDIF}
+ {$ENDIF}
{$IFNDEF MSWINDOWS}{$IFNDEF FPC},System.IOUtils{$ENDIF}{$ENDIF};
type
@@ -24,46 +24,46 @@ type
const
CBaseTab='--------------------------';
public
- class function SisebleWordtoStr(i:word;size:int8):string;static;inline;
- class function GenerateLogString(s:string;o:TObject=nil):string;static;inline;
+ class function SizeableWordtoStr(i:word;size:int8):string;static;inline;
+ class function GenerateLogString(const s:string;o:TObject=nil):string;static;inline;
procedure Tab();virtual;
procedure UnTab();virtual;
- procedure Write(Text:string;o:TObject=nil);overload;virtual;abstract;
+ procedure Write(const Text:string;o:TObject=nil);overload;virtual;abstract;
destructor Destroy();override;
end;
TAGRamLog=class(TAGLog)
public
- buf:WideString;
- constructor Create();overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ buf:String;
+ constructor Create();
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
end;
TAGDiskLog=class(TAGLog)
strict protected
- {$IFNDEF MSWINDOWS}
- Stream:TFileStream;//TStream;
- {$ELSE}
- buf1:WideString;
+ {$IF defined(MSWINDOWS) and not defined(FPC)}
+ buf1:String;
onbuf:boolean;
LogHandle,ThreadHandle:NativeUInt;
ThreadID:cardinal;
Lock:TCriticalSection;
WantTerminate:Boolean;
+ {$ELSE}
+ Stream:TStream;
{$ENDIF}
public
- constructor Create(FileName:WideString);overload;
- {$IFDEF MSWINDOWS}
+ constructor Create(const FileName:String);overload;
+ {$IF defined(MSWINDOWS) and not defined(FPC)}
procedure Init();stdcall;
{$ENDIF}
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
destructor Destroy();overload;override;
end;
TAGNullLog=class(TAGLog)
public
constructor Create();overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
end;
{$IFDEF MSWINDOWS}
@@ -72,7 +72,7 @@ type
CommandLine:THandle;
public
constructor Create(Handele:THandle);overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
destructor Destroy();overload;override;
end;
{$ENDIF}
@@ -82,7 +82,7 @@ type
stream:TStream;
public
constructor Create(Astream:TStream);overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
end;
TAGCallBackLog=class(TAGLog)
@@ -92,7 +92,7 @@ type
CallBack:TCallBack;
public
constructor Create(ACallBack:TCallBack);overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
end;
TAGMultiLog=class(TAGLog)
@@ -102,7 +102,7 @@ type
var
Logs:TLogsList;
constructor Create(Default:TLogsList);overload;
- procedure Write(Text:string;o:TObject=nil);overload;override;
+ procedure Write(const Text:string;o:TObject=nil);overload;override;
procedure Tab();override;
procedure UnTab();override;
destructor Destroy();overload;override;
@@ -118,7 +118,7 @@ begin
Self.Write(CBaseTab+'Logging init-'+CBaseTab);
end;
-class function TAGLog.SisebleWordtoStr(i:word;size:int8):string;
+class function TAGLog.SizeableWordtoStr(i:word;size:int8):string;
begin
Result:=IntToStr(i);
size:=size-Length(Result);
@@ -131,7 +131,7 @@ begin
end;
end;
-class function TAGLog.GenerateLogString(s:string;o:TObject=nil):string;
+class function TAGLog.GenerateLogString(const s:string;o:TObject=nil):string;
var
D:TDateTime;
begin
@@ -144,10 +144,10 @@ if o<>nil then
{$ENDIF}
else
Result:='';
-Result:='['+Siseblewordtostr(DayOfTheMonth(D),2)+'.'+Siseblewordtostr(MonthOfTheYear(D),2)+'.'+
- Siseblewordtostr(YearOf(D),4)+' '+Siseblewordtostr(HourOfTheDay(D),2)+':'+
- Siseblewordtostr(MinuteOfTheHour(D),2)+':'+Siseblewordtostr(SecondOfTheMinute(D),2)+'.'
- +Siseblewordtostr(MilliSecondOfTheSecond(D),3)+'] '+Result+s+sLineBreak;
+Result:='['+SizeableWordtoStr(DayOfTheMonth(D),2)+'.'+SizeableWordtoStr(MonthOfTheYear(D),2)+'.'+
+ SizeableWordtoStr(YearOf(D),4)+' '+SizeableWordtoStr(HourOfTheDay(D),2)+':'+
+ SizeableWordtoStr(MinuteOfTheHour(D),2)+':'+SizeableWordtoStr(SecondOfTheMinute(D),2)+'.'
+ +SizeableWordtoStr(MilliSecondOfTheSecond(D),3)+'] '+Result+s+sLineBreak;
end;
procedure TAGLog.Tab();
@@ -158,6 +158,8 @@ end;
procedure TAGLog.UnTab();
begin
+if tabs=0 then
+ Exit;
dec(tabs);
Delete(tabstr,1,2);
end;
@@ -176,13 +178,13 @@ tabstr:='';
inherited Create;
end;
-procedure TAGRamLog.Write(Text:string;o:TObject=nil);
+procedure TAGRamLog.Write(const Text:string;o:TObject=nil);
begin
buf:=buf+GenerateLogString(tabstr+Text,o);
end;
-constructor TAGDiskLog.Create(FileName:WideString);
-{$IFDEF MSWINDOWS}
+constructor TAGDiskLog.Create(const FileName:String);
+{$IF defined(MSWINDOWS) and not defined(FPC)}
begin
Lock:=TCriticalSection.Create;
WantTerminate:=False;
@@ -199,7 +201,7 @@ begin
{$IFDEF FPC}
Stream:=nil;
try
- Stream:=TFileStream.Create('test2.log',fmOpenRead);
+ Stream:=TFileStream.Create('test2.log',fmOpenRead+fmShareDenyNone);
SetLength(s,Stream.Size);
Stream.Read(s[0],Stream.Size);
except
@@ -220,7 +222,7 @@ begin
inherited Create;
end;
-{$IFDEF MSWINDOWS}
+{$IF defined(MSWINDOWS) and not defined(FPC)}
procedure TAGDiskLog.Init();stdcall;
var
n:cardinal;
@@ -254,8 +256,8 @@ end;
end;
{$ENDIF}
-procedure TAGDiskLog.Write(Text:string;o:TObject=nil);
-{$IFDEF MSWINDOWS}
+procedure TAGDiskLog.Write(const Text:string;o:TObject=nil);
+{$IF defined(MSWINDOWS) and not defined(FPC)}
begin
Lock.Enter;
buf1:=buf1+GenerateLogString(tabstr+text,o);
@@ -276,7 +278,7 @@ end;
destructor TAGDiskLog.Destroy();
begin
inherited;
-{$IFDEF MSWINDOWS}
+{$IF defined(MSWINDOWS) and not defined(FPC)}
WantTerminate:=True;
While WantTerminate do
sleep(0);
@@ -294,7 +296,7 @@ begin
inherited;
end;
-procedure TAGNullLog.Write(Text:string;o:TObject=nil);
+procedure TAGNullLog.Write(const Text:string;o:TObject=nil);
begin
end;
@@ -307,18 +309,19 @@ CommandLine:=Handele;
inherited Create;
end;
-procedure TAGCommandLineLog.Write(Text:string;o:TObject=nil);
+procedure TAGCommandLineLog.Write(const Text:string;o:TObject=nil);
var
- p:PWideChar;
+ p:PChar;
+ temptext:string;
a,b:cardinal;
begin
-Text:=GenerateLogString(tabstr+text,o);
-p:=addr(Text[1]);
-a:=length(Text);
+temptext:=GenerateLogString(tabstr+text,o);
+p:=addr(temptext[1]);
+a:=length(temptext);
while a<>0 do
begin
b:=0;
- WriteConsoleW(CommandLine,p,a,b,nil);
+ {$IFDEF FPC}WriteConsoleA(CommandLine,p,a,b,nil);{$ELSE}WriteConsoleW(CommandLine,p,a,b,nil);{$ENDIF}
inc(p,b);
dec(a,b);
end;
@@ -327,6 +330,7 @@ end;
destructor TAGCommandLineLog.Destroy();
begin
inherited;
+if CommandLine<>GetStdHandle(STD_OUTPUT_HANDLE) then
CloseHandle(CommandLine);
end;
{$ENDIF}
@@ -339,7 +343,7 @@ stream:=Astream;
inherited Create;
end;
-procedure TAGStreamLog.Write(Text:string;o:TObject=nil);
+procedure TAGStreamLog.Write(const Text:string;o:TObject=nil);
var
s:string;
begin
@@ -355,7 +359,7 @@ CallBack:=ACallBack;
inherited Create;
end;
-procedure TAGCallBackLog.Write(Text:string;o:TObject=nil);
+procedure TAGCallBackLog.Write(const Text:string;o:TObject=nil);
begin
CallBack(GenerateLogString(Text,o));
end;
@@ -371,7 +375,7 @@ else
Logs:=TLogsList.Create;
end;
-procedure TAGMultiLog.Write(Text:string;o:TObject=nil);
+procedure TAGMultiLog.Write(const Text:string;o:TObject=nil);
var
i:TAGLog;
begin
diff --git a/FPCTest/fpcunitproject1.lpr b/FPCTest/fpcunitproject1.lpr
index 0168ef8..696e683 100644
--- a/FPCTest/fpcunitproject1.lpr
+++ b/FPCTest/fpcunitproject1.lpr
@@ -3,7 +3,9 @@ program fpcunitproject1;
{$mode objfpc}{$H+}
uses
- Classes, consoletestrunner, TestCase1;
+ Classes,
+ consoletestrunner,
+ TestCase1;
type
@@ -11,7 +13,7 @@ type
TMyTestRunner = class(TTestRunner)
protected
- // override the protected methods of TTestRunner to customize its behavior
+ // override the protected methods of TTestRunner to customize its behavior
end;
var
diff --git a/FPCTest/fpcunitproject1.lps b/FPCTest/fpcunitproject1.lps
index 819c516..7e89c8c 100644
--- a/FPCTest/fpcunitproject1.lps
+++ b/FPCTest/fpcunitproject1.lps
@@ -9,15 +9,15 @@
-
-
+
-
-
+
+
+
@@ -25,9 +25,8 @@
-
-
-
+
+
@@ -38,22 +37,22 @@
-
+
-
-
+
+
-
+
-
+
-
+
@@ -61,104 +60,98 @@
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
-
-
+
-
-
-
-
diff --git a/FPCTest/testcase1.pas b/FPCTest/testcase1.pas
index 14bb439..67833ed 100644
--- a/FPCTest/testcase1.pas
+++ b/FPCTest/testcase1.pas
@@ -5,50 +5,53 @@ unit TestCase1;
interface
uses
- Classes, SysUtils, fpcunit, testutils, testregistry, AG.Logs{$IFDEF MSWINDOWS},Windows{$ENDIF};
+ Classes, SysUtils, fpcunit, testutils, testregistry,
+ AG.Logs{$IFDEF MSWINDOWS}, Windows{$ENDIF};
type
-
- TTestCase1= class(TTestCase)
+ TTestCase1 = class(TTestCase)
published
procedure TestHookUp;
end;
implementation
-procedure Test(s:string);
+procedure Test(s: string);
begin
Write(s);
end;
procedure TTestCase1.TestHookUp;
var
- MultiLog:TAGLog;
- Stream:TStream;
- s:TBytes;
+ MultiLog: TAGLog;
+ Stream: TStream;
+ s: TBytes;
begin
-MultiLog:=TAGMultiLog.Create(nil);
-(MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
-(MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
-(MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
-{$IFDEF MSWINDOWS}(MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE))){$ENDIF};
-Stream:=nil;
-try
- Stream:=TFileStream.Create('test2.log',fmOpenRead+fmShareDenyNone);
- SetLength(s,Stream.Size);
- Stream.Read(s[0],Stream.Size);
-except
- SetLength(s,0);
-end;
-FreeAndNil(Stream);
-Stream:=TFileStream.Create('test2.log',fmCreate+fmOpenReadWrite+fmShareDenyWrite);
-Stream.Write(s[0],Length(s));
-(MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
-SetLength(s,0);
-(MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(@Test));
-MultiLog.Write('Str Test');
-MultiLog.Write('Str+Object Test',self);
-FreeAndNil(MultiLog);
+ MultiLog := TAGMultiLog.Create(nil);
+ (MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
+ (MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
+ (MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
+ {$IFDEF MSWINDOWS}
+ (MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE)));
+ {$ENDIF}
+ Stream := nil;
+ try
+ Stream := TFileStream.Create('test2.log', fmOpenRead + fmShareDenyNone);
+ SetLength(s, Stream.Size);
+ Stream.Read(s[0], Stream.Size);
+ except
+ SetLength(s, 0);
+ end;
+ FreeAndNil(Stream);
+ Stream := TFileStream.Create('test2.log', fmCreate + fmOpenReadWrite +
+ fmShareDenyWrite);
+ Stream.Write(s[0], Length(s));
+ (MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
+ SetLength(s, 0);
+ (MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(@Test));
+ MultiLog.Write('Str Test');
+ MultiLog.Write('Str+Object Test', self);
+ FreeAndNil(MultiLog);
end;
@@ -57,4 +60,3 @@ initialization
RegisterTest(TTestCase1);
end.
-
diff --git a/Tests/Project2.dpr b/Tests/Project2.dpr
index 1d97bcc..b383df9 100644
--- a/Tests/Project2.dpr
+++ b/Tests/Project2.dpr
@@ -3,11 +3,12 @@ program Project2;
{$IFNDEF TESTINSIGHT}
{$APPTYPE CONSOLE}
{$ENDIF}{$STRONGLINKTYPES ON}
+
uses
SysUtils,
- {$IFDEF TESTINSIGHT}
+{$IFDEF TESTINSIGHT}
TestInsight.DUnitX,
- {$ENDIF }
+{$ENDIF }
DUnitX.Loggers.Console,
DUnitX.Loggers.Xml.NUnit,
DUnitX.TestFramework,
@@ -15,46 +16,50 @@ uses
AG.Logs in '..\AG.Logs.pas';
var
- runner : ITestRunner;
- results : IRunResults;
- logger : ITestLogger;
- nunitLogger : ITestLogger;
+ runner: ITestRunner;
+ results: IRunResults;
+ logger: ITestLogger;
+ nunitLogger: ITestLogger;
+
begin
{$IFDEF TESTINSIGHT}
TestInsight.DUnitX.RunRegisteredTests;
exit;
{$ENDIF}
try
- //Check command line options, will exit if invalid
+ // Check command line options, will exit if invalid
TDUnitX.CheckCommandLine;
- //Create the test runner
+ // Create the test runner
runner := TDUnitX.CreateRunner;
- //Tell the runner to use RTTI to find Fixtures
+ // Tell the runner to use RTTI to find Fixtures
runner.UseRTTI := True;
- //tell the runner how we will log things
- //Log to the console window
- logger := TDUnitXConsoleLogger.Create(true);
+ // tell the runner how we will log things
+ // Log to the console window
+ logger := TDUnitXConsoleLogger.Create(True);
runner.AddLogger(logger);
- //Generate an NUnit compatible XML File
- nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
+ // Generate an NUnit compatible XML File
+ nunitLogger := TDUnitXXMLNUnitFileLogger.Create
+ (TDUnitX.Options.XMLOutputFile);
runner.AddLogger(nunitLogger);
- runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests;
+ runner.FailsOnNoAsserts := False;
+ // When true, Assertions must be made during tests;
- //Run tests
+ // Run tests
results := runner.Execute;
if not results.AllPassed then
System.ExitCode := EXIT_ERRORS;
- {$IFNDEF CI}
- //We don't want this happening when running under CI.
+{$IFNDEF CI}
+ // We don't want this happening when running under CI.
if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then
begin
System.Write('Done.. press key to quit.');
System.Readln;
end;
- {$ENDIF}
+{$ENDIF}
except
on E: Exception do
System.Writeln(E.ClassName, ': ', E.Message);
end;
+
end.
diff --git a/Tests/Project2.dproj b/Tests/Project2.dproj
index 4580630..e9beeb0 100644
--- a/Tests/Project2.dproj
+++ b/Tests/Project2.dproj
@@ -81,6 +81,8 @@
true
+ None
+ 1033
false
@@ -115,6 +117,10 @@
Project2.dpr
+
+ Microsoft Office 2000 Sample Automation Server Wrapper Components
+ Microsoft Office XP Sample Automation Server Wrapper Components
+
@@ -451,13 +457,13 @@
1
-
+
+
-
True
diff --git a/Tests/Unit2.pas b/Tests/Unit2.pas
index 16766f9..97416bc 100644
--- a/Tests/Unit2.pas
+++ b/Tests/Unit2.pas
@@ -1,8 +1,10 @@
unit Unit2;
interface
+
uses
- DUnitX.TestFramework,AG.Logs,System.Classes,System.IOUtils,System.SysUtils,Winapi.Windows;
+ DUnitX.TestFramework, AG.Logs, System.Classes, System.IOUtils,
+ System.SysUtils, Winapi.Windows;
type
@@ -20,32 +22,34 @@ implementation
procedure TMyTestObject.Test1;
var
- MultiLog:TAGLog;
- Stream:TStream;
- s:TBytes;
+ MultiLog: TAGLog;
+ Stream: TStream;
+ s: TBytes;
begin
-MultiLog:=TAGMultiLog.Create(nil);
-(MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
-(MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
-(MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
+ MultiLog := TAGMultiLog.Create(nil);
+ (MultiLog as TAGMultiLog).Logs.Add(TAGNullLog.Create());
+ (MultiLog as TAGMultiLog).Logs.Add(TAGDiskLog.Create('test.log'));
+ (MultiLog as TAGMultiLog).Logs.Add(TAGRamLog.Create());
{$IFNDEF MSWINDOWS}(MultiLog as TAGMultiLog).Logs.Add(TAGCommandLineLog.Create(GetStdHandle(STD_OUTPUT_HANDLE))){$ENDIF};
-try
- s:=TFile.ReadAllBytes('test2.log');
-except
- s:=TBytes.Create();
-end;
-Stream:=TFileStream.Create('test2.log',fmCreate+fmOpenReadWrite+fmShareDenyWrite);
-Stream.WriteBuffer(s,length(s));
-(MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
-(MultiLog as TAGMultiLog).Logs.Add(TAGCallBackLog.Create(procedure(s:string)
- begin
- Self.WriteLn(s);
- end));{}
-MultiLog.Write('Str Test');
-MultiLog.Write('Str+Object Test',self);
-FreeAndNil(MultiLog);
+ try
+ s := TFile.ReadAllBytes('test2.log');
+ except
+ s := TBytes.Create();
+ end;
+ Stream := TFileStream.Create('test2.log', fmCreate + fmOpenReadWrite +
+ fmShareDenyWrite);
+ Stream.WriteBuffer(s, length(s));
+ (MultiLog as TAGMultiLog).Logs.Add(TAGStreamLog.Create(Stream));
+ (MultiLog as TAGMultiLog)
+ .Logs.Add(TAGCallBackLog.Create(procedure(s: string)
+ begin Self.WriteLn(s); end)); { }
+ MultiLog.Write('Str Test');
+ MultiLog.Write('Str+Object Test', Self);
+ FreeAndNil(MultiLog);
end;
initialization
- TDUnitX.RegisterTestFixture(TMyTestObject);
+
+TDUnitX.RegisterTestFixture(TMyTestObject);
+
end.