testspecifictbufdataset.pas 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. unit TestSpecificTBufDataset;
  2. {
  3. Unit tests which are specific to stand-alone TBufDataset-datasets. (So not
  4. for derrived datasets like TQuery )
  5. }
  6. {$IFDEF FPC}
  7. {$mode Delphi}{$H+}
  8. {$ENDIF}
  9. interface
  10. uses
  11. {$IFDEF FPC}
  12. fpcunit, testutils, testregistry, testdecorator, BufDataset,
  13. {$ELSE FPC}
  14. TestFramework,
  15. {$ENDIF FPC}
  16. Classes, SysUtils, db, ToolsUnit;
  17. type
  18. { TTestSpecificTBufDataset }
  19. TTestSpecificTBufDataset = class(TTestCase)
  20. private
  21. procedure TestDataset(ABufDataset: TBufDataset);
  22. protected
  23. procedure SetUp; override;
  24. procedure TearDown; override;
  25. published
  26. procedure CreateDatasetFromFielddefs;
  27. procedure CreateDatasetFromFields;
  28. end;
  29. implementation
  30. uses
  31. {$ifdef fpc}
  32. //
  33. {$endif fpc}
  34. variants,
  35. strutils,
  36. FmtBCD;
  37. { TTestSpecificTBufDataset }
  38. procedure TTestSpecificTBufDataset.TestDataset(ABufDataset: TBufDataset);
  39. var
  40. i : integer;
  41. begin
  42. for i := 1 to 10 do
  43. begin
  44. ABufDataset.Append;
  45. ABufDataset.FieldByName('ID').AsInteger := i;
  46. ABufDataset.FieldByName('NAME').AsString := 'TestName' + inttostr(i);
  47. ABufDataset.Post;
  48. end;
  49. ABufDataset.first;
  50. for i := 1 to 10 do
  51. begin
  52. CheckEquals(i,ABufDataset.fieldbyname('ID').asinteger);
  53. CheckEquals('TestName' + inttostr(i),ABufDataset.fieldbyname('NAME').AsString);
  54. ABufDataset.next;
  55. end;
  56. CheckTrue(ABufDataset.EOF);
  57. end;
  58. procedure TTestSpecificTBufDataset.SetUp;
  59. begin
  60. DBConnector.StartTest;
  61. end;
  62. procedure TTestSpecificTBufDataset.TearDown;
  63. begin
  64. DBConnector.StopTest;
  65. end;
  66. procedure TTestSpecificTBufDataset.CreateDatasetFromFielddefs;
  67. var ds : TBufDataset;
  68. begin
  69. ds := TBufDataset.Create(nil);
  70. DS.FieldDefs.Add('ID',ftInteger);
  71. DS.FieldDefs.Add('NAME',ftString,50);
  72. DS.CreateDataset;
  73. TestDataset(ds);
  74. DS.Close;
  75. DS.CreateDataset;
  76. TestDataset(ds);
  77. end;
  78. procedure TTestSpecificTBufDataset.CreateDatasetFromFields;
  79. var ds : TBufDataset;
  80. f: TField;
  81. begin
  82. ds := TBufDataset.Create(nil);
  83. F := TIntegerField.Create(ds);
  84. F.FieldName:='ID';
  85. F.DataSet:=ds;
  86. F := TStringField.Create(ds);
  87. F.FieldName:='NAME';
  88. F.DataSet:=ds;
  89. F.Size:=50;
  90. DS.CreateDataset;
  91. TestDataset(ds);
  92. DS.Close;
  93. DS.CreateDataset;
  94. TestDataset(ds);
  95. end;
  96. initialization
  97. {$ifdef fpc}
  98. if uppercase(dbconnectorname)='BUFDATASET' then
  99. begin
  100. RegisterTestDecorator(TDBBasicsTestSetup, TTestSpecificTBufDataset);
  101. end;
  102. {$endif fpc}
  103. end.