wsdl2pas_imp.pas has been reorganized :

- xsd_parser.pas XML schema parser
  - wsdl_parser.pas WSDL parser ( uses xsd_parser to parse type definitions )

ws_helper now supports XML Schema ( .XSD files ) parsing.

test cases for XSD and WSDL parsers

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@264 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
inoussa
2007-09-09 22:30:50 +00:00
parent 4c0ee502c7
commit 1c633e091d
34 changed files with 5477 additions and 791 deletions

View File

@ -34,10 +34,10 @@
-N"obj"
-LE"c:\program files\borland\delphi7\Projects\Bpl"
-LN"c:\program files\borland\delphi7\Projects\Bpl"
-U"..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-O"..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-I"..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-R"..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-U"..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-O"..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-I"..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-R"..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src"
-DDUnit
-w-UNSAFE_TYPE
-w-UNSAFE_CODE

View File

@ -94,7 +94,7 @@ OutputDir=
UnitOutputDir=obj
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
SearchPath=..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;FIBDBMidas7;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvUIBD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R;dxForumLibD7;cxLibraryVCLD7;cxPageControlVCLD7;dxBarD7;dxComnD7;dxBarDBNavD7;dxBarExtItemsD7;dxBarExtDBItemsD7;dxsbD7;dxmdsD7;dxdbtrD7;dxtrmdD7;dxorgcD7;dxdborD7;dxEdtrD7;EQTLD7;ECQDBCD7;EQDBTLD7;EQGridD7;dxGrEdD7;dxExELD7;dxELibD7;cxEditorsVCLD7;cxGridVCLD7;dxThemeD7;cxDataD7;cxGridUtilsVCLD7;dxPSCoreD7;dxPsPrVwAdvD7;dxPSLnksD7;dxPSTeeChartD7;dxPSDBTeeChartD7;dxPSdxDBTVLnkD7;dxPSdxOCLnkD7;dxPSdxDBOCLnkD7;dxPScxGridLnkD7;dxPSTLLnkD7;qrpt
Conditionals=DUnit
DebugSourceDirs=
@ -149,17 +149,20 @@ Item0=DUnit
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[HistoryLists\hlSearchPath]
Count=10
Item0=..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item1=..\;..\..\;..\..\..\;C:\Programmes\lazarus\wst\trunk\ws_helper;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item2=..\;..\..\;..\..\..\;..\..\ws_helper;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item3=..\;..\..\;..\..\..\;..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item4=..\;..\..\;..\..\..\;..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src;C:\Programmes\lazarus\wst\trunk\ws_helper
Item5=..\;..\..\;..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item6=..\;..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item7=..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item8=C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item9=..\
Count=13
Item0=..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;..\..\..\ws_helper;..\..\..\wst_rtti_filter;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item1=..\;..\..\;..\..\..\;..\..\..\fcl-units\fcl-passrc\src;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src;..\..\..\ws_helper
Item2=..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src;..\..\..\fcl-units\fcl-passrc\src
Item3=..\;..\..\;..\..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item4=..\;..\..\;..\..\..\;C:\Programmes\lazarus\wst\trunk\ws_helper;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item5=..\;..\..\;..\..\..\;..\..\ws_helper;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item6=..\;..\..\;..\..\..\;..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item7=..\;..\..\;..\..\..\;..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src;C:\Programmes\lazarus\wst\trunk\ws_helper
Item8=..\;..\..\;..\..\..\;..\..\..\ws_helper\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item9=..\;..\..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item10=..\;C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item11=C:\Program Files\Borland\Delphi7\plate_forme\dunit\dunit-9.3.0\src
Item12=..\
[HistoryLists\hlUnitOutputDirectory]
Count=1
Item0=obj

View File

@ -1,11 +1,13 @@
{$APPTYPE CONSOLE}
program wst_test_suite;
uses
SysUtils, ActiveX,
SysUtils,
ActiveX,
TestFrameWork,
TextTestRunner,
test_utilities in '..\test_utilities.pas',
testformatter_unit in '..\testformatter_unit.pas';
testformatter_unit in '..\testformatter_unit.pas',
test_parsers in '..\test_parsers.pas';
{$R *.res}

View File

@ -0,0 +1,48 @@
<?xml version="1.0"?>
<definitions name="wst_test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="library1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:wst-test">
<types>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:complexType name="TClassSampleType">
<xsd:sequence>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
<xsd:element name="TClassSample" type="n:TClassSampleType"/>
<xsd:complexType name="TClassSampleTypeAll">
<xsd:all>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
</xsd:all>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
</xsd:schema>
</types>
</definitions>

View File

@ -0,0 +1,34 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:complexType name="TClassSampleType">
<xsd:sequence>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
</xsd:sequence>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
<xsd:element name="TClassSample" type="n:TClassSampleType"/>
<xsd:complexType name="TClassSampleTypeAll">
<xsd:all>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
</xsd:all>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
</xsd:schema>

View File

@ -0,0 +1,61 @@
<?xml version="1.0"?>
<definitions name="wst_test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="library1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:wst-test">
<types>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:element name="TClassSampleType">
<xsd:complexType >
<xsd:sequence>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
<xsd:element name="classField" >
<xsd:complexType >
<xsd:sequence>
<xsd:element name="intFieldE" type="xsd:int" />
<xsd:element name="strFieldE" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="strAttE" type="xsd:string"/>
<xsd:attribute name="intAttE" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="enumField" >
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
</types>
</definitions>

View File

@ -0,0 +1,47 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:element name="TClassSampleType">
<xsd:complexType >
<xsd:sequence>
<xsd:element name="intField" type="xsd:int" />
<xsd:element name="strField" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="floatField" type="xsd:float" minOccurs="0" maxOccurs="1"/>
<xsd:element name="byteField" type="xsd:byte" maxOccurs="1"/>
<xsd:element name="charField" type="xsd:char" minOccurs="1"/>
<xsd:element name="longField" type="xsd:long" minOccurs="0"/>
<xsd:element name="classField" >
<xsd:complexType >
<xsd:sequence>
<xsd:element name="intFieldE" type="xsd:int" />
<xsd:element name="strFieldE" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="strAttE" type="xsd:string"/>
<xsd:attribute name="intAttE" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
<xsd:element name="enumField" >
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="strAtt" type="xsd:string"/>
<xsd:attribute name="intAtt" type="xsd:int"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>

View File

@ -0,0 +1,15 @@
<?xml version="1.0"?>
<definitions name="wst_test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="library1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:wst-test">
<types>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:wst-test">
</xsd:schema>
</types>
</definitions>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
</xsd:schema>

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<definitions name="wst_test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="library1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:wst-test">
<types>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:simpleType name="EnumSampleType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="EnumSample" type="n:EnumSampleType"/>
</xsd:schema>
</types>
</definitions>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:simpleType name="EnumSampleType">
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="EnumSample" type="n:EnumSampleType"/>
</xsd:schema>

View File

@ -0,0 +1,32 @@
<?xml version="1.0"?>
<definitions name="wst_test"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="library1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
targetNamespace="urn:wst-test">
<types>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:element name="EnumSampleType">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
</types>
</definitions>

