Browse Source

* added tests for filtering and null-valued fields

git-svn-id: trunk@5878 -
joost 18 years ago
parent
commit
e8707ad4b8
1 changed files with 83 additions and 0 deletions
  1. 83 0
      fcl/dbtests/testdbbasics.pas

+ 83 - 0
fcl/dbtests/testdbbasics.pas

@@ -16,12 +16,19 @@ type
 
 
   TTestDBBasics = class(TTestCase)
   TTestDBBasics = class(TTestCase)
   private
   private
+    procedure TestOnFilterProc(DataSet: TDataSet; var Accept: Boolean);
     procedure TestfieldDefinition(AFieldType : TFieldType;ADatasize : integer;var ADS : TDataset; var AFld: TField);
     procedure TestfieldDefinition(AFieldType : TFieldType;ADatasize : integer;var ADS : TDataset; var AFld: TField);
     procedure TestcalculatedField_OnCalcfields(DataSet: TDataSet);
     procedure TestcalculatedField_OnCalcfields(DataSet: TDataSet);
   protected
   protected
     procedure SetUp; override;
     procedure SetUp; override;
     procedure TearDown; override;
     procedure TearDown; override;
   published
   published
+    procedure TestIntFilter;
+    procedure TestOnFilter;
+    procedure TestStringFilter;
+
+    procedure TestNullAtOpen;
+
     procedure TestSupportIntegerFields;
     procedure TestSupportIntegerFields;
     procedure TestSupportSmallIntFields;
     procedure TestSupportSmallIntFields;
     procedure TestSupportStringFields;
     procedure TestSupportStringFields;
@@ -425,6 +432,67 @@ begin
   DBConnector.StopTest;
   DBConnector.StopTest;
 end;
 end;
 
 
+procedure TTestDBBasics.TestOnFilterProc(DataSet: TDataSet; var Accept: Boolean);
+
+var a : TDataSetState;
+begin
+  Accept := odd(Dataset.FieldByName('ID').AsInteger);
+end;
+
+procedure TTestDBBasics.TestOnFilter;
+var tel : byte;
+begin
+  with DBConnector.GetNDataset(15) do
+    begin
+    OnFilterRecord := TestOnFilterProc;
+    Filtered := True;
+    Open;
+    for tel := 1 to 8 do
+      begin
+      AssertTrue(odd(FieldByName('ID').asinteger));
+      next;
+      end;
+    AssertTrue(EOF);
+    end;
+end;
+
+procedure TTestDBBasics.TestIntFilter;
+var tel : byte;
+begin
+  with DBConnector.GetNDataset(15) do
+    begin
+    Filtered := True;
+    Filter := '(id>4) and (id<9)';
+    Open;
+    for tel := 5 to 8 do
+      begin
+      AssertEquals(tel,FieldByName('ID').asinteger);
+      next;
+      end;
+    AssertTrue(EOF);
+    Close;
+    end;
+end;
+
+procedure TTestDBBasics.TestStringFilter;
+var tel : byte;
+begin
+  with DBConnector.GetNDataset(15) do
+    begin
+    Open;
+    //FilterOptions := [foNoPartialCompare];
+    //FilterOptions := [];
+    Filter := '(name=''*Name3'')';
+    Filtered := True;
+    AssertFalse(EOF);
+    AssertEquals(3,FieldByName('ID').asinteger);
+    AssertEquals('TestName3',FieldByName('NAME').asstring);
+    next;
+    AssertTrue(EOF);
+    Close;
+    end;
+end;
+
 procedure TTestDBBasics.TestcalculatedField_OnCalcfields(DataSet: TDataSet);
 procedure TTestDBBasics.TestcalculatedField_OnCalcfields(DataSet: TDataSet);
 begin
 begin
   case dataset.fieldbyname('ID').asinteger of
   case dataset.fieldbyname('ID').asinteger of
@@ -779,6 +847,21 @@ begin
     end;
     end;
 end;
 end;
 
 
+procedure TTestDBBasics.TestNullAtOpen;
+begin
+  with dbconnector.getndataset(0) do
+    begin
+    active:= true;
+    AssertTrue('Field isn''t NULL on a just-opened empty dataset',fieldbyname('id').IsNull);
+    append;
+    AssertTrue('Field isn''t NULL after append on an empty dataset',fieldbyname('id').IsNull);
+    fieldbyname('id').asinteger:= 123;
+    cancel;
+    AssertTrue('Field isn''t NULL after cancel',fieldbyname('id').IsNull);
+    end;
+
+end;
+
 { TSQLTestSetup }
 { TSQLTestSetup }
 procedure TDBBasicsTestSetup.OneTimeSetup;
 procedure TDBBasicsTestSetup.OneTimeSetup;
 begin
 begin