Merge branch 'master' of github.com:tgiphil/mono
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlResolverTest.cs
1 //
2 // XmlResolverTest.cs - NUnit Test Cases for XmlResolver
3 //
4 // Author:
5 //      Sebastien Pouliot (sebastien@ximian.com)
6 //
7 // Copyright (C) 2009 Novell, Inc (http://www.novell.com)
8 //
9 // Permission is hereby granted, free of charge, to any person obtaining
10 // a copy of this software and associated documentation files (the
11 // "Software"), to deal in the Software without restriction, including
12 // without limitation the rights to use, copy, modify, merge, publish,
13 // distribute, sublicense, and/or sell copies of the Software, and to
14 // permit persons to whom the Software is furnished to do so, subject to
15 // the following conditions:
16 // 
17 // The above copyright notice and this permission notice shall be
18 // included in all copies or substantial portions of the Software.
19 // 
20 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27 //
28
29 using System;
30 using System.IO;
31 using System.Net;
32 using System.Xml;
33
34 using NUnit.Framework;
35
36 namespace MonoTest.System.Xml {
37
38         [TestFixture]
39         public class XmlResolverTest {
40
41                 class ConcreteXmlResolver : XmlResolver {
42
43                         public override object GetEntity (Uri absoluteUri, string role, Type ofObjectToReturn)
44                         {
45                                 throw new NotImplementedException ();
46                         }
47
48                         public override ICredentials Credentials {
49                                 set { throw new NotImplementedException (); }
50                         }
51                 }
52
53                 bool isWin32 = false;
54                 
55                 [SetUp]
56                 public void SetUp ()
57                 {
58                         isWin32 = (Path.DirectorySeparatorChar == '\\');
59                 }
60
61                 [Test]
62                 [ExpectedException (typeof (ArgumentNullException))]
63                 public void ResolveUri_ ()
64                 {
65                         ConcreteXmlResolver xr = new ConcreteXmlResolver ();
66                         xr.ResolveUri (null, null);
67                 }
68 #if NET_2_0
69                 [Test]
70                 public void ResolveUri ()
71                 {
72                         ConcreteXmlResolver xr = new ConcreteXmlResolver ();
73
74                         Uri uri = xr.ResolveUri (null, "/Moonlight");
75                         // note: this is *very* different from [silver|moon]light
76                         Assert.IsTrue (uri.IsAbsoluteUri, "null,string");
77                         if (isWin32) {
78                                 string currentdir = Directory.GetCurrentDirectory ();
79                                 string volume = currentdir.Substring (0, 2);
80                                 Assert.AreEqual ("file:///" + volume + "/Moonlight", uri.ToString (), "ToString");
81                         } else
82                                 Assert.AreEqual ("file:///Moonlight", uri.ToString (), "ToString");
83
84                         uri = new Uri ("http://www.mono-project.com");
85                         Uri u2 = xr.ResolveUri (uri, null);
86                         Assert.AreEqual (uri, u2, "Equals");
87                         Assert.IsTrue (Object.ReferenceEquals (uri, u2), "ReferenceEquals");
88
89                         u2 = xr.ResolveUri (uri, "/Moonlight");
90                         Assert.IsTrue (uri.IsAbsoluteUri, "abs,string");
91                         Assert.AreEqual ("http://www.mono-project.com/Moonlight", u2.ToString (), "ToString3");
92
93                         u2 = xr.ResolveUri (null, "http://www.mono-project.com");
94                         Assert.IsTrue (u2.IsAbsoluteUri, "null,absolute/http");
95                         Assert.AreEqual (uri, u2, "Equals-2");
96
97                         u2 = xr.ResolveUri (null, "https://www.mono-project.com");
98                         Assert.IsTrue (u2.IsAbsoluteUri, "null,absolute/https");
99
100                         u2 = xr.ResolveUri (null, "ftp://mono-project.com/download");
101                         Assert.IsTrue (u2.IsAbsoluteUri, "null,absolute/ftp");
102
103                         u2 = xr.ResolveUri (null, "file:///mystuff");
104                         Assert.IsTrue (u2.IsAbsoluteUri, "null,absolute/file");
105                 }
106 #endif\r
107         }
108 }