From 3d7ff766da78586e4a9d028bdbd8ee8ebc5086f6 Mon Sep 17 00:00:00 2001 From: ask Date: Fri, 8 Jun 2012 05:32:33 +0000 Subject: [PATCH] TAChart: Check for incorrect parameters in TListChartSource.AddXYList. Add tests. git-svn-id: trunk@37578 - --- components/tachart/tasources.pas | 8 +++++++- components/tachart/test/SourcesTest.pas | 17 +++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/components/tachart/tasources.pas b/components/tachart/tasources.pas index 02a4b3f964..f9ee940605 100644 --- a/components/tachart/tasources.pas +++ b/components/tachart/tasources.pas @@ -45,6 +45,9 @@ type function GetCount: Integer; override; function GetItem(AIndex: Integer): PChartDataItem; override; procedure SetYCount(AValue: Cardinal); override; + public + type + EYListEmptyError = class(EChartError); public constructor Create(AOwner: TComponent); override; destructor Destroy; override; @@ -387,8 +390,11 @@ function TListChartSource.AddXYList( AX: Double; const AY: array of Double; const ALabel: String; AColor: TChartColor): Integer; begin + if Length(AY) = 0 then + raise EYListEmptyError.Create('AddXYList: Y List is empty'); Result := Add(AX, AY[0], ALabel, AColor); - SetYListInternal(Result, High(AY), @AY[1]); + if Length(AY) > 1 then + SetYListInternal(Result, High(AY), @AY[1]); end; procedure TListChartSource.Clear; inline; diff --git a/components/tachart/test/SourcesTest.pas b/components/tachart/test/SourcesTest.pas index c0898fecb0..d5d1865304 100644 --- a/components/tachart/test/SourcesTest.pas +++ b/components/tachart/test/SourcesTest.pas @@ -392,6 +392,23 @@ begin FSource.DataPoints.Add('1|2|3|4|?|t'); AssertEquals(3, FSource.YCount); AssertEquals(4, FSource[1]^.YList[1]); + + FSource.AddXYList(2, [7, 8, 9]); + AssertEquals(3, FSource.YCount); + AssertEquals(7, FSource[2]^.Y); + AssertEquals(8, FSource[2]^.YList[0]); + AssertEquals(9, FSource[2]^.YList[1]); + FSource.AddXYList(3, [10]); + AssertEquals(4, FSource.Count); + AssertEquals(3, FSource.YCount); + AssertEquals(10, FSource[3]^.Y); + AssertEquals(0, FSource[3]^.YList[0]); + try + FSource.AddXYList(4, []); + Fail('Empty YList'); + except on E: Exception do + AssertTrue('Empty YList', E is TListChartSource.EYListEmptyError); + end; end; procedure TListSourceTest.SetUp;