You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //
 | |
| // ServiceDescriptionImporterTest.cs
 | |
| //
 | |
| // Author:
 | |
| //	Atsushi Enomoto  <atsushi@ximian.com>
 | |
| //
 | |
| // Copyright (C) 2007 Novell, Inc.
 | |
| //
 | |
| 
 | |
| #if !MOBILE && !MONOMAC
 | |
| 
 | |
| 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
 | |
| 	{
 | |
| 		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
 |