You've already forked lazarus-ccr
parameter access qualifiers in WSDL parsing and generation tests.
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@885 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -18,9 +18,9 @@
|
|||||||
<part name="result" type="xsd:string" wst:TypeHint="WideString"/>
|
<part name="result" type="xsd:string" wst:TypeHint="WideString"/>
|
||||||
</message>
|
</message>
|
||||||
<portType name="IEchoService">
|
<portType name="IEchoService">
|
||||||
<document>
|
<documentation>
|
||||||
<GUID value="{FCD0F68F-3023-46C6-AD09-1DDA4A2989EB}"/>
|
<GUID value="{FCD0F68F-3023-46C6-AD09-1DDA4A2989EB}"/>
|
||||||
</document>
|
</documentation>
|
||||||
<operation name="EchoWideString">
|
<operation name="EchoWideString">
|
||||||
<input message="tns:EchoWideString"/>
|
<input message="tns:EchoWideString"/>
|
||||||
<output message="tns:EchoWideStringResponse"/>
|
<output message="tns:EchoWideStringResponse"/>
|
||||||
|
@ -184,7 +184,8 @@ type
|
|||||||
procedure xsd_not_declared_at_top_node();
|
procedure xsd_not_declared_at_top_node();
|
||||||
procedure xsd_not_declared_at_top_node_2();
|
procedure xsd_not_declared_at_top_node_2();
|
||||||
procedure message_parts_type_hint();
|
procedure message_parts_type_hint();
|
||||||
procedure var_parameter();
|
procedure parameter_var();
|
||||||
|
procedure parameter_const_default();
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -2390,7 +2391,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TTest_WsdlParser.var_parameter();
|
procedure TTest_WsdlParser.parameter_var();
|
||||||
|
|
||||||
function FindProc(const AName : string; AIntf : TPasClassType) : TPasProcedure;
|
function FindProc(const AName : string; AIntf : TPasClassType) : TPasProcedure;
|
||||||
var
|
var
|
||||||
@ -2460,6 +2461,63 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TTest_WsdlParser.parameter_const_default();
|
||||||
|
|
||||||
|
function FindProc(const AName : string; AIntf : TPasClassType) : TPasProcedure;
|
||||||
|
var
|
||||||
|
k : Integer;
|
||||||
|
begin
|
||||||
|
Result := nil;
|
||||||
|
for k := 0 to (AIntf.Members.Count - 1) do begin
|
||||||
|
if TObject(AIntf.Members[k]).InheritsFrom(TPasProcedure) and ( TPasProcedure(AIntf.Members[k]).Name = AName ) then begin
|
||||||
|
Result := TPasProcedure(AIntf.Members[k]);
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
var
|
||||||
|
tr : TwstPasTreeContainer;
|
||||||
|
elt : TPasElement;
|
||||||
|
intf : TPasClassType;
|
||||||
|
mth : TPasProcedure;
|
||||||
|
mthType : TPasProcedureType;
|
||||||
|
res : TPasResultElement;
|
||||||
|
arg : TPasArgument;
|
||||||
|
begin
|
||||||
|
tr := ParseDoc('parameter_const_default');
|
||||||
|
try
|
||||||
|
elt := tr.FindElement('TestService');
|
||||||
|
CheckNotNull(elt,'TestService');
|
||||||
|
CheckIs(elt,TPasClassType);
|
||||||
|
intf := elt as TPasClassType;
|
||||||
|
CheckEquals(Ord(okInterface),Ord(intf.ObjKind));
|
||||||
|
mth := FindProc('sampleProc',intf);
|
||||||
|
CheckNotNull(mth,'sampleProc not found');
|
||||||
|
CheckEquals('sampleProc',mth.Name);
|
||||||
|
mthType := mth.ProcType;
|
||||||
|
CheckIs(mthType,TPasProcedureType);
|
||||||
|
CheckEquals(3, mthType.Args.Count, 'Parameter count');
|
||||||
|
arg := TPasArgument(mthType.Args[0]);
|
||||||
|
CheckNotNull(arg);
|
||||||
|
CheckEquals(LowerCase('AConstParam'), LowerCase(arg.Name));
|
||||||
|
CheckEquals(LowerCase('string'), LowerCase(arg.ArgType.Name));
|
||||||
|
CheckEquals('argConst',GetEnumName(TypeInfo(TArgumentAccess),Ord(arg.Access)),'AConstParam');
|
||||||
|
arg := TPasArgument(mthType.Args[1]);
|
||||||
|
CheckNotNull(arg);
|
||||||
|
CheckEquals(LowerCase('ADefaultParam'), LowerCase(arg.Name));
|
||||||
|
CheckEquals(LowerCase('integer'), LowerCase(arg.ArgType.Name));
|
||||||
|
CheckEquals('argDefault',GetEnumName(TypeInfo(TArgumentAccess),Ord(arg.Access)),'ADefaultParam');
|
||||||
|
arg := TPasArgument(mthType.Args[2]);
|
||||||
|
CheckNotNull(arg);
|
||||||
|
CheckEquals(LowerCase('ANonSpecifiedParam'), LowerCase(arg.Name));
|
||||||
|
CheckEquals(LowerCase('integer'), LowerCase(arg.ArgType.Name));
|
||||||
|
CheckEquals('argConst',GetEnumName(TypeInfo(TArgumentAccess),Ord(arg.Access)),'ANonSpecifiedParam');
|
||||||
|
finally
|
||||||
|
tr.Free();
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
function TTest_WsdlParser.LoadComplexType_Class_default_values() : TwstPasTreeContainer;
|
function TTest_WsdlParser.LoadComplexType_Class_default_values() : TwstPasTreeContainer;
|
||||||
begin
|
begin
|
||||||
Result := ParseDoc(x_complexType_class_default);
|
Result := ParseDoc(x_complexType_class_default);
|
||||||
|
@ -23,7 +23,7 @@ uses
|
|||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
TypInfo,
|
TypInfo,
|
||||||
base_service_intf, server_service_intf,
|
base_service_intf, server_service_intf,
|
||||||
library_imp_utils;
|
library_imp_utils, parserutils;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -124,7 +124,14 @@ type
|
|||||||
procedure GetCount();
|
procedure GetCount();
|
||||||
procedure GetItem(const AIndex : PtrInt);
|
procedure GetItem(const AIndex : PtrInt);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TTest_Procs }
|
||||||
|
|
||||||
|
TTest_Procs = class(TTestCase)
|
||||||
|
published
|
||||||
|
procedure test_GetToken();
|
||||||
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
{ TTestClass }
|
{ TTestClass }
|
||||||
@ -737,6 +744,47 @@ begin
|
|||||||
Check(ok);
|
Check(ok);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{ TTest_Procs }
|
||||||
|
|
||||||
|
procedure TTest_Procs.test_GetToken();
|
||||||
|
|
||||||
|
procedure do_tests(const ADelimiter : string);
|
||||||
|
var
|
||||||
|
strBuffer : string;
|
||||||
|
begin
|
||||||
|
strBuffer := '';
|
||||||
|
CheckEquals('', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('',strBuffer);
|
||||||
|
strBuffer := ADelimiter;
|
||||||
|
CheckEquals('', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('',strBuffer);
|
||||||
|
strBuffer := Format('%s123',[ADelimiter]);
|
||||||
|
CheckEquals('', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('123',strBuffer);
|
||||||
|
strBuffer := Format('%s123%s45',[ADelimiter,ADelimiter]);
|
||||||
|
CheckEquals('', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals(Format('123%s45',[ADelimiter]),strBuffer);
|
||||||
|
CheckEquals('123', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('45',strBuffer);
|
||||||
|
CheckEquals('45', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('',strBuffer);
|
||||||
|
|
||||||
|
strBuffer := Format('123',[ADelimiter,ADelimiter]);
|
||||||
|
CheckEquals('123', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('',strBuffer);
|
||||||
|
strBuffer := Format('123%s45',[ADelimiter,ADelimiter]);
|
||||||
|
CheckEquals('123', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals(Format('45',[ADelimiter]),strBuffer);
|
||||||
|
CheckEquals('45', GetToken(strBuffer,ADelimiter));
|
||||||
|
CheckEquals('',strBuffer);
|
||||||
|
end;
|
||||||
|
|
||||||
|
begin
|
||||||
|
do_tests(';');
|
||||||
|
do_tests('##');
|
||||||
|
do_tests('#<#');
|
||||||
|
end;
|
||||||
|
|
||||||
initialization
|
initialization
|
||||||
RegisterTest('Utilities',TTest_TIntfPool.Suite);
|
RegisterTest('Utilities',TTest_TIntfPool.Suite);
|
||||||
RegisterTest('Utilities',TTest_TSimpleItemFactoryEx.Suite);
|
RegisterTest('Utilities',TTest_TSimpleItemFactoryEx.Suite);
|
||||||
@ -744,5 +792,6 @@ initialization
|
|||||||
RegisterTest('Utilities',TTest_TIntfPoolItem.Suite);
|
RegisterTest('Utilities',TTest_TIntfPoolItem.Suite);
|
||||||
RegisterTest('Utilities',TTest_TImplementationFactory.Suite);
|
RegisterTest('Utilities',TTest_TImplementationFactory.Suite);
|
||||||
RegisterTest('Utilities',TTest_TwstModuleManager.Suite);
|
RegisterTest('Utilities',TTest_TwstModuleManager.Suite);
|
||||||
|
RegisterTest('Utilities',TTest_Procs.Suite);
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
Reference in New Issue
Block a user