Browse Source

* fcl-db: tests: adjust TTestDBBasics.TestSupportIntegerFields to reflect that Oracle does not map integer fields to ftInteger but to ftFMTBCD

git-svn-id: trunk@27987 -
reiniero 11 years ago
parent
commit
4d92b003a7
1 changed files with 27 additions and 5 deletions
  1. 27 5
      packages/fcl-db/tests/testdbbasics.pas

+ 27 - 5
packages/fcl-db/tests/testdbbasics.pas

@@ -20,6 +20,9 @@ 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 TestcalculatedField_OnCalcfields(DataSet: TDataSet);
 
@@ -2409,16 +2412,25 @@ begin
     end;
 end;
 
-procedure TTestDBBasics.TestfieldDefinition(AFieldType : TFieldType;ADatasize : integer;var ADS : TDataset; var AFld: TField);
-
-var i          : byte;
-
+procedure TTestDBBasics.SetupFieldDefinitionDataset(AFieldType: TFieldType;
+  var ADS: TDataset; var AFld: TField);
 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 +2454,17 @@ begin
       Ignore('TDBF: only Visual Foxpro and DBase7 support full integer range.');
   end;
 
-  TestfieldDefinition(ftInteger,4,ds,Fld);
+  if (uppercase(dbconnectorname)='SQL') and
+    (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);
+  end
+  else
+  begin
+    TestfieldDefinition(ftInteger,4,ds,Fld);
+  end;
 
   for i := 0 to testValuesCount-1 do
     begin