* Fix failing test

git-svn-id: trunk@37362 -
This commit is contained in:
michael 2017-09-30 11:51:19 +00:00
parent 5c447cba50
commit 96aa33cfd9
3 changed files with 55 additions and 42 deletions

View File

@ -798,6 +798,7 @@ type
procedure RecalcLayout; override; procedure RecalcLayout; override;
procedure CalcPrintPosition; virtual; procedure CalcPrintPosition; virtual;
function PrepareObject(aRTParent: TFPReportElement): TFPReportElement; override; function PrepareObject(aRTParent: TFPReportElement): TFPReportElement; override;
procedure PrepareObjects(aRTParent: TFPReportElement); override;
procedure Notification(AComponent: TComponent; Operation: TOperation); override; procedure Notification(AComponent: TComponent; Operation: TOperation); override;
procedure DoWriteLocalProperties(AWriter: TFPReportStreamer; AOriginal: TFPReportElement = nil); override; procedure DoWriteLocalProperties(AWriter: TFPReportStreamer; AOriginal: TFPReportElement = nil); override;
public public
@ -885,6 +886,7 @@ type
Class Function ReportBandType : TFPReportBandType; virtual; Class Function ReportBandType : TFPReportBandType; virtual;
procedure WriteElement(AWriter: TFPReportStreamer; AOriginal: TFPReportElement = nil); override; procedure WriteElement(AWriter: TFPReportStreamer; AOriginal: TFPReportElement = nil); override;
procedure ReadElement(AReader: TFPReportStreamer); override; procedure ReadElement(AReader: TFPReportStreamer); override;
property Page : TFPReportCustomPage read GetReportPage;
end; end;
TFPReportCustomBandClass = Class of TFPReportCustomBand; TFPReportCustomBandClass = Class of TFPReportCustomBand;
@ -1416,6 +1418,7 @@ type
FPerDesignerPageCount: array of UInt32; FPerDesignerPageCount: array of UInt32;
FUsePageCountMarker: Boolean; FUsePageCountMarker: Boolean;
FVariables : TFPReportVariables; FVariables : TFPReportVariables;
FDataAdded : TFPList;
function GetPage(AIndex: integer): TFPReportCustomPage; function GetPage(AIndex: integer): TFPReportCustomPage;
function GetPageCount: integer; { this is designer page count } function GetPageCount: integer; { this is designer page count }
function GetRenderedPageCount: integer; function GetRenderedPageCount: integer;
@ -6494,6 +6497,12 @@ begin
Result := TFPReportCustomPage.Create(nil); Result := TFPReportCustomPage.Create(nil);
Result.Assign(self); Result.Assign(self);
Result.CreateRTLayout; Result.CreateRTLayout;
PrepareObjects(aRTParent);
end;
procedure TFPReportCustomPage.PrepareObjects(aRTParent: TFPReportElement);
begin
// inherited PrepareObjects(aRTParent);
end; end;
procedure TFPReportCustomPage.MarginsChanged; procedure TFPReportCustomPage.MarginsChanged;
@ -7025,12 +7034,14 @@ begin
FBands:=Nil; FBands:=Nil;
L:=CreateLayouter; L:=CreateLayouter;
try try
FDataAdded:=TFPList.Create;
FBands:=TBandList.Create; FBands:=TBandList.Create;
SetLength(FPerDesignerPageCount, PageCount); SetLength(FPerDesignerPageCount, PageCount);
L.Execute(Self); L.Execute(Self);
finally finally
SetLength(FPerDesignerPageCount, 0); SetLength(FPerDesignerPageCount, 0);
Fbands.Free; FreeAndNil(FDataAdded);
FreeAndNil(Fbands);
L.Free; L.Free;
end; end;
end; end;
@ -7126,25 +7137,29 @@ begin
F:=''; F:='';
For I:=0 to FExpr.Identifiers.Count-1 do For I:=0 to FExpr.Identifiers.Count-1 do
f:=f+FExpr.Identifiers[i].Name+'; '; f:=f+FExpr.Identifiers[i].Name+'; ';
for i := 0 to AData.DataFields.Count-1 do if FDataAdded.IndexOf(AData)=-1 then
begin begin
d := AData.Name; for i := 0 to AData.DataFields.Count-1 do
f := AData.DataFields[i].FieldName;
r := ReportKindToResultType(AData.DataFields[i].FieldKind);
if d <> '' then
begin begin
{$ifdef gdebug} d := AData.Name;
writeln('registering (dotted name)... '+ d+'.'+f); f := AData.DataFields[i].FieldName;
{$endif} r := ReportKindToResultType(AData.DataFields[i].FieldKind);
FExpr.Identifiers.AddVariable(d+'.'+f, r, @DoGetExpressionVariableValue); if d <> '' then
end begin
else {$ifdef gdebug}
begin writeln('registering (dotted name)... '+ d+'.'+f);
{$ifdef gdebug} {$endif}
writeln('registering... '+ f); FExpr.Identifiers.AddVariable(d+'.'+f, r, @DoGetExpressionVariableValue);
{$endif} end
FExpr.Identifiers.AddVariable(f, r, @DoGetExpressionVariableValue); else
begin
{$ifdef gdebug}
writeln('registering... '+ f);
{$endif}
FExpr.Identifiers.AddVariable(f, r, @DoGetExpressionVariableValue);
end;
end; end;
FDataAdded.Add(AData);
end; end;
if APage.Data = AData then if APage.Data = AData then
begin begin

View File

