mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-17 06:59:24 +02:00
fcl-db: tests: Improve TestOldValue; tests also Blobs (which has special storage) and state of TField.OldValue after MergeChangeLog
git-svn-id: trunk@26667 -
This commit is contained in:
parent
9c1f917e3a
commit
cdc5e9a73a
@ -8,7 +8,7 @@ interface
|
|||||||
|
|
||||||
uses
|
uses
|
||||||
{$IFDEF FPC}
|
{$IFDEF FPC}
|
||||||
fpcunit, testutils, testregistry, testdecorator,
|
fpcunit, testregistry,
|
||||||
{$ELSE FPC}
|
{$ELSE FPC}
|
||||||
TestFramework,
|
TestFramework,
|
||||||
{$ENDIF FPC}
|
{$ENDIF FPC}
|
||||||
@ -650,19 +650,24 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTestCursorDBBasics.TestOldValue;
|
procedure TTestCursorDBBasics.TestOldValue;
|
||||||
|
var OldValue: string;
|
||||||
|
Fmemo: TField;
|
||||||
begin
|
begin
|
||||||
with DBConnector.GetNDataset(1) as TDataset do
|
with DBConnector.GetFieldDataset as TCustomBufDataset do
|
||||||
begin;
|
begin;
|
||||||
Open;
|
Open;
|
||||||
First;
|
First;
|
||||||
CheckEquals('1', VarToStr(Fields[0].OldValue), 'Original value'); // unmodified original value
|
Next;
|
||||||
|
OldValue := Fields[0].AsString;
|
||||||
|
|
||||||
|
CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Original value'); // unmodified original value
|
||||||
CheckTrue(UpdateStatus=usUnmodified, 'Unmodified');
|
CheckTrue(UpdateStatus=usUnmodified, 'Unmodified');
|
||||||
|
|
||||||
Edit;
|
Edit;
|
||||||
Fields[0].AsInteger := -1;
|
Fields[0].AsInteger := -1;
|
||||||
CheckEquals('1', VarToStr(Fields[0].OldValue), 'Editing'); // dsEdit, there is no update-buffer yet
|
CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Editing'); // dsEdit, there is no update-buffer yet
|
||||||
Post;
|
Post;
|
||||||
CheckEquals('1', VarToStr(Fields[0].OldValue), 'Edited'); // there is already update-buffer
|
CheckEquals(OldValue, VarToStr(Fields[0].OldValue), 'Edited'); // there is already update-buffer
|
||||||
CheckTrue(UpdateStatus=usModified, 'Modified');
|
CheckTrue(UpdateStatus=usModified, 'Modified');
|
||||||
|
|
||||||
Append;
|
Append;
|
||||||
@ -671,6 +676,22 @@ begin
|
|||||||
Post;
|
Post;
|
||||||
CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserted'); // there is already update-buffer
|
CheckTrue(VarIsNull(Fields[0].OldValue), 'Inserted'); // there is already update-buffer
|
||||||
CheckTrue(UpdateStatus=usInserted, 'Inserted');
|
CheckTrue(UpdateStatus=usInserted, 'Inserted');
|
||||||
|
|
||||||
|
// Blobs are stored in a special way
|
||||||
|
// Use TMemoField because it implements AsVariant as AsString
|
||||||
|
First;
|
||||||
|
Next;
|
||||||
|
Fmemo := FieldByName('F'+FieldTypeNames[ftMemo]);
|
||||||
|
OldValue := Fmemo.AsString;
|
||||||
|
|
||||||
|
CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue');
|
||||||
|
Edit;
|
||||||
|
Fmemo.AsString := 'Changed Memo value';
|
||||||
|
CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue before Post');
|
||||||
|
Post;
|
||||||
|
CheckEquals(OldValue, Fmemo.OldValue, 'Memo.OldValue after Post');
|
||||||
|
MergeChangeLog;
|
||||||
|
CheckEquals('Changed Memo value', Fmemo.OldValue, 'Memo.OldValue after MergeChangeLog');
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@ -1676,7 +1697,7 @@ begin
|
|||||||
i := fields[0].AsInteger;
|
i := fields[0].AsInteger;
|
||||||
s := fields[1].AsString;
|
s := fields[1].AsString;
|
||||||
fields[0].AsInteger:=64;
|
fields[0].AsInteger:=64;
|
||||||
fields[1].AsString:='Changed';
|
fields[1].AsString:='Changed1';
|
||||||
Post;
|
Post;
|
||||||
checkequals(fields[0].OldValue,i);
|
checkequals(fields[0].OldValue,i);
|
||||||
checkequals(fields[1].OldValue,s);
|
checkequals(fields[1].OldValue,s);
|
||||||
@ -1686,7 +1707,7 @@ begin
|
|||||||
i := fields[0].AsInteger;
|
i := fields[0].AsInteger;
|
||||||
s := fields[1].AsString;
|
s := fields[1].AsString;
|
||||||
fields[0].AsInteger:=23;
|
fields[0].AsInteger:=23;
|
||||||
fields[1].AsString:='hanged';
|
fields[1].AsString:='Changed2';
|
||||||
Post;
|
Post;
|
||||||
checkequals(fields[0].OldValue,i);
|
checkequals(fields[0].OldValue,i);
|
||||||
checkequals(fields[1].OldValue,s);
|
checkequals(fields[1].OldValue,s);
|
||||||
@ -1694,7 +1715,7 @@ begin
|
|||||||
MergeChangeLog;
|
MergeChangeLog;
|
||||||
CheckEquals(ChangeCount,0);
|
CheckEquals(ChangeCount,0);
|
||||||
checkequals(fields[0].OldValue,23);
|
checkequals(fields[0].OldValue,23);
|
||||||
checkequals(fields[1].OldValue,'hanged');
|
checkequals(fields[1].OldValue,'Changed2');
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Test handling of [Update]BlobBuffers in TBufDataset
|
// Test handling of [Update]BlobBuffers in TBufDataset
|
||||||
|
Loading…
Reference in New Issue
Block a user