copying the latest Sys.Web.Services from trunk.
[mono.git] / mcs / class / System.XML / Test / System.Xml.Serialization / XmlAttributesTests.cs
1 //\r
2 // System.Xml.XmlAttributesTests\r
3 //\r
4 // Author:\r
5 //   Atsushi Enomoto\r
6 //\r
7 // (C) 2003 Atsushi Enomoto\r
8 //\r
9 \r
10 using System;\r
11 using System.IO;\r
12 using System.Text;\r
13 using System.Xml;\r
14 using System.Xml.Schema;\r
15 using System.Xml.Serialization;\r
16 \r
17 using NUnit.Framework;\r
18 \r
19 namespace MonoTests.System.XmlSerialization\r
20 {\r
21         [TestFixture]\r
22         public class XmlAttributesTests\r
23         {\r
24                 StringWriter sw;\r
25                 XmlTextWriter xtw;\r
26                 XmlSerializer xs;\r
27 \r
28                 private void SetUpWriter ()\r
29                 {\r
30                         sw = new StringWriter ();\r
31                         xtw = new XmlTextWriter (sw);\r
32                         xtw.QuoteChar = '\'';\r
33                         xtw.Formatting = Formatting.None;\r
34                 }\r
35                 \r
36                 private string WriterText \r
37                 {\r
38                         get\r
39                         {\r
40                                 string val = sw.GetStringBuilder ().ToString();\r
41                                 int offset = val.IndexOf ('>') + 1;\r
42                                 val = val.Substring (offset);\r
43                                 return val;\r
44                         }\r
45                 }\r
46 \r
47                 private void Serialize (object o, XmlAttributeOverrides ao)\r
48                 {\r
49                         SetUpWriter ();\r
50                         xs = new XmlSerializer (o.GetType (), ao);\r
51                         xs.Serialize (xtw, o);\r
52                 }\r
53                 \r
54                 private void Serialize (object o, XmlRootAttribute root)\r
55                 {\r
56                         SetUpWriter ();\r
57                         xs = new XmlSerializer (o.GetType(), root);\r
58                         xs.Serialize (xtw, o);\r
59                 }\r
60 \r
61                 // Testcases.\r
62 \r
63                 [Test]\r
64                 public void NewXmlAttributes ()\r
65                 {\r
66                         // seems not different from Type specified ctor().\r
67                         XmlAttributes atts = new XmlAttributes ();\r
68                         Assert.IsNull (atts.XmlAnyAttribute, "#1");\r
69                         Assert.IsNotNull (atts.XmlAnyElements, "#2");\r
70                         Assert.AreEqual (0, atts.XmlAnyElements.Count, "#3");\r
71                         Assert.IsNull (atts.XmlArray, "#4");\r
72                         Assert.IsNotNull (atts.XmlArrayItems, "#5");\r
73                         Assert.AreEqual (0, atts.XmlArrayItems.Count, "#6");\r
74                         Assert.IsNull (atts.XmlAttribute, "#7");\r
75                         Assert.IsNull (atts.XmlChoiceIdentifier, "#8");\r
76                         Assert.IsNotNull (atts.XmlDefaultValue, "#9");\r
77                         // DBNull??\r
78                         Assert.AreEqual (DBNull.Value, atts.XmlDefaultValue, "#10");\r
79                         Assert.IsNotNull (atts.XmlElements, "#11");\r
80                         Assert.AreEqual (0, atts.XmlElements.Count, "#12");\r
81                         Assert.IsNull (atts.XmlEnum, "#13");\r
82                         Assert.IsNotNull (atts.XmlIgnore, "#14");\r
83                         Assert.AreEqual (TypeCode.Boolean, atts.XmlIgnore.GetTypeCode (), "#15");\r
84                         Assert.AreEqual (false, atts.Xmlns, "#16");\r
85                         Assert.IsNull (atts.XmlRoot, "#17");\r
86                         Assert.IsNull (atts.XmlText, "#18");\r
87                         Assert.IsNull (atts.XmlType, "#19");\r
88                 }\r
89 \r
90                 [Test]\r
91                 public void XmlTextAttribute ()\r
92                 {\r
93                         // based on default ctor.\r
94                         XmlTextAttribute attr = new XmlTextAttribute ();\r
95                         Assert.AreEqual ("", attr.DataType, "#1");\r
96                         Assert.IsNull (attr.Type, "#2");\r
97                         // based on a type.\r
98                         XmlTextAttribute attr2 = new XmlTextAttribute (typeof (XmlNode));\r
99                         Assert.AreEqual ("", attr.DataType, "#3");\r
100                         Assert.IsNull (attr.Type, "#4");\r
101                 }\r
102 \r
103                 [Test]\r
104                 public void XmlInvalidElementAttribute ()\r
105                 {\r
106                         XmlAttributeOverrides ao = new XmlAttributeOverrides ();\r
107                         XmlAttributes atts = new XmlAttributes ();\r
108                         atts.XmlElements.Add (new XmlElementAttribute ("xInt"));\r
109                         ao.Add (typeof (int), atts);\r
110                         try {\r
111                                 Serialize (10, ao);\r
112                                 Assert.Fail ("Should be invalid.");\r
113                         } catch (InvalidOperationException ex) {\r
114                         }\r
115                 }\r
116         }\r
117 }\r