@ -64,7 +64,7 @@ type
FPrepareObjectsCalled: integer; FPrepareObjectsCalled: integer;
procedure SetupPage; procedure SetupPage;
protected protected
procedure PrepareObjects; override; procedure PrepareObjects(aRTParent: TFPReportElement); override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
procedure ResetChanged; procedure ResetChanged;
@ -77,7 +77,7 @@ type
private private
FPrepareObjectsCalled: integer; FPrepareObjectsCalled: integer;
protected protected
procedure PrepareObjects; override; procedure PrepareObjects(aRTParent: TFPReportElement); override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
end; end;
@ -87,7 +87,7 @@ type
private private
FPrepareObjectsCalled: integer; FPrepareObjectsCalled: integer;
protected protected
procedure PrepareObjects; override; procedure PrepareObjects(aRTParent: TFPReportElement); override;
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
end; end;
@ -1983,10 +1983,11 @@ begin
Margins.Bottom := 20; Margins.Bottom := 20;
end; end;
procedure TMyFPReportPage.PrepareObjects; procedure TMyFPReportPage.PrepareObjects(aRTParent: TFPReportElement);
begin begin
Inc(FPrepareObjectsCalled); Inc(FPrepareObjectsCalled);
inherited PrepareObjects; inherited PrepareObjects(aRTParent);
end; end;
constructor TMyFPReportPage.Create(AOwner: TComponent); constructor TMyFPReportPage.Create(AOwner: TComponent);
@ -2008,10 +2009,11 @@ end;
{ TMyReportTitleBand } { TMyReportTitleBand }
procedure TMyReportTitleBand.PrepareObjects; procedure TMyReportTitleBand.PrepareObjects(aRTParent: TFPReportElement);
begin begin
Inc(FPrepareObjectsCalled); Inc(FPrepareObjectsCalled);
inherited PrepareObjects; inherited PrepareObjects(aRTParent);
end; end;
constructor TMyReportTitleBand.Create(AOwner: TComponent); constructor TMyReportTitleBand.Create(AOwner: TComponent);
@ -2022,10 +2024,11 @@ end;
{ TMyDataBand } { TMyDataBand }
procedure TMyDataBand.PrepareObjects; procedure TMyDataBand.PrepareObjects(aRTParent: TFPReportElement);
begin begin
Inc(FPrepareObjectsCalled); Inc(FPrepareObjectsCalled);
inherited PrepareObjects; inherited PrepareObjects(aRTParent);
end; end;
constructor TMyDataBand.Create(AOwner: TComponent); constructor TMyDataBand.Create(AOwner: TComponent);
@ -2801,14 +2804,14 @@ begin
p.Name := 'Page3'; p.Name := 'Page3';
p.Data := Data; p.Data := Data;
AssertEquals('Failed on 1', TMyFPReportPage(Report.Pages[0]).FPrepareObjectsCalled, 0); AssertEquals('Failed on 1', 0, TMyFPReportPage(Report.Pages[0]).FPrepareObjectsCalled);
AssertEquals('Failed on 2', TMyFPReportPage(Report.Pages[1]).FPrepareObjectsCalled, 0); AssertEquals('Failed on 2', 0, TMyFPReportPage(Report.Pages[1]).FPrepareObjectsCalled);
AssertEquals('Failed on 3', TMyFPReportPage(Report.Pages[2]).FPrepareObjectsCalled, 0); AssertEquals('Failed on 3', 0, TMyFPReportPage(Report.Pages[2]).FPrepareObjectsCalled);
Report.RunReport; Report.RunReport;
AssertEquals('Failed on 4', TMyFPReportPage(Report.Pages[0]).FPrepareObjectsCalled, 1); AssertEquals('Failed on 4', 1, TMyFPReportPage(Report.Pages[0]).FPrepareObjectsCalled);
AssertEquals('Failed on 5', TMyFPReportPage(Report.Pages[1]).FPrepareObjectsCalled, 1); AssertEquals('Failed on 5', 1, TMyFPReportPage(Report.Pages[1]).FPrepareObjectsCalled);
AssertEquals('Failed on 6', TMyFPReportPage(Report.Pages[2]).FPrepareObjectsCalled, 1); AssertEquals('Failed on 6', 1, TMyFPReportPage(Report.Pages[2]).FPrepareObjectsCalled);
end; end;
procedure TTestCustomReport.TestBandPrepareObjects; procedure TTestCustomReport.TestBandPrepareObjects;

View File

@ -32,19 +32,14 @@
<RunParams> <RunParams>
<local> <local>
<FormatVersion Value="1"/> <FormatVersion Value="1"/>
<CommandLineParams Value="--suite=TTestCustomReport.TestPagePrepareObjects"/>
<LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/> <LaunchingApplication PathPlusParams="/usr/X11R6/bin/xterm -T 'Lazarus Run Output' -e $(LazarusDir)/tools/runwait.sh $(TargetCmdLine)"/>
</local> </local>
</RunParams> </RunParams>
<RequiredPackages Count="3"> <RequiredPackages Count="1">
<Item1> <Item1>
<PackageName Value="fclreport"/>
</Item1>
<Item2>
<PackageName Value="FPCUnitConsoleRunner"/>
</Item2>
<Item3>
<PackageName Value="FCL"/> <PackageName Value="FCL"/>
</Item3> </Item1>
</RequiredPackages> </RequiredPackages>
<Units Count="5"> <Units Count="5">
<Unit0> <Unit0>
@ -75,7 +70,7 @@
<Filename Value="testfpreport"/> <Filename Value="testfpreport"/>
</Target> </Target>
<SearchPaths> <SearchPaths>
<OtherUnitFiles Value="$(fptest)/src;$(fptest)/3rdparty/epiktimer"/> <OtherUnitFiles Value="../src"/>
<UnitOutputDirectory Value="units"/> <UnitOutputDirectory Value="units"/>
</SearchPaths> </SearchPaths>
<Parsing> <Parsing>