View File

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:n="urn:wst-test"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn:wst-test">
<xsd:element name="EnumSampleType">
<xsd:simpleType>
<xsd:restriction base="xsd:token">
<xsd:enumeration value="esOne"> </xsd:enumeration>
<xsd:enumeration value="esTwo"> </xsd:enumeration>
<xsd:enumeration value="esThree"> </xsd:enumeration>
<xsd:enumeration value="begin"> </xsd:enumeration>
<xsd:enumeration value="finally"> </xsd:enumeration>
<xsd:enumeration value="True"> </xsd:enumeration>
<xsd:enumeration value="False"> </xsd:enumeration>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>

View File

@ -0,0 +1,543 @@
{ This file is part of the Web Service Toolkit
Copyright (c) 2006, 2007 by Inoussa OUEDRAOGO
This file is provide under modified LGPL licence
( the files COPYING.modifiedLGPL and COPYING.LGPL).
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
}
{$INCLUDE wst_global.inc}
unit test_parsers;
interface
uses
Classes, SysUtils,
{$IFDEF FPC}
fpcunit, testutils, testregistry, DOM, XmlRead, wst_fpc_xml,
{$ELSE}
TestFrameWork, xmldom, wst_delphi_xml,
{$ENDIF}
pastree, pascal_parser_intf, xsd_parser, wsdl_parser;
type
{ TTest_CustomXsdParser }
TTest_CustomXsdParser = class(TTestCase)
protected
function LoadEmptySchema() : TwstPasTreeContainer;virtual;abstract;
function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;virtual;abstract;
function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;virtual;abstract;
function LoadComplexType_Class_Schema() : TwstPasTreeContainer;virtual;abstract;
function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;virtual;abstract;
published
procedure EmptySchema();
procedure SimpleType_Enum();
procedure SimpleType_Enum_Embedded();
procedure ComplexType_Class();
procedure ComplexType_Class_Embedded();
end;
{ TTest_XsdParser }
TTest_XsdParser = class(TTest_CustomXsdParser)
private
function ParseDoc(const ADoc : string) : TwstPasTreeContainer;
protected
function LoadEmptySchema() : TwstPasTreeContainer;override;
function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;override;
function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;override;
function LoadComplexType_Class_Schema() : TwstPasTreeContainer;override;
function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;override;
end;
{ TTest_WsdlParser }
TTest_WsdlParser = class(TTest_CustomXsdParser)
private
function ParseDoc(const ADoc : string) : TwstPasTreeContainer;
protected
function LoadEmptySchema() : TwstPasTreeContainer;override;
function LoadSimpleType_Enum_Schema() : TwstPasTreeContainer;override;
function LoadSimpleType_Enum_Embedded_Schema() : TwstPasTreeContainer;override;
function LoadComplexType_Class_Schema() : TwstPasTreeContainer;override;
function LoadComplexType_Class_Embedded_Schema() : TwstPasTreeContainer;override;
end;
implementation
uses parserutils;
const
x_complexType_SampleClassType = 'TClassSampleType';
x_complexType_SampleClassTypeAll = 'TClassSampleTypeAll';
x_complexType_SampleClass = 'TClassSample';
x_complexType_class = 'complex_class';
x_complexType_class_embedded = 'complex_class_embedded';
x_empty = 'empty';
x_enumSample = 'EnumSample';
x_enumSampleType = 'EnumSampleType';
x_enumSampleLIST_COUNT = 7;
x_enumSampleLIST : array[0..( x_enumSampleLIST_COUNT - 1 )] of string = ( 'esOne', 'esTwo', 'esThree', 'begin', 'finally', 'True', 'False' );
x_simpleType = 'simpletype';
x_simpleTypeEmbedded = 'simpletype_embedded';
x_targetNamespace = 'urn:wst-test';
x_byteField = 'byteField';
x_charField = 'charField';
x_classField = 'classField';
x_enumField = 'enumField';
x_floatField = 'floatField';
x_intField = 'intField';
x_longField = 'longField';
x_strField = 'strField';
x_intAtt = 'intAtt';
x_strAtt = 'strAtt';
function LoadXmlFile(const AFileName : string) : TXMLDocument;
begin
Result := nil;
ReadXMLFile(Result,AFileName);
end;
{ TTest_CustomXsdParser }
procedure TTest_CustomXsdParser.EmptySchema();
var
tr : TwstPasTreeContainer;
mdl : TPasModule;
begin
tr := LoadEmptySchema();
mdl := tr.FindModule(x_targetNamespace);
CheckNotNull(mdl);
CheckEquals(x_empty,mdl.Name);
CheckEquals(x_targetNamespace,tr.GetExternalName(mdl));
CheckEquals(0,mdl.InterfaceSection.Declarations.Count);
end;
procedure TTest_CustomXsdParser.SimpleType_Enum();
var
tr : TwstPasTreeContainer;
mdl : TPasModule;
ls : TList;
elt : TPasElement;
enumType : TPasEnumType;
enumVal : TPasEnumValue;
aliasType : TPasAliasType;
i : Integer;
begin
tr := LoadSimpleType_Enum_Schema();
mdl := tr.FindModule(x_targetNamespace);
CheckNotNull(mdl);
CheckEquals(x_simpleType,mdl.Name);
CheckEquals(x_targetNamespace,tr.GetExternalName(mdl));
ls := mdl.InterfaceSection.Declarations;
CheckEquals(2,ls.Count);
elt := tr.FindElement(x_enumSampleType);
CheckNotNull(elt,x_enumSampleType);
CheckEquals(x_enumSampleType,elt.Name);
CheckEquals(x_enumSampleType,tr.GetExternalName(elt));
CheckIs(elt,TPasEnumType);
enumType := elt as TPasEnumType;
CheckEquals(x_enumSampleLIST_COUNT,enumType.Values.Count);
for i := 0 to Pred(x_enumSampleLIST_COUNT) do begin
enumVal := TPasEnumValue(enumType.Values[i]);
CheckNotNull(enumVal);
if IsReservedKeyWord(x_enumSampleLIST[i]) then begin
CheckEquals(Format('%s_%s',[enumType.Name,x_enumSampleLIST[i]]),enumVal.Name);
end else begin
CheckEquals(x_enumSampleLIST[i],enumVal.Name);
end;
CheckEquals(x_enumSampleLIST[i],tr.GetExternalName(enumVal));
end;
elt := tr.FindElement(x_enumSample);
CheckNotNull(elt,x_enumSample);
CheckEquals(x_enumSample,elt.Name);
CheckEquals(x_enumSample,tr.GetExternalName(elt));
CheckIs(elt,TPasAliasType);
aliasType := elt as TPasAliasType;
CheckNotNull(aliasType.DestType);
CheckEquals(x_enumSampleType, tr.GetExternalName(aliasType.DestType));
end;
procedure TTest_CustomXsdParser.SimpleType_Enum_Embedded();
var
tr : TwstPasTreeContainer;
mdl : TPasModule;
ls : TList;
elt : TPasElement;
enumType : TPasEnumType;
enumVal : TPasEnumValue;
aliasType : TPasAliasType;
i : Integer;
begin
tr := LoadSimpleType_Enum_Embedded_Schema();
mdl := tr.FindModule(x_targetNamespace);
CheckNotNull(mdl);
CheckEquals(x_simpleTypeEmbedded,mdl.Name);
CheckEquals(x_targetNamespace,tr.GetExternalName(mdl));
ls := mdl.InterfaceSection.Declarations;
CheckEquals(1,ls.Count);
elt := tr.FindElement(x_enumSampleType);
CheckNotNull(elt,x_enumSampleType);
CheckEquals(x_enumSampleType,elt.Name);
CheckEquals(x_enumSampleType,tr.GetExternalName(elt));
CheckIs(elt,TPasEnumType);
enumType := elt as TPasEnumType;
CheckEquals(x_enumSampleLIST_COUNT,enumType.Values.Count);
for i := 0 to Pred(x_enumSampleLIST_COUNT) do begin
enumVal := TPasEnumValue(enumType.Values[i]);
CheckNotNull(enumVal);
if IsReservedKeyWord(x_enumSampleLIST[i]) then begin
CheckEquals(Format('%s_%s',[enumType.Name,x_enumSampleLIST[i]]),enumVal.Name);
end else begin
CheckEquals(x_enumSampleLIST[i],enumVal.Name);
end;
CheckEquals(x_enumSampleLIST[i],tr.GetExternalName(enumVal));
end;
end;
type
TPropertyType = ( ptField, ptAttribute );
const
PropertyType_Att : array[TPropertyType] of Boolean = ( False, True );
procedure TTest_CustomXsdParser.ComplexType_Class();
var
tr : TwstPasTreeContainer;
clsType : TPasClassType;
procedure CheckProperty(const AName,ATypeName : string; const AFieldType : TPropertyType);
var
prp : TPasProperty;
begin
prp := FindMember(clsType,AName) as TPasProperty;
CheckNotNull(prp);
CheckEquals(AName,prp.Name);
CheckEquals(AName,tr.GetExternalName(prp));
CheckNotNull(prp.VarType);
CheckEquals(ATypeName,tr.GetExternalName(prp.VarType));
CheckEquals(PropertyType_Att[AFieldType],tr.IsAttributeProperty(prp));
end;
var
mdl : TPasModule;
ls : TList;
elt : TPasElement;
aliasType : TPasAliasType;
i : Integer;
prpLs : TList;
begin
prpLs := TList.Create();
try
tr := LoadComplexType_Class_Schema();
mdl := tr.FindModule(x_targetNamespace);
CheckNotNull(mdl);
CheckEquals(x_complexType_class,mdl.Name);
CheckEquals(x_targetNamespace,tr.GetExternalName(mdl));
ls := mdl.InterfaceSection.Declarations;
CheckEquals(3,ls.Count);
elt := tr.FindElement(x_complexType_SampleClassType);
CheckNotNull(elt,x_complexType_SampleClassType);
CheckEquals(x_complexType_SampleClassType,elt.Name);
CheckEquals(x_complexType_SampleClassType,tr.GetExternalName(elt));
CheckIs(elt,TPasClassType);
clsType := elt as TPasClassType;
prpLs.Clear();
for i := 0 to Pred(clsType.Members.Count) do begin
if TPasElement(clsType.Members[i]).InheritsFrom(TPasProperty) then
prpLs.Add(clsType.Members[i]);
end;
CheckEquals(8,prpLs.Count);
CheckProperty(x_intField,'int',ptField);
CheckProperty(x_strField,'string',ptField);
CheckProperty(x_floatField,'float',ptField);
CheckProperty(x_byteField,'byte',ptField);
CheckProperty(x_charField,'char',ptField);
CheckProperty(x_longField,'long',ptField);
CheckProperty(x_strAtt,'string',ptAttribute);
CheckProperty(x_intAtt,'int',ptAttribute);
elt := tr.FindElement(x_complexType_SampleClass);
CheckNotNull(elt,x_complexType_SampleClass);
CheckEquals(x_complexType_SampleClass,elt.Name);
CheckEquals(x_complexType_SampleClass,tr.GetExternalName(elt));
CheckIs(elt,TPasAliasType);
aliasType := elt as TPasAliasType;
CheckNotNull(aliasType.DestType);
CheckEquals(x_complexType_SampleClassType, tr.GetExternalName(aliasType.DestType));
elt := tr.FindElement(x_complexType_SampleClassTypeAll);
CheckNotNull(elt,x_complexType_SampleClassTypeAll);
CheckEquals(x_complexType_SampleClassTypeAll,elt.Name);
CheckEquals(x_complexType_SampleClassTypeAll,tr.GetExternalName(elt));
CheckIs(elt,TPasClassType);
clsType := elt as TPasClassType;
prpLs.Clear();
for i := 0 to Pred(clsType.Members.Count) do begin
if TPasElement(clsType.Members[i]).InheritsFrom(TPasProperty) then
prpLs.Add(clsType.Members[i]);
end;
CheckEquals(8,prpLs.Count);
CheckProperty(x_intField,'int',ptField);
CheckProperty(x_strField,'string',ptField);
CheckProperty(x_floatField,'float',ptField);
CheckProperty(x_byteField,'byte',ptField);
CheckProperty(x_charField,'char',ptField);
CheckProperty(x_longField,'long',ptField);
CheckProperty(x_strAtt,'string',ptAttribute);
CheckProperty(x_intAtt,'int',ptAttribute);
finally
FreeAndNil(prpLs);
end;
end;
procedure TTest_CustomXsdParser.ComplexType_Class_Embedded();
var
tr : TwstPasTreeContainer;
nestedClassName, nestedEnumName : string;
procedure CheckProperty(
const AName,ATypeName : string;
const AFieldType : TPropertyType;
const AClsType : TPasClassType
);
var
prp : TPasProperty;
begin
prp := FindMember(AClsType,AName) as TPasProperty;
CheckNotNull(prp);
CheckEquals(AName,prp.Name);
CheckEquals(AName,tr.GetExternalName(prp));
CheckNotNull(prp.VarType);
CheckEquals(ATypeName,tr.GetExternalName(prp.VarType));
CheckEquals(PropertyType_Att[AFieldType],tr.IsAttributeProperty(prp));
end;
procedure CheckEmbeddedClassType();
var
mdl : TPasModule;
e : TPasElement;
k : Integer;
prpLst : TList;
nestedClsType : TPasClassType;
begin
prpLst := TList.Create();
try
nestedClassName := Format('%s_%s_Type',[x_complexType_SampleClassType,x_classField]);
e := tr.FindElement(nestedClassName);
CheckNotNull(e,nestedClassName);
CheckEquals(nestedClassName,e.Name);
CheckEquals(nestedClassName,tr.GetExternalName(e));
CheckIs(e,TPasClassType);
nestedClsType := e as TPasClassType;
for k := 0 to Pred(nestedClsType.Members.Count) do begin
if TPasElement(nestedClsType.Members[k]).InheritsFrom(TPasProperty) then
prpLst.Add(nestedClsType.Members[k]);
end;
CheckEquals(4,prpLst.Count,nestedClassName + ' properties count.');
CheckProperty(x_intField + 'E','int',ptField,nestedClsType);
CheckProperty(x_strField + 'E','string',ptField,nestedClsType);
CheckProperty(x_strAtt + 'E','string',ptAttribute,nestedClsType);
CheckProperty(x_intAtt + 'E','int',ptAttribute,nestedClsType);
finally
FreeAndNil(prpLst);
end;
end;
procedure CheckEmbeddedEnum();
var
e : TPasElement;
enumType : TPasEnumType;
enumVal : TPasEnumValue;
k : Integer;
begin
nestedEnumName := Format('%s_%s_Type',[x_complexType_SampleClassType,x_enumField]);
e := tr.FindElement(nestedEnumName);
CheckNotNull(e,nestedEnumName);
CheckEquals(nestedEnumName,e.Name);
CheckEquals(nestedEnumName,tr.GetExternalName(e));
CheckIs(e,TPasEnumType);
enumType := e as TPasEnumType;
CheckEquals(x_enumSampleLIST_COUNT,enumType.Values.Count);
for k := 0 to Pred(x_enumSampleLIST_COUNT) do begin
enumVal := TPasEnumValue(enumType.Values[k]);
CheckNotNull(enumVal,'Enum value');
if IsReservedKeyWord(x_enumSampleLIST[k]) then begin
CheckEquals(Format('%s_%s',[enumType.Name,x_enumSampleLIST[k]]),enumVal.Name);
end else begin
CheckEquals(x_enumSampleLIST[k],enumVal.Name);
end;
CheckEquals(x_enumSampleLIST[k],tr.GetExternalName(enumVal));
end;
end;
var
mdl : TPasModule;
clsType : TPasClassType;
ls : TList;
elt : TPasElement;
aliasType : TPasAliasType;
i : Integer;
prpLs : TList;
begin
prpLs := TList.Create();
try
tr := LoadComplexType_Class_Embedded_Schema();
mdl := tr.FindModule(x_targetNamespace);
CheckNotNull(mdl);
CheckEquals(x_complexType_class_embedded,mdl.Name);
CheckEquals(x_targetNamespace,tr.GetExternalName(mdl));
ls := mdl.InterfaceSection.Declarations;
CheckEquals(3,ls.Count);
CheckEmbeddedClassType();
CheckEmbeddedEnum();
elt := tr.FindElement(x_complexType_SampleClassType);
CheckNotNull(elt,x_complexType_SampleClassType);
CheckEquals(x_complexType_SampleClassType,elt.Name);
CheckEquals(x_complexType_SampleClassType,tr.GetExternalName(elt));
CheckIs(elt,TPasClassType);
clsType := elt as TPasClassType;
prpLs.Clear();
for i := 0 to Pred(clsType.Members.Count) do begin
if TPasElement(clsType.Members[i]).InheritsFrom(TPasProperty) then
prpLs.Add(clsType.Members[i]);
end;
CheckEquals(10,prpLs.Count);
CheckProperty(x_intField,'int',ptField,clsType);
CheckProperty(x_strField,'string',ptField,clsType);
CheckProperty(x_floatField,'float',ptField,clsType);
CheckProperty(x_byteField,'byte',ptField,clsType);
CheckProperty(x_charField,'char',ptField,clsType);
CheckProperty(x_longField,'long',ptField,clsType);
CheckProperty(x_strAtt,'string',ptAttribute,clsType);
CheckProperty(x_intAtt,'int',ptAttribute,clsType);
CheckProperty(x_classField,nestedClassName,ptField,clsType);
CheckProperty(x_enumField,nestedEnumName,ptField,clsType);
finally
FreeAndNil(prpLs);
end;
end;
{ TTest_XsdParser }
function TTest_XsdParser.ParseDoc(const ADoc: string): TwstPasTreeContainer;
var
locDoc : TXMLDocument;
prs : IXsdPaser;
fileName : string;
begin
fileName := Format('.%sfiles%s%s.xsd',[PathDelim,PathDelim,ADoc]);
{$IFNDEF FPC}
fileName := Format('..%s%s',[PathDelim,fileName]);
{$ENDIF}
locDoc := LoadXmlFile(fileName);
try
Result := TwstPasTreeContainer.Create();
CreateWstInterfaceSymbolTable(Result);
prs := TXsdParser.Create(locDoc,Result,ADoc);
prs.ParseTypes();
finally
ReleaseDomNode(locDoc);
end;
end;
function TTest_XsdParser.LoadEmptySchema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_empty);
end;
function TTest_XsdParser.LoadSimpleType_Enum_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_simpleType);
end;
function TTest_XsdParser.LoadSimpleType_Enum_Embedded_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_simpleTypeEmbedded);
end;
function TTest_XsdParser.LoadComplexType_Class_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_complexType_class);
end;
function TTest_XsdParser.LoadComplexType_Class_Embedded_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_complexType_class_embedded);
end;
{ TTest_WsdlParser }
function TTest_WsdlParser.ParseDoc(const ADoc: string): TwstPasTreeContainer;
var
locDoc : TXMLDocument;
prs : IParser;
fileName : string;
begin
fileName := Format('.%sfiles%s%s.wsdl',[PathDelim,PathDelim,ADoc]);
{$IFNDEF FPC}
fileName := Format('..%s%s',[PathDelim,fileName]);
{$ENDIF}
locDoc := LoadXmlFile(fileName);
try
Result := TwstPasTreeContainer.Create();
CreateWstInterfaceSymbolTable(Result);
prs := TWsdlParser.Create(locDoc,Result);
prs.Execute(pmAllTypes,ADoc);
finally
ReleaseDomNode(locDoc);
end;
end;
function TTest_WsdlParser.LoadEmptySchema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_empty);
end;
function TTest_WsdlParser.LoadSimpleType_Enum_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_simpleType);
end;
function TTest_WsdlParser.LoadSimpleType_Enum_Embedded_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_simpleTypeEmbedded);
end;
function TTest_WsdlParser.LoadComplexType_Class_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_complexType_class);
end;
function TTest_WsdlParser.LoadComplexType_Class_Embedded_Schema(): TwstPasTreeContainer;
begin
Result := ParseDoc(x_complexType_class_embedded);
end;
initialization
RegisterTest('XSD parser',TTest_XsdParser.Suite);
RegisterTest('WSDL parser',TTest_WsdlParser.Suite);
end.

