ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/testsuite/Test3.pas
(Generate patch)

Comparing ibx/trunk/fbintf/testsuite/Test3.pas (file contents):
Revision 45 by tony, Tue Dec 6 10:33:46 2016 UTC vs.
Revision 359 by tony, Tue Dec 7 09:37:32 2021 UTC

# Line 1 | Line 1
1 + (*
2 + *  Firebird Interface (fbintf) Test suite. This program is used to
3 + *  test the Firebird Pascal Interface and provide a semi-automated
4 + *  pass/fail check for each test.
5 + *
6 + *  The contents of this file are subject to the Initial Developer's
7 + *  Public License Version 1.0 (the "License"); you may not use this
8 + *  file except in compliance with the License. You may obtain a copy
9 + *  of the License here:
10 + *
11 + *    http://www.firebirdsql.org/index.php?op=doc&id=idpl
12 + *
13 + *  Software distributed under the License is distributed on an "AS
14 + *  IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
15 + *  implied. See the License for the specific language governing rights
16 + *  and limitations under the License.
17 + *
18 + *  The Initial Developer of the Original Code is Tony Whyman.
19 + *
20 + *  The Original Code is (C) 2016 Tony Whyman, MWA Software
21 + *  (http://www.mwasoftware.co.uk).
22 + *
23 + *  All Rights Reserved.
24 + *
25 + *  Contributor(s): ______________________________________.
26 + *
27 + *)
28 +
29   unit Test3;
30 + {$IFDEF MSWINDOWS}
31 + {$DEFINE WINDOWS}
32 + {$ENDIF}
33  
34 < {$mode objfpc}{$H+}
34 > {$IFDEF FPC}
35 > {$mode delphi}
36   {$codepage utf8}
37 + {$ENDIF}
38  
39   { Test 3: ad hoc queries}
40  
# Line 25 | Line 58 | unit Test3;
58   interface
59  
60   uses
61 <  Classes, SysUtils, TestManager, IB;
61 >  Classes, SysUtils, TestApplication, FBTestApp, IB;
62  
63   type
64    { TTest3 }
65  
66 <  TTest3 = class(TTestBase)
66 >  TTest3 = class(TFBTestBase)
67    private
68      procedure DoQuery(Attachment: IAttachment);
69    public
70 <    function TestTitle: string; override;
71 <    procedure RunTest(CharSet: string; SQLDialect: integer); override;
70 >    function TestTitle: AnsiString; override;
71 >    procedure RunTest(CharSet: AnsiString; SQLDialect: integer); override;
72    end;
73  
74  
# Line 48 | Line 81 | var Transaction: ITransaction;
81      ResultSet: IResultSet;
82      Statement: IStatement;
83      TPB: ITPB;
84 +    us: UnicodeString;
85   begin
86    writeln(OutFile,'Employee Count = ',Attachment.OpenCursorAtStart('Select count(*) from EMPLOYEE')[0].AsInteger);
87  
# Line 58 | Line 92 | begin
92    TPB.Add(isc_tpb_lock_read).AsString := 'EMPLOYEE';
93    TPB.Add(isc_tpb_protected);
94    Transaction := Attachment.StartTransaction(TPB,taRollback);
95 +  writeln(OutFile,'Transaction ID = ',Transaction.GetTransactionID);
96 +  if Transaction.GetIsReadOnly then
97 +    writeln(OutFile,'Transaction is Read Only')
98 +  else
99 +    writeln(OutFile,'Transaction is Read/Write');
100 +  writeTRInfo(Transaction.GetTrInformation([isc_info_tra_id,
101 +                                                            isc_info_tra_oldest_interesting,
102 +                                                            isc_info_tra_oldest_active,
103 +                                                            isc_info_tra_oldest_snapshot,
104 +                                                            fb_info_tra_snapshot_number,
105 +                                                            isc_info_tra_lock_timeout,
106 +                                                            fb_info_tra_dbpath,
107 +                                                            isc_info_tra_access,
108 +                                                            isc_info_tra_isolation]));
109    Attachment.ExecuteSQL(Transaction, 'Execute Procedure DELETE_EMPLOYEE ?', [8]);
110  
111    ResultSet := Attachment.OpenCursorAtStart(
# Line 69 | Line 117 | begin
117    ResultSet := Attachment.OpenCursorAtStart('Select count(*) from EMPLOYEE');
118    writeln(OutFile,'Employee Count = ',ResultSet[0].AsInteger);
119  
120 +  {$IFNDEF FPC}
121 +  Transaction.Rollback; {Delphi does not dispose of interfaces until the end of the function
122 +                         so we need to explicitly rollback here. FPC will dispose of the
123 +                         interface as soon as it is overwritten - hence this is not needed.}
124 +  {$ENDIF}
125    Transaction := Attachment.StartTransaction([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],taRollback);
126    Statement := Attachment.PrepareWithNamedParameters(Transaction,'Execute Procedure DELETE_EMPLOYEE :EMP_NO',3);
127    Statement.GetSQLParams.ByName('EMP_NO').AsInteger := 8;
# Line 91 | Line 144 | begin
144           Attachment.StartTransaction([isc_tpb_read,isc_tpb_nowait,isc_tpb_concurrency],taCommit),
145           'Select count(*) As Counter from EMPLOYEE Where EMP_NO < ?',3,[8])[0].AsInteger);
146  
147 +  writeln(OutFile,'"Johnson" Employee Count = ',Attachment.OpenCursorAtStart(
148 +         Attachment.StartTransaction([isc_tpb_read,isc_tpb_nowait,isc_tpb_concurrency],taCommit),
149 +         'Select count(*) As Counter from EMPLOYEE Where LAST_NAME = ?',3,['Johnson'])[0].AsInteger);
150 +
151 +  us := UTF8Decode('Yanowski');   {Test a UnicodeString as a parameter}
152 +
153 +  writeln(OutFile,'"Yanowski" Employee Count = ',Attachment.OpenCursorAtStart(
154 +         Attachment.StartTransaction([isc_tpb_read,isc_tpb_nowait,isc_tpb_concurrency],taCommit),
155 +         'Select count(*) As Counter from EMPLOYEE Where LAST_NAME = ?',3,[us])[0].AsInteger);
156 +
157   end;
158  
159 < function TTest3.TestTitle: string;
159 > function TTest3.TestTitle: AnsiString;
160   begin
161    Result := 'Test 3: ad hoc queries';
162   end;
163  
164 < procedure TTest3.RunTest(CharSet: string; SQLDialect: integer);
164 > procedure TTest3.RunTest(CharSet: AnsiString; SQLDialect: integer);
165   var Attachment: IAttachment;
166      DPB: IDPB;
167   begin

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines