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

View File

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

View File

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