Browse Source

* add bufdataset to test framework, Mantis #20081, patch by bigchimp

git-svn-id: trunk@19495 -
marco 14 years ago
parent
commit
43e9ffca3b

+ 1 - 0
.gitattributes

@@ -1982,6 +1982,7 @@ packages/fcl-db/tests/Makefile.fpc -text
 packages/fcl-db/tests/README.txt svneol=native#text/plain
 packages/fcl-db/tests/XMLXSDExportTest.lpi svneol=native#text/plain
 packages/fcl-db/tests/XMLXSDExportTest.lpr svneol=native#text/plain
+packages/fcl-db/tests/bufdatasettoolsunit.pas svneol=native#text/plain
 packages/fcl-db/tests/database.ini.txt svneol=native#text/plain
 packages/fcl-db/tests/dbfexporttest.lpi svneol=native#text/plain
 packages/fcl-db/tests/dbfexporttest.lpr svneol=native#text/plain

+ 118 - 0
packages/fcl-db/tests/bufdatasettoolsunit.pas

@@ -0,0 +1,118 @@
+unit BufDatasetToolsUnit;
+
+{$mode objfpc}{$H+}
+
+interface
+
+uses
+  Classes, SysUtils, toolsunit,
+  db,
+  BufDataset;
+
+type
+{ TbufdatasetConnector }
+  TbufdatasetDBConnector = class(TDBConnector)
+  protected
+    procedure CreateNDatasets; override;
+    procedure CreateFieldDataset; override;
+    procedure DropNDatasets; override;
+    procedure DropFieldDataset; override;
+    Function InternalGetNDataset(n : integer) : TDataset; override;
+    Function InternalGetFieldDataset : TDataSet; override;
+  end;
+
+implementation
+
+{ TbufdatasetDBConnector }
+
+procedure TbufdatasetDBConnector.CreateNDatasets;
+begin
+// All datasets only exist in memory, so nothing has to be done
+end;
+
+procedure TbufdatasetDBConnector.CreateFieldDataset;
+begin
+// All datasets only exist in memory, so nothing has to be done
+end;
+
+procedure TbufdatasetDBConnector.DropNDatasets;
+begin
+// All datasets only exist in memory, so nothing has to be done
+end;
+
+procedure TbufdatasetDBConnector.DropFieldDataset;
+begin
+// All datasets only exist in memory, so nothing has to be done
+end;
+
+function TbufdatasetDBConnector.InternalGetNDataset(n: integer): TDataset;
+var BufDataset  : TBufDataset;
+    i      : integer;
+
+begin
+  BufDataset := TBufDataset.Create(nil);
+  BufDataset.FieldDefs.Add('ID',ftInteger);
+  BufDataset.FieldDefs.Add('NAME',ftString,50);
+  BufDataset.CreateDataset;
+  BufDataset.Open;
+  for i := 1 to n do
+    begin
+    BufDataset.Append;
+    BufDataset.FieldByName('ID').AsInteger := i;
+    BufDataset.FieldByName('NAME').AsString := 'TestName' + inttostr(i);
+    BufDataset.Post;
+    end;
+  BufDataset.Close;
+  Result := BufDataset;
+end;
+
+function TbufdatasetDBConnector.InternalGetFieldDataset : TDataSet;
+
+
+var BufDataset  : TBufDataset;
+    i      : integer;
+
+begin
+  BufDataset := TBufDataset.Create(nil);
+  with BufDataset do
+    begin
+    //todo: this is based on memds.
+    //check and add bufdataset supported fields
+    FieldDefs.Add('ID',ftInteger);
+    FieldDefs.Add('FSTRING',ftString,10);
+    FieldDefs.Add('FSMALLINT',ftSmallint);
+    FieldDefs.Add('FINTEGER',ftInteger);
+//    FieldDefs.Add('FWORD',ftWord);
+    FieldDefs.Add('FBOOLEAN',ftBoolean);
+    FieldDefs.Add('FFLOAT',ftFloat);
+//    FieldDefs.Add('FCURRENCY',ftCurrency);
+//    FieldDefs.Add('FBCD',ftBCD);
+    FieldDefs.Add('FDATE',ftDate);
+    FieldDefs.Add('FTIME',ftTime);
+    FieldDefs.Add('FDATETIME',ftDateTime);
+    FieldDefs.Add('FLARGEINT',ftLargeint);
+    CreateDataset;
+    Open;
+    for i := 0 to testValuesCount-1 do
+      begin
+      Append;
+      FieldByName('ID').AsInteger := i;
+      FieldByName('FSTRING').AsString := testStringValues[i];
+      FieldByName('FSMALLINT').AsInteger := testSmallIntValues[i];
+      FieldByName('FINTEGER').AsInteger := testIntValues[i];
+      FieldByName('FBOOLEAN').AsBoolean := testBooleanValues[i];
+      FieldByName('FFLOAT').AsFloat := testFloatValues[i];
+      ShortDateFormat := 'yyyy-mm-dd';
+      FieldByName('FDATE').AsDateTime := StrToDate(testDateValues[i]);
+      FieldByName('FLARGEINT').AsLargeInt := testLargeIntValues[i];
+      Post;
+      end;
+    Close;
+    end;
+  Result := BufDataset;
+end;
+
+initialization
+  RegisterClass(TbufdatasetDBConnector);
+end.
+

+ 4 - 1
packages/fcl-db/tests/database.ini.txt

@@ -10,7 +10,6 @@ type=interbase
 
 ; PostgreSQL database:
 [postgresql]
-
 ; The connector specifies the DB-component that has to be used. The 'sql'
 ; connector tests the SQLDB components
 connector=sql
@@ -105,3 +104,7 @@ name=/tmp
 ; MemDS in memory dataset:
 [memds]
 connector=memds
+
+; BufDataset in memory dataset:
+[bufdataset]
+connector=bufdataset

+ 1 - 0
packages/fcl-db/tests/dbtestframework.pas

@@ -14,6 +14,7 @@ uses
 // List of supported database-connectors
   sqldbtoolsunit,
   dbftoolsunit,
+  bufdatasettoolsunit,
   memdstoolsunit,
   SdfDSToolsUnit,
 // Units wich contains the tests

+ 1 - 1
packages/fcl-db/tests/toolsunit.pas

@@ -330,7 +330,7 @@ begin
   DBConnectorClass := GetClass('T'+dbconnectorname+'DBConnector');
   if assigned(DBConnectorClass) then
     DBConnector := TDBConnectorClass(DBConnectorClass).create
-  else Raise Exception.Create('Unknown db-connector specified');
+  else Raise Exception.Create('Unknown db-connector specified: ' + 'T'+dbconnectorname+'DBConnector');
   inc(DBConnectorRefCount);
 end;