View File

@ -27,7 +27,7 @@
<PackageName Value="FPCUnitTestRunner"/>
</Item1>
</RequiredPackages>
<Units Count="75">
<Units Count="83">
<Unit0>
<Filename Value="wst_test_suite.lpr"/>
<IsPartOfProject Value="True"/>
@ -40,9 +40,9 @@
<Filename Value="testformatter_unit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testformatter_unit"/>
<CursorPos X="27" Y="3935"/>
<TopLine Value="3914"/>
<EditorIndex Value="5"/>
<CursorPos X="5" Y="3943"/>
<TopLine Value="3900"/>
<EditorIndex Value="0"/>
<UsageCount Value="200"/>
<Bookmarks Count="1">
<Item0 X="17" Y="1058" ID="3"/>
@ -61,33 +61,29 @@
<Filename Value="..\..\soap_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="soap_formatter"/>
<CursorPos X="33" Y="31"/>
<TopLine Value="22"/>
<CursorPos X="1" Y="188"/>
<TopLine Value="173"/>
<UsageCount Value="200"/>
</Unit3>
<Unit4>
<Filename Value="..\..\base_binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_binary_formatter"/>
<CursorPos X="28" Y="223"/>
<CursorPos X="42" Y="219"/>
<TopLine Value="211"/>
<EditorIndex Value="8"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\base_service_intf.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_service_intf"/>
<CursorPos X="26" Y="1232"/>
<TopLine Value="1220"/>
<EditorIndex Value="0"/>
<CursorPos X="1" Y="4553"/>
<TopLine Value="4538"/>
<UsageCount Value="200"/>
<Bookmarks Count="2">
<Item0 X="33" Y="1135" ID="0"/>
<Item1 X="5" Y="1189" ID="1"/>
</Bookmarks>
<Loaded Value="True"/>
</Unit5>
<Unit6>
<Filename Value="..\..\base_soap_formatter.pas"/>
@ -101,8 +97,8 @@
<Filename Value="..\..\binary_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="binary_formatter"/>
<CursorPos X="28" Y="112"/>
<TopLine Value="48"/>
<CursorPos X="1" Y="125"/>
<TopLine Value="110"/>
<UsageCount Value="200"/>
</Unit7>
<Unit8>
@ -122,9 +118,7 @@
<UnitName Value="server_binary_formatter"/>
<CursorPos X="9" Y="123"/>
<TopLine Value="27"/>
<EditorIndex Value="4"/>
<UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
<Filename Value="..\..\metadata_repository.pas"/>
@ -138,8 +132,8 @@
<Filename Value="testmetadata_unit.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="testmetadata_unit"/>
<CursorPos X="1" Y="30"/>
<TopLine Value="7"/>
<CursorPos X="1" Y="161"/>
<TopLine Value="146"/>
<UsageCount Value="202"/>
</Unit11>
<Unit12>
@ -154,8 +148,8 @@
<Filename Value="..\..\ws_helper\parserdefs.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="parserdefs"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="16"/>
<CursorPos X="62" Y="1028"/>
<TopLine Value="1009"/>
<UsageCount Value="202"/>
<Bookmarks Count="1">
<Item0 X="18" Y="1133" ID="2"/>
@ -165,24 +159,22 @@
<Filename Value="..\..\metadata_wsdl.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="metadata_wsdl"/>
<CursorPos X="43" Y="869"/>
<TopLine Value="834"/>
<EditorIndex Value="9"/>
<CursorPos X="40" Y="836"/>
<TopLine Value="828"/>
<UsageCount Value="206"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="D:\Lazarus\fpcsrc\fcl\xml\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="15" Y="429"/>
<TopLine Value="413"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit15>
<Unit16>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="13" Y="235"/>
<TopLine Value="215"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit16>
<Unit17>
<Filename Value="..\..\server_service_intf.pas"/>
@ -190,49 +182,45 @@
<UnitName Value="server_service_intf"/>
<CursorPos X="25" Y="14"/>
<TopLine Value="97"/>
<EditorIndex Value="3"/>
<UsageCount Value="203"/>
<Loaded Value="True"/>
</Unit17>
<Unit18>
<Filename Value="..\..\service_intf.pas"/>
<UnitName Value="service_intf"/>
<CursorPos X="15" Y="22"/>
<TopLine Value="10"/>
<EditorIndex Value="6"/>
<UsageCount Value="23"/>
<Loaded Value="True"/>
<UsageCount Value="25"/>
</Unit18>
<Unit19>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\classesh.inc"/>
<CursorPos X="3" Y="316"/>
<TopLine Value="304"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit19>
<Unit20>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\objpas\classes\lists.inc"/>
<CursorPos X="3" Y="407"/>
<TopLine Value="404"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit20>
<Unit21>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\fcl\inc\contnrs.pp"/>
<UnitName Value="contnrs"/>
<CursorPos X="3" Y="474"/>
<TopLine Value="471"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit21>
<Unit22>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
<CursorPos X="27" Y="121"/>
<TopLine Value="104"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit22>
<Unit23>
<Filename Value="D:\lazarusClean\fpc\2.0.4\source\rtl\inc\objpas.inc"/>
<CursorPos X="9" Y="166"/>
<TopLine Value="142"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit23>
<Unit24>
<Filename Value="D:\Lazarus\components\fpcunit\guitestrunner.pas"/>
@ -241,30 +229,28 @@
<UnitName Value="GuiTestRunner"/>
<CursorPos X="34" Y="32"/>
<TopLine Value="25"/>
<UsageCount Value="6"/>
<UsageCount Value="5"/>
</Unit24>
<Unit25>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\fpcunit\fpcunit.pp"/>
<UnitName Value="fpcunit"/>
<CursorPos X="21" Y="94"/>
<TopLine Value="83"/>
<UsageCount Value="4"/>
<UsageCount Value="3"/>
</Unit25>
<Unit26>
<Filename Value="..\..\imp_utils.pas"/>
<UnitName Value="imp_utils"/>
<CursorPos X="12" Y="47"/>
<TopLine Value="182"/>
<EditorIndex Value="7"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
<CursorPos X="1" Y="105"/>
<TopLine Value="90"/>
<UsageCount Value="17"/>
</Unit26>
<Unit27>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\fcl\xml\xmlread.pp"/>
<UnitName Value="XMLRead"/>
<CursorPos X="43" Y="13"/>
<TopLine Value="1"/>
<UsageCount Value="2"/>
<UsageCount Value="1"/>
</Unit27>
<Unit28>
<Filename Value="test_parserdef.pas"/>
@ -278,241 +264,237 @@
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\objpash.inc"/>
<CursorPos X="8" Y="190"/>
<TopLine Value="133"/>
<UsageCount Value="3"/>
<UsageCount Value="2"/>
</Unit29>
<Unit30>
<Filename Value="..\..\wst.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit30>
<Unit31>
<Filename Value="..\..\..\..\..\lazarusClean\fpc\2.0.4\source\rtl\inc\heaph.inc"/>
<CursorPos X="43" Y="100"/>
<TopLine Value="83"/>
<UsageCount Value="1"/>
</Unit31>
<Unit32>
<Filename Value="..\test_fpc\interface_problem\interface_problem.pas"/>
<UnitName Value="interface_problem"/>
<CursorPos X="1" Y="10"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
</Unit32>
<Unit33>
<UsageCount Value="8"/>
</Unit31>
<Unit32>
<Filename Value="..\..\base_xmlrpc_formatter.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="base_xmlrpc_formatter"/>
<CursorPos X="35" Y="355"/>
<TopLine Value="330"/>
<UsageCount Value="151"/>
</Unit33>
<Unit34>
<CursorPos X="70" Y="354"/>
<TopLine Value="325"/>
<UsageCount Value="165"/>
</Unit32>
<Unit33>
<Filename Value="..\..\ws_helper\pscanner.pp"/>
<UnitName Value="PScanner"/>
<CursorPos X="19" Y="505"/>
<TopLine Value="491"/>
<UsageCount Value="16"/>
</Unit34>
<Unit35>
<UsageCount Value="15"/>
</Unit33>
<Unit34>
<Filename Value="..\..\ws_helper\pascal_parser_intf.pas"/>
<UnitName Value="pascal_parser_intf"/>
<CursorPos X="62" Y="296"/>
<TopLine Value="296"/>
<UsageCount Value="26"/>
</Unit35>
<Unit36>
<CursorPos X="3" Y="226"/>
<TopLine Value="206"/>
<EditorIndex Value="3"/>
<UsageCount Value="32"/>
<Loaded Value="True"/>
</Unit34>
<Unit35>
<Filename Value="..\..\ws_helper\pastree.pp"/>
<UnitName Value="PasTree"/>
<CursorPos X="18" Y="254"/>
<TopLine Value="243"/>
<UsageCount Value="16"/>
</Unit36>
<Unit37>
<CursorPos X="5" Y="150"/>
<TopLine Value="135"/>
<UsageCount Value="15"/>
</Unit35>
<Unit36>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="38" Y="225"/>
<TopLine Value="203"/>
<UsageCount Value="15"/>
</Unit37>
<Unit38>
<UsageCount Value="14"/>
</Unit36>
<Unit37>
<Filename Value="..\..\wst_rtti_filter\cursor_intf.pas"/>
<UnitName Value="cursor_intf"/>
<CursorPos X="3" Y="75"/>
<TopLine Value="70"/>
<UsageCount Value="7"/>
</Unit38>
<Unit39>
<UsageCount Value="6"/>
</Unit37>
<Unit38>
<Filename Value="..\..\wst_rtti_filter\dom_cursors.pas"/>
<UnitName Value="dom_cursors"/>
<CursorPos X="3" Y="182"/>
<TopLine Value="180"/>
<UsageCount Value="7"/>
</Unit39>
<Unit40>
<UsageCount Value="6"/>
</Unit38>
<Unit39>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\packages\fcl-fpcunit\src\fpcunit.pp"/>
<UnitName Value="fpcunit"/>
<CursorPos X="1" Y="446"/>
<TopLine Value="434"/>
<UsageCount Value="5"/>
</Unit40>
<Unit41>
<UsageCount Value="4"/>
</Unit39>
<Unit40>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\i386\i386.inc"/>
<CursorPos X="1" Y="1284"/>
<TopLine Value="1268"/>
<UsageCount Value="4"/>
</Unit41>
<Unit42>
<UsageCount Value="3"/>
</Unit40>
<Unit41>
<Filename Value="..\..\..\..\..\..\lazarus_23_215\fpc\2.1.5\source\rtl\objpas\classes\streams.inc"/>
<CursorPos X="1" Y="107"/>
<TopLine Value="95"/>
<UsageCount Value="4"/>
</Unit42>
<Unit43>
<UsageCount Value="3"/>
</Unit41>
<Unit42>
<Filename Value="..\..\semaphore.pas"/>
<UnitName Value="semaphore"/>
<CursorPos X="3" Y="30"/>
<TopLine Value="23"/>
<UsageCount Value="6"/>
</Unit43>
<Unit44>
<UsageCount Value="5"/>
</Unit42>
<Unit43>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="14" Y="351"/>
<TopLine Value="336"/>
<UsageCount Value="7"/>
</Unit44>
<Unit45>
<UsageCount Value="6"/>
</Unit43>
<Unit44>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\win32\system.pp"/>
<UnitName Value="System"/>
<CursorPos X="22" Y="33"/>
<TopLine Value="18"/>
<UsageCount Value="5"/>
</Unit45>
<Unit46>
<UsageCount Value="4"/>
</Unit44>
<Unit45>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\contnrs.pp"/>
<UnitName Value="contnrs"/>
<CursorPos X="3" Y="964"/>
<TopLine Value="962"/>
<UsageCount Value="4"/>
</Unit46>
<Unit47>
<UsageCount Value="3"/>
</Unit45>
<Unit46>
<Filename Value="..\..\wst_delphi.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
</Unit47>
<Unit48>
<UsageCount Value="8"/>
</Unit46>
<Unit47>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\strutils.pp"/>
<UnitName Value="strutils"/>
<CursorPos X="10" Y="29"/>
<TopLine Value="14"/>
<UsageCount Value="4"/>
</Unit48>
<Unit49>
<UsageCount Value="3"/>
</Unit47>
<Unit48>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpash.inc"/>
<CursorPos X="26" Y="173"/>
<TopLine Value="156"/>
<UsageCount Value="9"/>
</Unit49>
<Unit50>
<UsageCount Value="8"/>
</Unit48>
<Unit49>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\inc\objpas.inc"/>
<CursorPos X="11" Y="333"/>
<TopLine Value="375"/>
<UsageCount Value="9"/>
</Unit50>
<Unit51>
<UsageCount Value="8"/>
</Unit49>
<Unit50>
<Filename Value="..\..\wst_fpc_xml.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="wst_fpc_xml"/>
<CursorPos X="65" Y="85"/>
<TopLine Value="56"/>
<UsageCount Value="97"/>
</Unit51>
<Unit52>
<UsageCount Value="111"/>
</Unit50>
<Unit51>
<Filename Value="..\..\wst_global.inc"/>
<CursorPos X="3" Y="4"/>
<TopLine Value="1"/>
<UsageCount Value="10"/>
</Unit52>
<Unit53>
<UsageCount Value="9"/>
</Unit51>
<Unit52>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-base\src\inc\custapp.pp"/>
<UnitName Value="CustApp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="4"/>
</Unit53>
<Unit54>
<UsageCount Value="3"/>
</Unit52>
<Unit53>
<Filename Value="test_utilities.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="test_utilities"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<EditorIndex Value="10"/>
<UsageCount Value="88"/>
<CursorPos X="40" Y="64"/>
<TopLine Value="58"/>
<EditorIndex Value="1"/>
<UsageCount Value="102"/>
<Loaded Value="True"/>
</Unit54>
<Unit55>
</Unit53>
<Unit54>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\fpcunit.pp"/>
<UnitName Value="fpcunit"/>
<CursorPos X="66" Y="231"/>
<TopLine Value="231"/>
<UsageCount Value="12"/>
</Unit55>
<Unit56>
<UsageCount Value="11"/>
</Unit54>
<Unit55>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\testregistry.pp"/>
<UnitName Value="testregistry"/>
<CursorPos X="11" Y="32"/>
<TopLine Value="17"/>
<UsageCount Value="14"/>
</Unit56>
<Unit57>
<UsageCount Value="13"/>
</Unit55>
<Unit56>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\testdecorator.pp"/>
<UnitName Value="testdecorator"/>
<CursorPos X="3" Y="30"/>
<TopLine Value="1"/>
<UsageCount Value="6"/>
</Unit57>
<Unit58>
<UsageCount Value="5"/>
</Unit56>
<Unit57>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-fpcunit\src\DUnitCompatibleInterface.inc"/>
<CursorPos X="21" Y="9"/>
<TopLine Value="1"/>
<UsageCount Value="11"/>
</Unit58>
<Unit59>
<UsageCount Value="10"/>
</Unit57>
<Unit58>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\typinfo.pp"/>
<UnitName Value="typinfo"/>
<CursorPos X="53" Y="41"/>
<TopLine Value="37"/>
<UsageCount Value="9"/>
</Unit59>
<Unit60>
<UsageCount Value="8"/>
</Unit58>
<Unit59>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysstrh.inc"/>
<CursorPos X="89" Y="122"/>
<TopLine Value="106"/>
<UsageCount Value="8"/>
</Unit60>
<Unit61>
<UsageCount Value="7"/>
</Unit59>
<Unit60>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysinth.inc"/>
<CursorPos X="24" Y="63"/>
<TopLine Value="46"/>
<UsageCount Value="8"/>
</Unit61>
<Unit62>
<UsageCount Value="7"/>
</Unit60>
<Unit61>
<Filename Value="..\..\ws_helper\wsdl2pas_imp.pas"/>
<UnitName Value="wsdl2pas_imp"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="31"/>
<UsageCount Value="9"/>
</Unit62>
<Unit63>
<UsageCount Value="8"/>
</Unit61>
<Unit62>
<Filename Value="..\..\..\..\..\..\lazarus2204\fpc\2.0.4\source\fcl\xml\dom.pp"/>
<UnitName Value="DOM"/>
<CursorPos X="3" Y="196"/>
<TopLine Value="191"/>
<UsageCount Value="7"/>
</Unit63>
<Unit64>
<UsageCount Value="6"/>
</Unit62>
<Unit63>
<Filename Value="..\..\type_lib_edtr\umoduleedit.pas"/>
<ComponentName Value="fModuleEdit"/>
<HasResources Value="True"/>
@ -520,9 +502,9 @@
<UnitName Value="umoduleedit"/>
<CursorPos X="47" Y="21"/>
<TopLine Value="18"/>
<UsageCount Value="9"/>
</Unit64>
<Unit65>
<UsageCount Value="8"/>
</Unit63>
<Unit64>
<Filename Value="..\..\type_lib_edtr\ubindingedit.pas"/>
<ComponentName Value="fBindingEdit"/>
<HasResources Value="True"/>
@ -530,9 +512,9 @@
<UnitName Value="ubindingedit"/>
<CursorPos X="41" Y="21"/>
<TopLine Value="18"/>
<UsageCount Value="9"/>
</Unit65>
<Unit66>
<UsageCount Value="8"/>
</Unit64>
<Unit65>
<Filename Value="..\..\type_lib_edtr\ufarrayedit.pas"/>
<ComponentName Value="fArrayEdit"/>
<HasResources Value="True"/>
@ -540,9 +522,9 @@
<UnitName Value="ufarrayedit"/>
<CursorPos X="41" Y="9"/>
<TopLine Value="5"/>
<UsageCount Value="9"/>
</Unit66>
<Unit67>
<UsageCount Value="8"/>
</Unit65>
<Unit66>
<Filename Value="..\..\type_lib_edtr\uftypealiasedit.pas"/>
<ComponentName Value="fTypeAliasEdit"/>
<HasResources Value="True"/>
@ -550,9 +532,9 @@
<UnitName Value="uftypealiasedit"/>
<CursorPos X="22" Y="9"/>
<TopLine Value="7"/>
<UsageCount Value="9"/>
</Unit67>
<Unit68>
<UsageCount Value="8"/>
</Unit66>
<Unit67>
<Filename Value="..\..\type_lib_edtr\ufrmsaveoption.pas"/>
<ComponentName Value="frmSaveOptions"/>
<HasResources Value="True"/>
@ -560,174 +542,238 @@
<UnitName Value="ufrmsaveoption"/>
<CursorPos X="22" Y="9"/>
<TopLine Value="6"/>
<UsageCount Value="9"/>
</Unit68>
<Unit69>
<UsageCount Value="8"/>
</Unit67>
<Unit68>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\rtl\objpas\sysutils\sysutilh.inc"/>
<CursorPos X="4" Y="64"/>
<TopLine Value="64"/>
<UsageCount Value="7"/>
</Unit69>
<Unit70>
<UsageCount Value="6"/>
</Unit68>
<Unit69>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="server_service_xmlrpc"/>
<CursorPos X="10" Y="131"/>
<TopLine Value="116"/>
<EditorIndex Value="1"/>
<UsageCount Value="42"/>
<Loaded Value="True"/>
</Unit70>
<Unit71>
<CursorPos X="38" Y="33"/>
<TopLine Value="27"/>
<UsageCount Value="56"/>
</Unit69>
<Unit70>
<Filename Value="..\..\..\..\..\..\lazarus_23_215XX\fpc\source\packages\fcl-xml\src\xmlread.pp"/>
<UnitName Value="XMLRead"/>
<CursorPos X="6" Y="37"/>
<TopLine Value="31"/>
<UsageCount Value="9"/>
</Unit71>
<Unit72>
<UsageCount Value="8"/>
</Unit70>
<Unit71>
<Filename Value="..\..\xmlrpc_formatter.pas"/>
<UnitName Value="xmlrpc_formatter"/>
<CursorPos X="31" Y="131"/>
<TopLine Value="116"/>
<UsageCount Value="11"/>
</Unit72>
<Unit73>
<CursorPos X="1" Y="169"/>
<TopLine Value="154"/>
<UsageCount Value="12"/>
</Unit71>
<Unit72>
<Filename Value="..\..\record_rtti.pas"/>
<UnitName Value="record_rtti"/>
<CursorPos X="1" Y="1"/>
<CursorPos X="37" Y="276"/>
<TopLine Value="265"/>
<EditorIndex Value="2"/>
<UsageCount Value="17"/>
<Loaded Value="True"/>
</Unit73>
<Unit74>
<UsageCount Value="16"/>
</Unit72>
<Unit73>
<Filename Value="..\..\wst_rtl_imp.inc"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="1"/>
<UsageCount Value="9"/>
<UsageCount Value="8"/>
</Unit73>
<Unit74>
<Filename Value="test_parsers.pas"/>
<IsPartOfProject Value="True"/>
<UnitName Value="test_parsers"/>
<CursorPos X="3" Y="401"/>
<TopLine Value="421"/>
<EditorIndex Value="2"/>
<UsageCount Value="34"/>
<Loaded Value="True"/>
</Unit74>
<Unit75>
<Filename Value="..\..\ws_helper\xsd_parser.pas"/>
<UnitName Value="xsd_parser"/>
<CursorPos X="14" Y="83"/>
<TopLine Value="102"/>
<EditorIndex Value="4"/>
<UsageCount Value="16"/>
<Loaded Value="True"/>
</Unit75>
<Unit76>
<Filename Value="..\..\ws_helper\parserutils.pas"/>
<UnitName Value="parserutils"/>
<CursorPos X="3" Y="76"/>
<TopLine Value="61"/>
<UsageCount Value="10"/>
</Unit76>
<Unit77>
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\fcl-fpcunit\src\testregistry.pp"/>
<UnitName Value="testregistry"/>
<CursorPos X="1" Y="1"/>
<TopLine Value="18"/>
<UsageCount Value="10"/>
</Unit77>
<Unit78>
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\fcl-fpcunit\src\DUnitCompatibleInterface.inc"/>
<CursorPos X="3" Y="120"/>
<TopLine Value="115"/>
<UsageCount Value="9"/>
</Unit78>
<Unit79>
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\packages\fcl-fpcunit\src\fpcunit.pp"/>
<UnitName Value="fpcunit"/>
<CursorPos X="1" Y="446"/>
<TopLine Value="431"/>
<UsageCount Value="11"/>
</Unit79>
<Unit80>
<Filename Value="..\..\ws_helper\logger_intf.pas"/>
<UnitName Value="logger_intf"/>
<CursorPos X="85" Y="50"/>
<TopLine Value="35"/>
<UsageCount Value="9"/>
</Unit80>
<Unit81>
<Filename Value="..\..\ws_helper\ws_parser_imp.pas"/>
<UnitName Value="ws_parser_imp"/>
<CursorPos X="65" Y="505"/>
<TopLine Value="482"/>
<EditorIndex Value="5"/>
<UsageCount Value="15"/>
<Loaded Value="True"/>
</Unit81>
<Unit82>
<Filename Value="..\..\..\..\..\..\lazarus_23_2.2.1\fpc\2.2.1\source\rtl\inc\objpash.inc"/>
<CursorPos X="26" Y="159"/>
<TopLine Value="144"/>
<UsageCount Value="9"/>
</Unit82>
</Units>
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4784" Column="33" TopLine="4769"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1356" Column="38" TopLine="1346"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="446" Column="53" TopLine="424"/>
</Position2>
<Position3>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1403" Column="82" TopLine="1388"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="494" Column="54" TopLine="472"/>
</Position3>
<Position4>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1422" Column="82" TopLine="1406"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position4>
<Position5>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1816" Column="31" TopLine="1795"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="446" Column="53" TopLine="424"/>
</Position5>
<Position6>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="3848" Column="31" TopLine="3827"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="494" Column="54" TopLine="472"/>
</Position6>
<Position7>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4784" Column="55" TopLine="4778"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position7>
<Position8>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="446" Column="53" TopLine="424"/>
</Position8>
<Position9>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1191" Column="17" TopLine="1176"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="254" Column="44" TopLine="218"/>
</Position9>
<Position10>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1231" Column="32" TopLine="1216"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="300" Column="19" TopLine="262"/>
</Position10>
<Position11>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1228" Column="13" TopLine="1213"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="249" Column="34" TopLine="240"/>
</Position11>
<Position12>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="337" Column="11" TopLine="322"/>
</Position12>
<Position13>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1191" Column="32" TopLine="1176"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="245" Column="8" TopLine="219"/>
</Position13>
<Position14>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1235" Column="84" TopLine="1220"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="261" Column="9" TopLine="248"/>
</Position14>
<Position15>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1403" Column="82" TopLine="1388"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="264" Column="18" TopLine="249"/>
</Position15>
<Position16>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1421" Column="82" TopLine="1406"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="266" Column="26" TopLine="251"/>
</Position16>
<Position17>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1816" Column="31" TopLine="1789"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="292" Column="23" TopLine="279"/>
</Position17>
<Position18>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="3848" Column="31" TopLine="3827"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="295" Column="18" TopLine="280"/>
</Position18>
<Position19>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4786" Column="25" TopLine="4777"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="297" Column="26" TopLine="282"/>
</Position19>
<Position20>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1359" Column="50" TopLine="1337"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="308" Column="21" TopLine="293"/>
</Position20>
<Position21>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4783" Column="27" TopLine="4761"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="339" Column="10" TopLine="324"/>
</Position21>
<Position22>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="1359" Column="47" TopLine="1337"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="342" Column="10" TopLine="327"/>
</Position22>
<Position23>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4740" Column="9" TopLine="4668"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="353" Column="20" TopLine="338"/>
</Position23>
<Position24>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="4808" Column="35" TopLine="4794"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="355" Column="28" TopLine="340"/>
</Position24>
<Position25>
<Filename Value="..\..\base_service_intf.pas"/>
<Caret Line="180" Column="15" TopLine="177"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="361" Column="23" TopLine="346"/>
</Position25>
<Position26>
<Filename Value="..\..\server_service_xmlrpc.pas"/>
<Caret Line="144" Column="14" TopLine="130"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="399" Column="8" TopLine="384"/>
</Position26>
<Position27>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3890" Column="49" TopLine="3890"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="401" Column="8" TopLine="386"/>
</Position27>
<Position28>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="1483" Column="30" TopLine="1465"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="421" Column="23" TopLine="408"/>
</Position28>
<Position29>
<Filename Value="testformatter_unit.pas"/>
<Caret Line="3538" Column="39" TopLine="3538"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="424" Column="18" TopLine="409"/>
</Position29>
<Position30>
<Filename Value="..\..\record_rtti.pas"/>
<Caret Line="265" Column="32" TopLine="232"/>
<Filename Value="test_parsers.pas"/>
<Caret Line="426" Column="27" TopLine="411"/>
</Position30>
</JumpHistory>
</ProjectOptions>
@ -739,7 +785,7 @@
</Target>
<SearchPaths>
<IncludeFiles Value="..\..\"/>
<OtherUnitFiles Value="..\..\;..\..\ws_helper\"/>
<OtherUnitFiles Value="..\..\;..\..\ws_helper\;..\..\wst_rtti_filter\"/>
<UnitOutputDirectory Value="obj"/>
</SearchPaths>
<Parsing>
@ -767,48 +813,6 @@
</Other>
</CompilerOptions>
<Debugging>
<BreakPoints Count="10">
<Item1>
<Source Value="..\google_api\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="15"/>
</Item1>
<Item2>
<Source Value="..\google_api\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="16"/>
</Item2>
<Item3>
<Source Value="..\google_api\home\inoussa\Projets\Laz\tests\soap\test_soap.pas"/>
<Line Value="18"/>
</Item3>
<Item4>
<Source Value="..\google_api\home\inoussa\Projets\Laz\tests\soap\googleintfimpunit.pas"/>
<Line Value="63"/>
</Item4>
<Item5>
<Source Value="..\google_api\home\inoussa\Projets\Laz\v0.2\indy_http_protocol.pas"/>
<Line Value="69"/>
</Item5>
<Item6>
<Source Value="..\google_api\home\inoussa\Projets\Laz\v0.2\service_intf.pas"/>
<Line Value="567"/>
</Item6>
<Item7>
<Source Value="..\google_api\home\inoussa\Projets\Laz\v0.2\imp_utils.pas"/>
<Line Value="83"/>
</Item7>
<Item8>
<Source Value="testmetadata_unit.pas"/>
<Line Value="148"/>
</Item8>
<Item9>
<Source Value="testmetadata_unit.pas"/>
<Line Value="161"/>
</Item9>
<Item10>
<Source Value="..\..\metadata_repository.pas"/>
<Line Value="378"/>
</Item10>
</BreakPoints>
<Watches Count="2">
<Item1>
<Expression Value="FScopeObject^.Name"/>

View File

@ -16,7 +16,7 @@ uses
server_binary_formatter, metadata_repository,
metadata_generator, parserdefs, server_service_intf, metadata_wsdl,
test_parserdef, base_xmlrpc_formatter, wst_fpc_xml, test_utilities,
server_service_xmlrpc;
server_service_xmlrpc, test_parsers;
Const
ShortOpts = 'alh';