2003-05-20 Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
[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.Xml\r
20 {\r
21         [TestFixture]\r
22         public class XmlAttributesTests : Assertion\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                         AssertNull (atts.XmlAnyAttribute);\r
69                         AssertNotNull (atts.XmlAnyElements);\r
70                         AssertEquals (0, atts.XmlAnyElements.Count);\r
71                         AssertNull (atts.XmlArray);\r
72                         AssertNotNull (atts.XmlArrayItems);\r
73                         AssertEquals (0, atts.XmlArrayItems.Count);\r
74                         AssertNull (atts.XmlAttribute);\r
75                         AssertNull (atts.XmlChoiceIdentifier);\r
76                         AssertNotNull (atts.XmlDefaultValue);\r
77                         // DBNull??\r
78                         AssertEquals (DBNull.Value, atts.XmlDefaultValue);\r
79                         AssertNotNull (atts.XmlElements);\r
80                         AssertEquals (0, atts.XmlElements.Count);\r
81                         AssertNull (atts.XmlEnum);\r
82                         AssertNotNull (atts.XmlIgnore);\r
83                         AssertEquals (TypeCode.Boolean, atts.XmlIgnore.GetTypeCode ());\r
84                         AssertEquals (false, atts.Xmlns);\r
85                         AssertNull (atts.XmlRoot);\r
86                         AssertNull (atts.XmlText);\r
87                         AssertNull (atts.XmlType);\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                         AssertEquals ("", attr.DataType);\r
96                         AssertNull (attr.Type);\r
97                         // based on a type.\r
98                         XmlTextAttribute attr2 = new XmlTextAttribute (typeof (XmlNode));\r
99                         AssertEquals ("", attr.DataType);\r
100                         AssertNull (attr.Type);\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                                 Fail ("Should be invalid.");\r
113                         } catch (InvalidOperationException ex) {\r
114                         }\r
115                 }\r
116         }\r
117 }\r