1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
|
//
// ServiceDescriptionImporterTest.cs
//
// Author:
// Atsushi Enomoto <atsushi@ximian.com>
//
// Copyright (C) 2007 Novell, Inc.
//
using NUnit.Framework;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Web.Services.Description;
namespace MonoTests.System.Web.Services.Description
{
[TestFixture]
public class ServiceDescriptionImporterTest
{
#if NET_2_0
CodeNamespace GenerateCodeFromWsdl (ServiceDescription sd)
{
ServiceDescriptionImporter imp =
new ServiceDescriptionImporter ();
imp.AddServiceDescription (sd, null, null);
CodeNamespace cns = new CodeNamespace ();
imp.Import (cns, null);
return cns;
}
CodeTypeDeclaration FindTypeFrom (CodeNamespace cns, string name)
{
foreach (CodeTypeDeclaration td in cns.Types)
if (td.Name == name)
return td;
return null;
}
CodeTypeDeclaration FindMemberFrom (CodeNamespace cns, string name)
{
foreach (CodeTypeDeclaration td in cns.Types)
if (td.Name == name)
return td;
return null;
}
[Test]
public void Constructor ()
{
ServiceDescriptionImporter imp =
new ServiceDescriptionImporter ();
Assert.IsTrue (imp.CodeGenerator is CSharpCodeProvider);
}
[Test] // wtf? no ArgumentNullException?
public void SetNullCodeGenerator ()
{
ServiceDescriptionImporter imp =
new ServiceDescriptionImporter ();
imp.CodeGenerator = null;
}
[Test]
public void GenerateNullableTypes ()
{
CodeNamespace cns = GenerateCodeFromWsdl (
ServiceDescription.Read ("Test/System.Web.Services.Description/test2.wsdl"));
CodeTypeDeclaration td = FindTypeFrom (cns, "Service");
foreach (CodeTypeMember member in td.Members) {
CodeMemberMethod method = member as CodeMemberMethod;
if (method == null || method.Name != "Hola")
continue;
Assert.AreEqual ("System.Nullable`1", method.ReturnType.BaseType, "#1");
Assert.AreEqual (1, method.ReturnType.TypeArguments.Count, "#2");
Assert.AreEqual ("System.Int32", method.ReturnType.TypeArguments [0].BaseType, "#3");
return;
}
Assert.Fail ("The expected member didn't appear.");
}
[Test]
public void GenerateWebReferencesEmpty ()
{
// yuck - This causes NRE.
//ServiceDescriptionImporter.GenerateWebReferences (
// new WebReferenceCollection (), null, null, null);
ServiceDescriptionImporter.GenerateWebReferences (
new WebReferenceCollection (),
null,
new CodeCompileUnit (),
new WebReferenceOptions ());
}
[Test]
[Ignore ("This test requires HttpGet available by configuration.")]
public void ImportHttpOnlyWsdl ()
{
ServiceDescriptionImporter imp =
new ServiceDescriptionImporter ();
imp.AddServiceDescription (ServiceDescription.Read ("Test/System.Web.Services.Description/test3.wsdl"), null, null);
CodeNamespace cns = new CodeNamespace ();
CodeCompileUnit ccu = new CodeCompileUnit ();
ccu.Namespaces.Add (cns);
imp.Import (cns, ccu);
// FIXME: this test could require more precise result
bool verified = false;
Assert.AreEqual (1, ccu.Namespaces.Count, "#1");
Assert.AreEqual (1, ccu.Namespaces [0].Types.Count, "#2");
foreach (CodeTypeDeclaration cd in ccu.Namespaces [0].Types) {
Console.WriteLine ("***" + cd.Name);
if (cd.Name != "MyService")
continue;
Assert.AreEqual ("System.Web.Services.Protocols.HttpGetClientProtocol", cd.BaseTypes [0].BaseType);
verified = true;
}
Assert.IsTrue (verified, "verified");
}
#endif
}
}
|