Browse Source

fcl-db: tests:
- add TestSupportDateTimeFields
- small rework for Oracle case

git-svn-id: trunk@28045 -

lacak 11 years ago
parent
commit
41e8a0da2c
1 changed files with 30 additions and 25 deletions
  1. 30 25
      packages/fcl-db/tests/testdbbasics.pas

+ 30 - 25
packages/fcl-db/tests/testdbbasics.pas

@@ -20,10 +20,7 @@ type
 
   TTestDBBasics = class(TDBBasicsTestCase)
   private
-    procedure SetupFieldDefinitionDataset(AFieldType: TFieldType;
-      var ADS: TDataset; var AFld: TField);
-    // Sets up dataset and verifies field type and data size match expected values
-    procedure TestfieldDefinition(AFieldType : TFieldType;ADatasize : integer;var ADS : TDataset; var AFld: TField);
+    procedure TestfieldDefinition(AFieldType : TFieldType; ADataSize : integer; out ADS : TDataset; out AFld: TField);
     procedure TestcalculatedField_OnCalcfields(DataSet: TDataSet);
 
   published
@@ -40,6 +37,7 @@ type
     procedure TestSupportLargeIntFields;
     procedure TestSupportDateFields;
     procedure TestSupportTimeFields;
+    procedure TestSupportDateTimeFields;
     procedure TestSupportCurrencyFields;
     procedure TestSupportBCDFields;
     procedure TestSupportFmtBCDFields;
@@ -2412,25 +2410,16 @@ begin
     end;
 end;
 
-procedure TTestDBBasics.SetupFieldDefinitionDataset(AFieldType: TFieldType;
-  var ADS: TDataset; var AFld: TField);
+procedure TTestDBBasics.TestfieldDefinition(AFieldType : TFieldType; ADataSize : integer; out ADS : TDataset; out AFld: TField);
+
+var i          : byte;
+
 begin
   ADS := DBConnector.GetFieldDataset;
   ADS.Open;
 
   AFld := ADS.FindField('F'+FieldTypeNames[AfieldType]);
-  {$ifdef fpc}
-  if not assigned (AFld) then
-    Ignore('Fields of the type ' + FieldTypeNames[AfieldType] + ' are not supported by this type of dataset');
-  {$endif fpc}
-end;
 
-procedure TTestDBBasics.TestfieldDefinition(AFieldType : TFieldType;ADatasize : integer;var ADS : TDataset; var AFld: TField);
-
-var i          : byte;
-
-begin
-  SetupFieldDefinitionDataset(AFieldType,ADS, AFld);
 {$ifdef fpc}
   if not assigned (AFld) then
     Ignore('Fields of the type ' + FieldTypeNames[AfieldType] + ' are not supported by this type of dataset');
@@ -2442,7 +2431,8 @@ end;
 procedure TTestDBBasics.TestSupportIntegerFields;
 
 var i          : byte;
-    ds         : TDataset;
+    FT         : TFieldType;
+    DS         : TDataset;
     Fld        : TField;
     DbfTableLevel: integer;
 
@@ -2455,23 +2445,23 @@ begin
   end;
 
   if (uppercase(dbconnectorname)='SQL') and
-    (uppercase(dbconnectorparams)='ORACLE') then
+     (uppercase(dbconnectorparams)='ORACLE') then
   begin
     // Oracle: NUMERIC fields that map to ftFMTBCD are used; these do not map to ftInteger
     // We still want to run the value tests below, so set up things manually:
-    SetupFieldDefinitionDataset(ftInteger,DS,Fld);
+    FT:=ftFmtBCD;
   end
   else
-  begin
-    TestfieldDefinition(ftInteger,4,ds,Fld);
-  end;
+    FT:=ftInteger;
+
+  TestfieldDefinition(FT,4,DS,Fld);
 
   for i := 0 to testValuesCount-1 do
     begin
     CheckEquals(testIntValues[i],Fld.AsInteger);
-    ds.Next;
+    DS.Next;
     end;
-  ds.close;
+  DS.Close;
 end;
 
 procedure TTestDBBasics.TestSupportSmallIntFields;
@@ -2614,6 +2604,21 @@ begin
   ds.close;
 end;
 
+procedure TTestDBBasics.TestSupportDateTimeFields;
+var i          : integer;
+    DS         : TDataSet;
+    Fld        : TField;
+begin
+  TestfieldDefinition(ftDateTime,8,DS,Fld);
+
+  for i := 0 to testValuesCount-1 do
+    begin
+    CheckEquals(testValues[ftDateTime,i], DateTimeToStr(Fld.AsDateTime, DBConnector.FormatSettings));
+    DS.Next;
+    end;
+  DS.Close;
+end;
+
 procedure TTestDBBasics.TestSupportCurrencyFields;
 
 var i          : byte;