Added test for fixedstring fields

* Added test for the update buffers when multiple records are deleted
 * Changed tests because for sqldb the datasets must have a primary key, with as result that the id-field is required.

git-svn-id: trunk@12220 -
This commit is contained in:
joost 2008-11-23 17:00:40 +00:00
parent 481148b1f6
commit 9f25b3e2ed

View File

@ -85,6 +85,7 @@ type
procedure TestSupportDateFields; procedure TestSupportDateFields;
procedure TestSupportCurrencyFields; procedure TestSupportCurrencyFields;
procedure TestSupportBCDFields; procedure TestSupportBCDFields;
procedure TestSupportFixedStringFields;
procedure TestIsEmpty; procedure TestIsEmpty;
procedure TestAppendOnEmptyDataset; procedure TestAppendOnEmptyDataset;
@ -93,6 +94,7 @@ type
procedure TestBufDatasetCancelUpd; //bug 6938 procedure TestBufDatasetCancelUpd; //bug 6938
procedure TestEofAfterFirst; //bug 7211 procedure TestEofAfterFirst; //bug 7211
procedure TestBufDatasetCancelUpd1; procedure TestBufDatasetCancelUpd1;
procedure TestMultipleDeleteUpdateBuffer;
procedure TestDoubleClose; procedure TestDoubleClose;
procedure TestCalculatedField; procedure TestCalculatedField;
procedure TestAssignFieldftString; procedure TestAssignFieldftString;
@ -123,7 +125,7 @@ type
implementation implementation
uses toolsunit, bufdataset, variants; uses toolsunit, bufdataset, variants, strutils;
type THackDataLink=class(TdataLink); type THackDataLink=class(TdataLink);
@ -151,6 +153,7 @@ begin
AssertTrue(eof); AssertTrue(eof);
AssertTrue(bof); AssertTrue(bof);
append; append;
FieldByName('id').AsInteger:=0;
AssertFalse(Bof); AssertFalse(Bof);
AssertTrue(Eof); AssertTrue(Eof);
post; post;
@ -169,6 +172,7 @@ begin
AssertTrue(bof); AssertTrue(bof);
AssertTrue(IsEmpty); AssertTrue(IsEmpty);
insert; insert;
FieldByName('id').AsInteger:=0;
AssertTrue(Bof); AssertTrue(Bof);
AssertTrue(Eof); AssertTrue(Eof);
AssertFalse(IsEmpty); AssertFalse(IsEmpty);
@ -1804,6 +1808,24 @@ begin
ds.close; ds.close;
end; end;
procedure TTestDBBasics.TestSupportFixedStringFields;
var i : byte;
ds : TDataset;
Fld : TField;
begin
TestfieldDefinition(ftFixedChar,10,ds,Fld);
for i := 0 to testValuesCount-1 do
begin
if Fld.IsNull then // If the field is null, .AsString always returns an empty, non-padded string
AssertEquals(testStringValues[i],Fld.AsString)
else
AssertEquals(PadRight(testStringValues[i],10),Fld.AsString);
ds.Next;
end;
ds.close;
end;
procedure TTestDBBasics.TestDoubleClose; procedure TTestDBBasics.TestDoubleClose;
begin begin
with DBConnector.GetNDataset(1) do with DBConnector.GetNDataset(1) do
@ -1994,6 +2016,32 @@ begin
end; end;
end; end;
procedure TTestDBBasics.TestMultipleDeleteUpdateBuffer;
var ds : TDataset;
begin
ds := DBConnector.GetNDataset(true,5);
if not (ds is TBufDataset) then
Ignore('This test only applies to TBufDataset and descendents.');
ds.open;
with TBufDataset(ds) do
begin
AssertEquals(0,ChangeCount);
edit;
fieldbyname('id').asinteger := 500;
fieldbyname('name').AsString := 'JoJo';
post;
AssertEquals(1,ChangeCount);
next; next;
Delete;
AssertEquals(2,ChangeCount);
Delete;
AssertEquals(3,ChangeCount);
CancelUpdates;
end;
ds.close;
end;
procedure TTestDBBasics.TestNullAtOpen; procedure TTestDBBasics.TestNullAtOpen;
begin begin
with dbconnector.getndataset(0) do with dbconnector.getndataset(0) do