[bcl] Remove more NET_2_0 checks from class libs
[mono.git] / mcs / class / System.XML / Test / System.Xml / XmlUrlResolverTests.cs
1 //\r
2 // System.Xml.XmlUrlResolver.cs\r
3 //\r
4 // Authors:\r
5 //      Atsushi Enomoto (ginga@kit.hi-ho.ne.jp)\r
6 //\r
7 // (C) 2003 Atsushi Enomoto\r
8 //\r
9 using System;\r
10 using System.IO;\r
11 using System.Xml;\r
12 using NUnit.Framework;\r
13 #if NET_4_5\r
14 using System.Reflection;\r
15 #endif\r
16 \r
17 namespace MonoTests.System.Xml\r
18 {\r
19         [TestFixture]\r
20         public class XmlUrlResolverTests\r
21         {\r
22                 XmlUrlResolver resolver;\r
23 \r
24                 [SetUp]\r
25                 public void GetReady ()\r
26                 {\r
27                         resolver = new XmlUrlResolver ();\r
28                 }\r
29 \r
30                 [Test]\r
31                 public void FileUri ()\r
32                 {\r
33                         Uri resolved = resolver.ResolveUri (null, "Test/XmlFiles/xsd/xml.xsd");\r
34                         Assert.AreEqual ("file", resolved.Scheme);\r
35                         Stream s = resolver.GetEntity (resolved, null, typeof (Stream)) as Stream;\r
36                 }\r
37 \r
38                 [Test]\r
39                 [Category ("NotDotNet")]\r
40                 public void FileUri2 ()\r
41                 {\r
42                         Assert.AreEqual (resolver.ResolveUri (new Uri ("file://usr/local/src"), null).ToString (), "file://usr/local/src");\r
43                         // MS.NET returns the Uri.ToString() as \r
44                         // file://usr/local/src, but it is apparently \r
45                         // incorrect in the context of Unix path.\r
46                         Assert.AreEqual (resolver.ResolveUri (new Uri ("file:///usr/local/src"), null).ToString (), "file:///usr/local/src");\r
47                 }\r
48 \r
49                 [Test]\r
50                 public void HttpUri ()\r
51                 {\r
52                         Assert.AreEqual (resolver.ResolveUri (null, "http://test.xml").ToString (), "http://test.xml/");\r
53                 }\r
54 \r
55                 [Test]\r
56                 public void HttpUri2 ()\r
57                 {\r
58                         Assert.AreEqual (resolver.ResolveUri (new Uri ("http://go-mono.com"), null).ToString (), "http://go-mono.com/");\r
59                 }\r
60 \r
61                 [Test]\r
62                 [ExpectedException (typeof (ArgumentNullException))]\r
63                 public void ResolveUriWithNullArgs ()\r
64                 {\r
65                         resolver.ResolveUri (null, null);\r
66                         Assert.Fail ("Should be error (MS.NET throws ArgumentException here).");\r
67                 }\r
68 \r
69 //              [Test] Uncomment if you want to test.\r
70                 public void GetEntityWithNullArgs ()\r
71                 {\r
72                         Uri uri = new Uri ("http://www.go-mono.com/index.rss");\r
73                         resolver.GetEntity (uri, null, null);\r
74                 }\r
75 \r
76                 [Test]\r
77                 [ExpectedException (typeof (ArgumentException))]\r
78                 public void GetEntityWithRelativeFileUri ()\r
79                 {\r
80                         resolver.GetEntity (new Uri ("file.txt", UriKind.Relative), null, typeof (Stream));\r
81                 }\r
82 \r
83                 [Test]\r
84                 [ExpectedException (typeof (XmlException))]\r
85                 public void GetEntityWithNonStreamReturnType ()\r
86                 {\r
87                         resolver.GetEntity (new Uri ("http://www.go-mono.com/"), null, typeof (File));\r
88                 }\r
89 \r
90                 [Test] // bug #998\r
91                 public void NullAbsoluteUriWithCustomSchemedRelativeUri ()\r
92                 {\r
93                         XmlResolver res = new XmlUrlResolver ();\r
94                         var uri = res.ResolveUri (null, "view:Standard.xslt");\r
95                         Assert.AreEqual ("view", uri.Scheme, "#1");\r
96                         Assert.AreEqual ("Standard.xslt", uri.AbsolutePath, "#2");\r
97                         Assert.AreEqual ("view:Standard.xslt", uri.AbsoluteUri, "#2");\r
98                 }\r
99 \r
100 #if NET_4_5\r
101                 [Test]\r
102                 public void TestAsync ()\r
103                 {\r
104                         var loc = Assembly.GetExecutingAssembly ().Location;\r
105                         Uri resolved = resolver.ResolveUri (null, loc);\r
106                         Assert.AreEqual ("file", resolved.Scheme);\r
107                         var task = resolver.GetEntityAsync (resolved, null, typeof (Stream));\r
108                         Assert.IsTrue (task.Wait (3000));\r
109                         Assert.IsTrue (task.Result is Stream);\r
110                 }\r
111 \r
112                 [Test]\r
113                 public void TestAsyncError ()\r
114                 {\r
115                         var loc = Assembly.GetExecutingAssembly ().Location;\r
116                         Uri resolved = resolver.ResolveUri (null, loc);\r
117                         Assert.AreEqual ("file", resolved.Scheme);\r
118                         var task = resolver.GetEntityAsync (resolved, null, typeof (File));\r
119                         try {\r
120                                 task.Wait (3000);\r
121                                 Assert.Fail ("#1");\r
122                         } catch (Exception ex) {\r
123                                 if (ex is AggregateException)\r
124                                         ex = ((AggregateException) ex).InnerException;\r
125                                 Assert.IsTrue (ex is XmlException);\r
126                         }\r
127                 }\r
128 #endif\r
129         }\r
130 }\r