123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- unit TestSpecificTBufDataset;
- {
- Unit tests which are specific to stand-alone TBufDataset-datasets. (So not
- for derrived datasets like TQuery )
- }
- {$IFDEF FPC}
- {$mode Delphi}{$H+}
- {$ENDIF}
- interface
- uses
- {$IFDEF FPC}
- fpcunit, testutils, testregistry, testdecorator, BufDataset,
- {$ELSE FPC}
- TestFramework,
- {$ENDIF FPC}
- Classes, SysUtils, db, ToolsUnit;
- type
- { TTestSpecificTBufDataset }
- TTestSpecificTBufDataset = class(TTestCase)
- private
- procedure TestDataset(ABufDataset: TBufDataset);
- protected
- procedure SetUp; override;
- procedure TearDown; override;
- published
- procedure CreateDatasetFromFielddefs;
- procedure CreateDatasetFromFields;
- procedure TestOpeningNonExistingDataset;
- procedure TestCreationDatasetWithCalcFields;
- end;
- implementation
- uses
- {$ifdef fpc}
- //
- {$endif fpc}
- variants,
- strutils,
- FmtBCD;
- { TTestSpecificTBufDataset }
- procedure TTestSpecificTBufDataset.TestDataset(ABufDataset: TBufDataset);
- var
- i : integer;
- begin
- for i := 1 to 10 do
- begin
- ABufDataset.Append;
- ABufDataset.FieldByName('ID').AsInteger := i;
- ABufDataset.FieldByName('NAME').AsString := 'TestName' + inttostr(i);
- ABufDataset.Post;
- end;
- ABufDataset.first;
- for i := 1 to 10 do
- begin
- CheckEquals(i,ABufDataset.fieldbyname('ID').asinteger);
- CheckEquals('TestName' + inttostr(i),ABufDataset.fieldbyname('NAME').AsString);
- ABufDataset.next;
- end;
- CheckTrue(ABufDataset.EOF);
- end;
- procedure TTestSpecificTBufDataset.SetUp;
- begin
- DBConnector.StartTest;
- end;
- procedure TTestSpecificTBufDataset.TearDown;
- begin
- DBConnector.StopTest;
- end;
- procedure TTestSpecificTBufDataset.CreateDatasetFromFielddefs;
- var ds : TBufDataset;
- begin
- ds := TBufDataset.Create(nil);
- DS.FieldDefs.Add('ID',ftInteger);
- DS.FieldDefs.Add('NAME',ftString,50);
- DS.CreateDataset;
- TestDataset(ds);
- DS.Close;
- DS.CreateDataset;
- TestDataset(ds);
- end;
- procedure TTestSpecificTBufDataset.CreateDatasetFromFields;
- var ds : TBufDataset;
- f: TField;
- begin
- ds := TBufDataset.Create(nil);
- F := TIntegerField.Create(ds);
- F.FieldName:='ID';
- F.DataSet:=ds;
- F := TStringField.Create(ds);
- F.FieldName:='NAME';
- F.DataSet:=ds;
- F.Size:=50;
- DS.CreateDataset;
- TestDataset(ds);
- DS.Close;
- DS.CreateDataset;
- TestDataset(ds);
- end;
- procedure TTestSpecificTBufDataset.TestOpeningNonExistingDataset;
- var ds : TBufDataset;
- f: TField;
- begin
- ds := TBufDataset.Create(nil);
- F := TIntegerField.Create(ds);
- F.FieldName:='ID';
- F.DataSet:=ds;
- CheckException(ds.Open,EDatabaseError);
- ds.Free;
- ds := TBufDataset.Create(nil);
- DS.FieldDefs.Add('ID',ftInteger);
- CheckException(ds.Open,EDatabaseError);
- ds.Free;
- end;
- procedure TTestSpecificTBufDataset.TestCreationDatasetWithCalcFields;
- var ds : TBufDataset;
- f: TField;
- i: integer;
- begin
- ds := TBufDataset.Create(nil);
- try
- F := TIntegerField.Create(ds);
- F.FieldName:='ID';
- F.DataSet:=ds;
- F := TStringField.Create(ds);
- F.FieldName:='NAME';
- F.DataSet:=ds;
- F.Size:=50;
- F := TStringField.Create(ds);
- F.FieldKind:=fkCalculated;
- F.FieldName:='NAME_CALC';
- F.DataSet:=ds;
- F.Size:=50;
- F := TStringField.Create(ds);
- F.FieldKind:=fkLookup;
- F.FieldName:='NAME_LKP';
- F.LookupDataSet:=DBConnector.GetNDataset(5);
- F.KeyFields:='ID';
- F.LookupKeyFields:='ID';
- F.LookupResultField:='NAME';
- F.DataSet:=ds;
- F.Size:=50;
- DS.CreateDataset;
- TestDataset(ds);
- for i := 0 to ds.FieldDefs.Count-1 do
- begin
- CheckNotEquals(ds.FieldDefs[i].Name,'NAME_CALC');
- CheckNotEquals(ds.FieldDefs[i].Name,'NAME_LKP');
- end;
- DS.Close;
- finally
- ds.Free;
- end;
- end;
- initialization
- {$ifdef fpc}
- if uppercase(dbconnectorname)='BUFDATASET' then
- begin
- RegisterTestDecorator(TDBBasicsTestSetup, TTestSpecificTBufDataset);
- end;
- {$endif fpc}
- end.
|