XmlReflectionImporterTests.cs 58 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785
  1. //
  2. // System.Xml.Serialization.XmlReflectionImporterTests
  3. //
  4. // Author:
  5. // Erik LeBel ([email protected])
  6. //
  7. // (C) 2003 Erik LeBel
  8. //
  9. // FIXME test some of these with Xml Attributes attached to some members:
  10. // do the names get carried over to Element for XmlAttributeAttribute and XmlElementAttribute?
  11. //
  12. using System;
  13. using System.Collections;
  14. using System.Xml;
  15. using System.Xml.Schema;
  16. using System.Xml.Serialization;
  17. using NUnit.Framework;
  18. using MonoTests.System.Xml.TestClasses;
  19. namespace MonoTests.System.XmlSerialization
  20. {
  21. // debugging class
  22. internal class Debug
  23. {
  24. public static void Print(XmlTypeMapping tm)
  25. {
  26. Console.WriteLine("/XmlTypeMapping:");
  27. Console.WriteLine("ElementName: {0} ", tm.ElementName);
  28. Console.WriteLine("Namespace: {0} ", tm.Namespace);
  29. Console.WriteLine("TypeName: {0} ", tm.TypeName);
  30. Console.WriteLine("FullTypeName: {0} ", tm.TypeFullName);
  31. }
  32. public static void Print(XmlMemberMapping mm)
  33. {
  34. Console.WriteLine("/XmlMemberMapping:");
  35. Console.WriteLine("Any: {0} ", mm.Any);
  36. Console.WriteLine("ElementName: {0} ", mm.ElementName);
  37. Console.WriteLine("MemberName: {0} ", mm.MemberName);
  38. Console.WriteLine("Namespace: {0} ", mm.Namespace);
  39. Console.WriteLine("TypeFullName: {0} ", mm.TypeFullName);
  40. Console.WriteLine("TypeName: {0} ", mm.TypeName);
  41. Console.WriteLine("TypeNamespace: {0} ", mm.TypeNamespace);
  42. }
  43. }
  44. [TestFixture]
  45. public class XmlReflectionImporterTests
  46. {
  47. private const string SomeNamespace = "some:urn";
  48. private const string AnotherNamespace = "another:urn";
  49. private const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema";
  50. // these Map methods re-create the XmlReflectionImporter at every call.
  51. private XmlTypeMapping Map(Type t)
  52. {
  53. XmlReflectionImporter ri = new XmlReflectionImporter();
  54. XmlTypeMapping tm = ri.ImportTypeMapping(t);
  55. //Debug.Print(tm);
  56. return tm;
  57. }
  58. private XmlTypeMapping Map(Type t, XmlRootAttribute root)
  59. {
  60. XmlReflectionImporter ri = new XmlReflectionImporter();
  61. XmlTypeMapping tm = ri.ImportTypeMapping(t, root);
  62. return tm;
  63. }
  64. private XmlTypeMapping Map(Type t, string ns)
  65. {
  66. XmlReflectionImporter ri = new XmlReflectionImporter(ns);
  67. XmlTypeMapping tm = ri.ImportTypeMapping(t);
  68. //Debug.Print(tm);
  69. return tm;
  70. }
  71. private XmlTypeMapping Map (Type t, string ns, XmlRootAttribute root)
  72. {
  73. XmlReflectionImporter ri = new XmlReflectionImporter (ns);
  74. XmlTypeMapping tm = ri.ImportTypeMapping (t, root);
  75. return tm;
  76. }
  77. private XmlTypeMapping Map(Type t, XmlAttributeOverrides overrides)
  78. {
  79. XmlReflectionImporter ri = new XmlReflectionImporter(overrides);
  80. XmlTypeMapping tm = ri.ImportTypeMapping(t);
  81. //Debug.Print(tm);
  82. return tm;
  83. }
  84. private XmlMembersMapping MembersMap(Type t, XmlAttributeOverrides overrides,
  85. XmlReflectionMember [] members, bool inContainer)
  86. {
  87. XmlReflectionImporter ri = new XmlReflectionImporter(overrides);
  88. XmlMembersMapping mm = ri.ImportMembersMapping(null, null, members, inContainer);
  89. return mm;
  90. }
  91. [Test]
  92. public void TestIntTypeMapping()
  93. {
  94. XmlTypeMapping tm = Map(typeof(int));
  95. Assert.AreEqual ("int", tm.ElementName, "#1");
  96. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  97. Assert.AreEqual ("Int32", tm.TypeName, "#3");
  98. Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
  99. }
  100. [Test]
  101. #if NET_2_0
  102. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  103. #endif
  104. public void TestIntTypeMapping_Array ()
  105. {
  106. XmlTypeMapping tm = Map(typeof(int[]));
  107. Assert.AreEqual ("ArrayOfInt", tm.ElementName, "#A1");
  108. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  109. #if NET_2_0
  110. Assert.AreEqual ("ArrayOfInt32", tm.TypeName, "#A3");
  111. #else
  112. Assert.AreEqual ("Int32[]", tm.TypeName, "#A3");
  113. #endif
  114. Assert.AreEqual ("System.Int32[]", tm.TypeFullName, "#A4");
  115. tm = Map (typeof (int[][]));
  116. Assert.AreEqual ("ArrayOfArrayOfInt", tm.ElementName, "#B1");
  117. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  118. #if NET_2_0
  119. Assert.AreEqual ("ArrayOfArrayOfInt32", tm.TypeName, "#B3");
  120. #else
  121. Assert.AreEqual ("Int32[][]", tm.TypeName, "#B3");
  122. #endif
  123. Assert.AreEqual ("System.Int32[][]", tm.TypeFullName, "#B4");
  124. tm = Map (typeof (int[][][]));
  125. Assert.AreEqual ("ArrayOfArrayOfArrayOfInt", tm.ElementName, "#C1");
  126. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  127. #if NET_2_0
  128. Assert.AreEqual ("ArrayOfArrayOfArrayOfInt32", tm.TypeName, "#C3");
  129. #else
  130. Assert.AreEqual ("Int32[][][]", tm.TypeName, "#C3");
  131. #endif
  132. Assert.AreEqual ("System.Int32[][][]", tm.TypeFullName, "#C4");
  133. }
  134. [Test]
  135. public void TestStringTypeMapping()
  136. {
  137. XmlTypeMapping tm = Map(typeof(string));
  138. Assert.AreEqual ("string", tm.ElementName, "#1");
  139. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  140. Assert.AreEqual ("String", tm.TypeName, "#3");
  141. Assert.AreEqual ("System.String", tm.TypeFullName, "#4");
  142. }
  143. [Test]
  144. #if NET_2_0
  145. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  146. #endif
  147. public void TestStringTypeMapping_Array ()
  148. {
  149. XmlTypeMapping tm = Map (typeof (string[]));
  150. Assert.AreEqual ("ArrayOfString", tm.ElementName, "#A1");
  151. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  152. #if NET_2_0
  153. Assert.AreEqual ("ArrayOfString", tm.TypeName, "#A3");
  154. #else
  155. Assert.AreEqual ("String[]", tm.TypeName, "#A3");
  156. #endif
  157. Assert.AreEqual ("System.String[]", tm.TypeFullName, "#A4");
  158. tm = Map (typeof (string[][]));
  159. Assert.AreEqual ("ArrayOfArrayOfString", tm.ElementName, "#B1");
  160. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  161. #if NET_2_0
  162. Assert.AreEqual ("ArrayOfArrayOfString", tm.TypeName, "#B3");
  163. #else
  164. Assert.AreEqual ("String[][]", tm.TypeName, "#B3");
  165. #endif
  166. Assert.AreEqual ("System.String[][]", tm.TypeFullName, "#B4");
  167. tm = Map (typeof (string[][][]));
  168. Assert.AreEqual ("ArrayOfArrayOfArrayOfString", tm.ElementName, "#C1");
  169. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  170. #if NET_2_0
  171. Assert.AreEqual ("ArrayOfArrayOfArrayOfString", tm.TypeName, "#C3");
  172. #else
  173. Assert.AreEqual ("String[][][]", tm.TypeName, "#C3");
  174. #endif
  175. Assert.AreEqual ("System.String[][][]", tm.TypeFullName, "#C4");
  176. }
  177. [Test]
  178. public void TestObjectTypeMapping()
  179. {
  180. XmlTypeMapping tm = Map(typeof(object));
  181. Assert.AreEqual ("anyType", tm.ElementName, "#1");
  182. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  183. Assert.AreEqual ("Object", tm.TypeName, "#3");
  184. Assert.AreEqual ("System.Object", tm.TypeFullName, "#4");
  185. }
  186. [Test]
  187. #if NET_2_0
  188. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  189. #endif
  190. public void TestObjectTypeMapping_Array ()
  191. {
  192. XmlTypeMapping tm = Map (typeof (object[]));
  193. Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#A1");
  194. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  195. #if NET_2_0
  196. Assert.AreEqual ("ArrayOfObject", tm.TypeName, "#A3");
  197. #else
  198. Assert.AreEqual ("Object[]", tm.TypeName, "#A3");
  199. #endif
  200. Assert.AreEqual ("System.Object[]", tm.TypeFullName, "#A4");
  201. tm = Map (typeof (object[][]));
  202. Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#B1");
  203. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  204. #if NET_2_0
  205. Assert.AreEqual ("ArrayOfArrayOfObject", tm.TypeName, "#B3");
  206. #else
  207. Assert.AreEqual ("Object[][]", tm.TypeName, "#B3");
  208. #endif
  209. Assert.AreEqual ("System.Object[][]", tm.TypeFullName, "#B4");
  210. tm = Map (typeof (object[][][]));
  211. Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
  212. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  213. #if NET_2_0
  214. Assert.AreEqual ("ArrayOfArrayOfArrayOfObject", tm.TypeName, "#C3");
  215. #else
  216. Assert.AreEqual ("Object[][][]", tm.TypeName, "#C3");
  217. #endif
  218. Assert.AreEqual ("System.Object[][][]", tm.TypeFullName, "#C4");
  219. }
  220. [Test]
  221. public void TestByteTypeMapping()
  222. {
  223. XmlTypeMapping tm = Map(typeof(byte));
  224. Assert.AreEqual ("unsignedByte", tm.ElementName, "#1");
  225. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  226. Assert.AreEqual ("Byte", tm.TypeName, "#3");
  227. Assert.AreEqual ("System.Byte", tm.TypeFullName, "#4");
  228. }
  229. [Test]
  230. #if NET_2_0
  231. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  232. #endif
  233. public void TestByteTypeMapping_Array ()
  234. {
  235. XmlTypeMapping tm = Map(typeof(byte[]));
  236. Assert.AreEqual ("base64Binary", tm.ElementName, "#A1");
  237. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  238. Assert.AreEqual ("Byte[]", tm.TypeName, "#A3");
  239. Assert.AreEqual ("System.Byte[]", tm.TypeFullName, "#A4");
  240. tm = Map (typeof (byte[][]));
  241. Assert.AreEqual ("ArrayOfBase64Binary", tm.ElementName, "#B1");
  242. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  243. #if NET_2_0
  244. Assert.AreEqual ("ArrayOfArrayOfByte", tm.TypeName, "#B3");
  245. #else
  246. Assert.AreEqual ("Byte[][]", tm.TypeName, "#B3");
  247. #endif
  248. Assert.AreEqual ("System.Byte[][]", tm.TypeFullName, "#B4");
  249. tm = Map (typeof (byte[][][]));
  250. Assert.AreEqual ("ArrayOfArrayOfBase64Binary", tm.ElementName, "#C1");
  251. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  252. #if NET_2_0
  253. Assert.AreEqual ("ArrayOfArrayOfArrayOfByte", tm.TypeName, "#C3");
  254. #else
  255. Assert.AreEqual ("Byte[][][]", tm.TypeName, "#C3");
  256. #endif
  257. Assert.AreEqual ("System.Byte[][][]", tm.TypeFullName, "#C4");
  258. }
  259. [Test]
  260. public void TestBoolTypeMapping()
  261. {
  262. XmlTypeMapping tm = Map(typeof(bool));
  263. Assert.AreEqual ("boolean", tm.ElementName, "#1");
  264. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  265. Assert.AreEqual ("Boolean", tm.TypeName, "#3");
  266. Assert.AreEqual ("System.Boolean", tm.TypeFullName, "#4");
  267. }
  268. [Test]
  269. public void TestShortTypeMapping()
  270. {
  271. XmlTypeMapping tm = Map(typeof(short));
  272. Assert.AreEqual ("short", tm.ElementName, "#1");
  273. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  274. Assert.AreEqual ("Int16", tm.TypeName, "#3");
  275. Assert.AreEqual ("System.Int16", tm.TypeFullName, "#4");
  276. }
  277. [Test]
  278. public void TestUnsignedShortTypeMapping()
  279. {
  280. XmlTypeMapping tm = Map(typeof(ushort));
  281. Assert.AreEqual ("unsignedShort", tm.ElementName, "#1");
  282. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  283. Assert.AreEqual ("UInt16", tm.TypeName, "#3");
  284. Assert.AreEqual ("System.UInt16", tm.TypeFullName, "#4");
  285. }
  286. [Test]
  287. public void TestUIntTypeMapping()
  288. {
  289. XmlTypeMapping tm = Map(typeof(uint));
  290. Assert.AreEqual ("unsignedInt", tm.ElementName, "#1");
  291. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  292. Assert.AreEqual ("UInt32", tm.TypeName, "#3");
  293. Assert.AreEqual ("System.UInt32", tm.TypeFullName, "#4");
  294. }
  295. [Test]
  296. public void TestLongTypeMapping()
  297. {
  298. XmlTypeMapping tm = Map(typeof(long));
  299. Assert.AreEqual ("long", tm.ElementName, "#1");
  300. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  301. Assert.AreEqual ("Int64", tm.TypeName, "#3");
  302. Assert.AreEqual ("System.Int64", tm.TypeFullName, "#4");
  303. }
  304. [Test]
  305. public void TestULongTypeMapping()
  306. {
  307. XmlTypeMapping tm = Map(typeof(ulong));
  308. Assert.AreEqual ("unsignedLong", tm.ElementName, "#1");
  309. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  310. Assert.AreEqual ("UInt64", tm.TypeName, "#3");
  311. Assert.AreEqual ("System.UInt64", tm.TypeFullName, "#4");
  312. }
  313. [Test]
  314. public void TestFloatTypeMapping()
  315. {
  316. XmlTypeMapping tm = Map(typeof(float));
  317. Assert.AreEqual ("float", tm.ElementName, "#1");
  318. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  319. Assert.AreEqual ("Single", tm.TypeName, "#3");
  320. Assert.AreEqual ("System.Single", tm.TypeFullName, "#4");
  321. }
  322. [Test]
  323. public void TestDoubleTypeMapping()
  324. {
  325. XmlTypeMapping tm = Map(typeof(double));
  326. Assert.AreEqual ("double", tm.ElementName, "#1");
  327. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  328. Assert.AreEqual ("Double", tm.TypeName, "#3");
  329. Assert.AreEqual ("System.Double", tm.TypeFullName, "#4");
  330. }
  331. [Test]
  332. public void TestDateTimeTypeMapping()
  333. {
  334. XmlTypeMapping tm = Map(typeof(DateTime));
  335. Assert.AreEqual ("dateTime", tm.ElementName, "#1");
  336. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  337. Assert.AreEqual ("DateTime", tm.TypeName, "#3");
  338. Assert.AreEqual ("System.DateTime", tm.TypeFullName, "#4");
  339. }
  340. [Test]
  341. #if NET_2_0
  342. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  343. #endif
  344. public void TestDateTimeTypeMapping_Array ()
  345. {
  346. XmlTypeMapping tm = Map (typeof (DateTime[]));
  347. Assert.AreEqual ("ArrayOfDateTime", tm.ElementName, "#A1");
  348. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  349. #if NET_2_0
  350. Assert.AreEqual ("ArrayOfDateTime", tm.TypeName, "#A3");
  351. #else
  352. Assert.AreEqual ("DateTime[]", tm.TypeName, "#A3");
  353. #endif
  354. Assert.AreEqual ("System.DateTime[]", tm.TypeFullName, "#A4");
  355. tm = Map (typeof (DateTime[][]));
  356. Assert.AreEqual ("ArrayOfArrayOfDateTime", tm.ElementName, "#B1");
  357. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  358. #if NET_2_0
  359. Assert.AreEqual ("ArrayOfArrayOfDateTime", tm.TypeName, "#B3");
  360. #else
  361. Assert.AreEqual ("DateTime[][]", tm.TypeName, "#B3");
  362. #endif
  363. Assert.AreEqual ("System.DateTime[][]", tm.TypeFullName, "#B4");
  364. tm = Map (typeof (DateTime[][][]));
  365. Assert.AreEqual ("ArrayOfArrayOfArrayOfDateTime", tm.ElementName, "#C1");
  366. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  367. #if NET_2_0
  368. Assert.AreEqual ("ArrayOfArrayOfArrayOfDateTime", tm.TypeName, "#C3");
  369. #else
  370. Assert.AreEqual ("DateTime[][][]", tm.TypeName, "#C3");
  371. #endif
  372. Assert.AreEqual ("System.DateTime[][][]", tm.TypeFullName, "#C4");
  373. }
  374. [Test]
  375. public void TestGuidTypeMapping()
  376. {
  377. XmlTypeMapping tm = Map(typeof(Guid));
  378. Assert.AreEqual ("guid", tm.ElementName, "#1");
  379. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  380. Assert.AreEqual ("Guid", tm.TypeName, "#3");
  381. Assert.AreEqual ("System.Guid", tm.TypeFullName, "#4");
  382. }
  383. [Test]
  384. #if NET_2_0
  385. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  386. #endif
  387. public void TestGuidTypeMapping_Array ()
  388. {
  389. XmlTypeMapping tm = Map (typeof (Guid[]));
  390. Assert.AreEqual ("ArrayOfGuid", tm.ElementName, "#A1");
  391. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  392. #if NET_2_0
  393. Assert.AreEqual ("ArrayOfGuid", tm.TypeName, "#A3");
  394. #else
  395. Assert.AreEqual ("Guid[]", tm.TypeName, "#A3");
  396. #endif
  397. Assert.AreEqual ("System.Guid[]", tm.TypeFullName, "#A4");
  398. tm = Map (typeof (Guid[][]));
  399. Assert.AreEqual ("ArrayOfArrayOfGuid", tm.ElementName, "#B1");
  400. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  401. #if NET_2_0
  402. Assert.AreEqual ("ArrayOfArrayOfGuid", tm.TypeName, "#B3");
  403. #else
  404. Assert.AreEqual ("Guid[][]", tm.TypeName, "#B3");
  405. #endif
  406. Assert.AreEqual ("System.Guid[][]", tm.TypeFullName, "#B4");
  407. tm = Map (typeof (Guid[][][]));
  408. Assert.AreEqual ("ArrayOfArrayOfArrayOfGuid", tm.ElementName, "#C1");
  409. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  410. #if NET_2_0
  411. Assert.AreEqual ("ArrayOfArrayOfArrayOfGuid", tm.TypeName, "#C3");
  412. #else
  413. Assert.AreEqual ("Guid[][][]", tm.TypeName, "#C3");
  414. #endif
  415. Assert.AreEqual ("System.Guid[][][]", tm.TypeFullName, "#C4");
  416. }
  417. [Test]
  418. public void TestDecimalTypeMapping()
  419. {
  420. XmlTypeMapping tm = Map(typeof(decimal));
  421. Assert.AreEqual ("decimal", tm.ElementName, "#1");
  422. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  423. Assert.AreEqual ("Decimal", tm.TypeName, "#3");
  424. Assert.AreEqual ("System.Decimal", tm.TypeFullName, "#4");
  425. }
  426. [Test]
  427. public void TestXmlQualifiedNameTypeMapping()
  428. {
  429. XmlTypeMapping tm = Map(typeof(XmlQualifiedName));
  430. Assert.AreEqual ("QName", tm.ElementName, "#1");
  431. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  432. Assert.AreEqual ("XmlQualifiedName", tm.TypeName, "#3");
  433. Assert.AreEqual ("System.Xml.XmlQualifiedName", tm.TypeFullName, "#4");
  434. }
  435. [Test]
  436. public void TestSByteTypeMapping()
  437. {
  438. XmlTypeMapping tm = Map(typeof(sbyte));
  439. Assert.AreEqual ("byte", tm.ElementName, "#1");
  440. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  441. Assert.AreEqual ("SByte", tm.TypeName, "#3");
  442. Assert.AreEqual ("System.SByte", tm.TypeFullName, "#4");
  443. }
  444. [Test]
  445. public void TestCharTypeMapping()
  446. {
  447. XmlTypeMapping tm = Map(typeof(char));
  448. Assert.AreEqual ("char", tm.ElementName, "#1");
  449. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  450. Assert.AreEqual ("Char", tm.TypeName, "#3");
  451. Assert.AreEqual ("System.Char", tm.TypeFullName, "#4");
  452. }
  453. [Test]
  454. #if NET_2_0
  455. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  456. #endif
  457. public void TestCharTypeMapping_Array ()
  458. {
  459. XmlTypeMapping tm = Map (typeof (char[]));
  460. Assert.AreEqual ("ArrayOfChar", tm.ElementName, "#A1");
  461. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  462. #if NET_2_0
  463. Assert.AreEqual ("ArrayOfChar", tm.TypeName, "#A3");
  464. #else
  465. Assert.AreEqual ("Char[]", tm.TypeName, "#A3");
  466. #endif
  467. Assert.AreEqual ("System.Char[]", tm.TypeFullName, "#A4");
  468. tm = Map (typeof (char[][]));
  469. Assert.AreEqual ("ArrayOfArrayOfChar", tm.ElementName, "#B1");
  470. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  471. #if NET_2_0
  472. Assert.AreEqual ("ArrayOfArrayOfChar", tm.TypeName, "#B3");
  473. #else
  474. Assert.AreEqual ("Char[][]", tm.TypeName, "#B3");
  475. #endif
  476. Assert.AreEqual ("System.Char[][]", tm.TypeFullName, "#B4");
  477. tm = Map (typeof (char[][][]));
  478. Assert.AreEqual ("ArrayOfArrayOfArrayOfChar", tm.ElementName, "#C1");
  479. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  480. #if NET_2_0
  481. Assert.AreEqual ("ArrayOfArrayOfArrayOfChar", tm.TypeName, "#C3");
  482. #else
  483. Assert.AreEqual ("Char[][][]", tm.TypeName, "#C3");
  484. #endif
  485. Assert.AreEqual ("System.Char[][][]", tm.TypeFullName, "#C4");
  486. }
  487. [Test]
  488. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  489. public void TestXmlNodeTypeMapping ()
  490. {
  491. Type type = typeof (XmlNode);
  492. XmlTypeMapping tm = Map (type);
  493. Assert.AreEqual (string.Empty, tm.ElementName, "#A1");
  494. Assert.IsNull (tm.Namespace, "#A2");
  495. Assert.AreEqual ("XmlNode", tm.TypeName, "#A3");
  496. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#A4");
  497. tm = Map (type, AnotherNamespace);
  498. Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
  499. Assert.IsNull (tm.Namespace, "#B2");
  500. Assert.AreEqual ("XmlNode", tm.TypeName, "#B3");
  501. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#B4");
  502. XmlRootAttribute root = new XmlRootAttribute ("somename");
  503. root.Namespace = SomeNamespace;
  504. tm = Map (type, root);
  505. Assert.AreEqual ("somename", tm.ElementName, "#C1");
  506. Assert.IsNull (tm.Namespace, "#C2");
  507. Assert.AreEqual ("XmlNode", tm.TypeName, "#C3");
  508. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#C4");
  509. tm = Map (type, AnotherNamespace, root);
  510. Assert.AreEqual ("somename", tm.ElementName, "#D1");
  511. Assert.IsNull (tm.Namespace, "#D2");
  512. Assert.AreEqual ("XmlNode", tm.TypeName, "#D3");
  513. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#D4");
  514. root.Namespace = null;
  515. tm = Map (type, root);
  516. Assert.AreEqual ("somename", tm.ElementName, "#E1");
  517. Assert.IsNull (tm.Namespace, "#E2");
  518. Assert.AreEqual ("XmlNode", tm.TypeName, "#E3");
  519. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#E4");
  520. tm = Map (type, AnotherNamespace, root);
  521. Assert.AreEqual ("somename", tm.ElementName, "#F1");
  522. Assert.IsNull (tm.Namespace, "#F2");
  523. Assert.AreEqual ("XmlNode", tm.TypeName, "#F3");
  524. Assert.AreEqual ("System.Xml.XmlNode", tm.TypeFullName, "#F4");
  525. }
  526. [Test]
  527. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  528. public void TestXmlElementTypeMapping ()
  529. {
  530. Type type = typeof (XmlElement);
  531. XmlTypeMapping tm = Map (type);
  532. Assert.AreEqual (string.Empty, tm.ElementName, "#1");
  533. Assert.IsNull (tm.Namespace, "#2");
  534. Assert.AreEqual ("XmlElement", tm.TypeName, "#3");
  535. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#4");
  536. tm = Map (type, AnotherNamespace);
  537. Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
  538. Assert.IsNull (tm.Namespace, "#B2");
  539. Assert.AreEqual ("XmlElement", tm.TypeName, "#B3");
  540. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#B4");
  541. XmlRootAttribute root = new XmlRootAttribute ("somename");
  542. root.Namespace = SomeNamespace;
  543. tm = Map (type, root);
  544. Assert.AreEqual ("somename", tm.ElementName, "#C1");
  545. Assert.IsNull (tm.Namespace, "#C2");
  546. Assert.AreEqual ("XmlElement", tm.TypeName, "#C3");
  547. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#C4");
  548. tm = Map (type, AnotherNamespace, root);
  549. Assert.AreEqual ("somename", tm.ElementName, "#D1");
  550. Assert.IsNull (tm.Namespace, "#D2");
  551. Assert.AreEqual ("XmlElement", tm.TypeName, "#D3");
  552. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#D4");
  553. root.Namespace = null;
  554. tm = Map (type, root);
  555. Assert.AreEqual ("somename", tm.ElementName, "#E1");
  556. Assert.IsNull (tm.Namespace, "#E2");
  557. Assert.AreEqual ("XmlElement", tm.TypeName, "#E3");
  558. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#E4");
  559. tm = Map (type, AnotherNamespace, root);
  560. Assert.AreEqual ("somename", tm.ElementName, "#F1");
  561. Assert.IsNull (tm.Namespace, "#F2");
  562. Assert.AreEqual ("XmlElement", tm.TypeName, "#F3");
  563. Assert.AreEqual ("System.Xml.XmlElement", tm.TypeFullName, "#F4");
  564. }
  565. [Test]
  566. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  567. public void TestXmlNotationTypeMapping ()
  568. {
  569. Type type = typeof (XmlNotation);
  570. XmlTypeMapping tm = Map (type);
  571. Assert.AreEqual (string.Empty, tm.ElementName, "#1");
  572. Assert.IsNull (tm.Namespace, "#2");
  573. Assert.AreEqual ("XmlNotation", tm.TypeName, "#3");
  574. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#4");
  575. tm = Map (type, AnotherNamespace);
  576. Assert.AreEqual (string.Empty, tm.ElementName, "#B1");
  577. Assert.IsNull (tm.Namespace, "#B2");
  578. Assert.AreEqual ("XmlNotation", tm.TypeName, "#B3");
  579. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#B4");
  580. XmlRootAttribute root = new XmlRootAttribute ("somename");
  581. root.Namespace = SomeNamespace;
  582. tm = Map (type, root);
  583. Assert.AreEqual ("somename", tm.ElementName, "#C1");
  584. Assert.IsNull (tm.Namespace, "#C2");
  585. Assert.AreEqual ("XmlNotation", tm.TypeName, "#C3");
  586. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#C4");
  587. tm = Map (type, AnotherNamespace, root);
  588. Assert.AreEqual ("somename", tm.ElementName, "#D1");
  589. Assert.IsNull (tm.Namespace, "#D2");
  590. Assert.AreEqual ("XmlNotation", tm.TypeName, "#D3");
  591. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#D4");
  592. root.Namespace = null;
  593. tm = Map (type, root);
  594. Assert.AreEqual ("somename", tm.ElementName, "#E1");
  595. Assert.IsNull (tm.Namespace, "#E2");
  596. Assert.AreEqual ("XmlNotation", tm.TypeName, "#E3");
  597. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#E4");
  598. tm = Map (type, AnotherNamespace, root);
  599. Assert.AreEqual ("somename", tm.ElementName, "#F1");
  600. Assert.IsNull (tm.Namespace, "#F2");
  601. Assert.AreEqual ("XmlNotation", tm.TypeName, "#F3");
  602. Assert.AreEqual ("System.Xml.XmlNotation", tm.TypeFullName, "#F4");
  603. }
  604. [Test]
  605. public void TestXmlSerializableTypeMapping ()
  606. {
  607. XmlTypeMapping tm = Map (typeof (Employee));
  608. Assert.AreEqual ("Employee", tm.ElementName, "#1");
  609. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  610. Assert.AreEqual ("Employee", tm.TypeName, "#3");
  611. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee", tm.TypeFullName, "#4");
  612. }
  613. [Test]
  614. #if NET_2_0
  615. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  616. #endif
  617. public void TestXmlSerializableTypeMapping_Array ()
  618. {
  619. XmlTypeMapping tm = Map (typeof (Employee[]));
  620. Assert.AreEqual ("ArrayOfEmployee", tm.ElementName, "#A1");
  621. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  622. #if NET_2_0
  623. Assert.AreEqual ("ArrayOfEmployee", tm.TypeName, "#A3");
  624. #else
  625. Assert.AreEqual ("Employee[]", tm.TypeName, "#A3");
  626. #endif
  627. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[]", tm.TypeFullName, "#A4");
  628. tm = Map (typeof (Employee[][]));
  629. Assert.AreEqual ("ArrayOfArrayOfEmployee", tm.ElementName, "#B1");
  630. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  631. #if NET_2_0
  632. Assert.AreEqual ("ArrayOfArrayOfEmployee", tm.TypeName, "#B3");
  633. #else
  634. Assert.AreEqual ("Employee[][]", tm.TypeName, "#B3");
  635. #endif
  636. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[][]", tm.TypeFullName, "#B4");
  637. tm = Map (typeof (Employee[][][]));
  638. Assert.AreEqual ("ArrayOfArrayOfArrayOfEmployee", tm.ElementName, "#C1");
  639. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  640. #if NET_2_0
  641. Assert.AreEqual ("ArrayOfArrayOfArrayOfEmployee", tm.TypeName, "#C3");
  642. #else
  643. Assert.AreEqual ("Employee[][][]", tm.TypeName, "#C3");
  644. #endif
  645. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.Employee[][][]", tm.TypeFullName, "#C4");
  646. }
  647. [Test]
  648. public void TestClassTypeMapping_NestedStruct ()
  649. {
  650. XmlTypeMapping tm = Map (typeof (NestedStruct));
  651. Assert.AreEqual ("NestedStruct", tm.ElementName, "#1");
  652. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  653. Assert.AreEqual ("NestedStruct", tm.TypeName, "#3");
  654. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.NestedStruct", tm.TypeFullName, "#4");
  655. }
  656. [Test]
  657. [ExpectedException (typeof (ArgumentNullException))]
  658. public void TestNullTypeMapping()
  659. {
  660. Map(null);
  661. }
  662. [Test]
  663. public void TestIntTypeMappingWithDefaultNamespaces()
  664. {
  665. XmlTypeMapping tm = Map(typeof(int), SomeNamespace);
  666. Assert.AreEqual ("int", tm.ElementName, "#1");
  667. Assert.AreEqual (SomeNamespace, tm.Namespace, "#2");
  668. Assert.AreEqual ("Int32", tm.TypeName, "#3");
  669. Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
  670. }
  671. [Test]
  672. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  673. public void TestStructTypeMapping ()
  674. {
  675. XmlTypeMapping tm = Map (typeof (TimeSpan));
  676. Assert.AreEqual ("TimeSpan", tm.ElementName, "#1");
  677. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  678. Assert.AreEqual ("TimeSpan", tm.TypeName, "#3");
  679. Assert.AreEqual ("System.TimeSpan", tm.TypeFullName, "#4");
  680. }
  681. [Test]
  682. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  683. public void TestStructTypeMapping_Array ()
  684. {
  685. XmlTypeMapping tm = Map (typeof (TimeSpan[]));
  686. Assert.AreEqual ("ArrayOfTimeSpan", tm.ElementName, "#A1");
  687. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  688. #if NET_2_0
  689. Assert.AreEqual ("ArrayOfTimeSpan", tm.TypeName, "#A3");
  690. #else
  691. Assert.AreEqual ("TimeSpan[]", tm.TypeName, "#A3");
  692. #endif
  693. Assert.AreEqual ("System.TimeSpan[]", tm.TypeFullName, "#A4");
  694. tm = Map (typeof (TimeSpan[][]));
  695. Assert.AreEqual ("ArrayOfArrayOfTimeSpan", tm.ElementName, "#B1");
  696. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  697. #if NET_2_0
  698. Assert.AreEqual ("ArrayOfArrayOfTimeSpan", tm.TypeName, "#B3");
  699. #else
  700. Assert.AreEqual ("TimeSpan[][]", tm.TypeName, "#B3");
  701. #endif
  702. Assert.AreEqual ("System.TimeSpan[][]", tm.TypeFullName, "#B4");
  703. tm = Map (typeof (TimeSpan[][][]));
  704. Assert.AreEqual ("ArrayOfArrayOfArrayOfTimeSpan", tm.ElementName, "#C1");
  705. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  706. #if NET_2_0
  707. Assert.AreEqual ("ArrayOfArrayOfArrayOfTimeSpan", tm.TypeName, "#C3");
  708. #else
  709. Assert.AreEqual ("TimeSpan[][][]", tm.TypeName, "#C3");
  710. #endif
  711. Assert.AreEqual ("System.TimeSpan[][][]", tm.TypeFullName, "#C4");
  712. }
  713. [Test]
  714. public void TestEnumTypeMapping ()
  715. {
  716. XmlTypeMapping tm = Map (typeof (AttributeTargets));
  717. Assert.AreEqual ("AttributeTargets", tm.ElementName, "#1");
  718. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  719. Assert.AreEqual ("AttributeTargets", tm.TypeName, "#3");
  720. Assert.AreEqual ("System.AttributeTargets", tm.TypeFullName, "#4");
  721. }
  722. [Test]
  723. #if NET_2_0
  724. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  725. #endif
  726. public void TestEnumTypeMapping_Array ()
  727. {
  728. XmlTypeMapping tm = Map (typeof (AttributeTargets[]));
  729. Assert.AreEqual ("ArrayOfAttributeTargets", tm.ElementName, "#A1");
  730. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  731. #if NET_2_0
  732. Assert.AreEqual ("ArrayOfAttributeTargets", tm.TypeName, "#A3");
  733. #else
  734. Assert.AreEqual ("AttributeTargets[]", tm.TypeName, "#A3");
  735. #endif
  736. Assert.AreEqual ("System.AttributeTargets[]", tm.TypeFullName, "#A4");
  737. tm = Map (typeof (AttributeTargets[][]));
  738. Assert.AreEqual ("ArrayOfArrayOfAttributeTargets", tm.ElementName, "#B1");
  739. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  740. #if NET_2_0
  741. Assert.AreEqual ("ArrayOfArrayOfAttributeTargets", tm.TypeName, "#B3");
  742. #else
  743. Assert.AreEqual ("AttributeTargets[][]", tm.TypeName, "#B3");
  744. #endif
  745. Assert.AreEqual ("System.AttributeTargets[][]", tm.TypeFullName, "#B4");
  746. tm = Map (typeof (AttributeTargets[][][]));
  747. Assert.AreEqual ("ArrayOfArrayOfArrayOfAttributeTargets", tm.ElementName, "#C1");
  748. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  749. #if NET_2_0
  750. Assert.AreEqual ("ArrayOfArrayOfArrayOfAttributeTargets", tm.TypeName, "#C3");
  751. #else
  752. Assert.AreEqual ("AttributeTargets[][][]", tm.TypeName, "#C3");
  753. #endif
  754. Assert.AreEqual ("System.AttributeTargets[][][]", tm.TypeFullName, "#C4");
  755. }
  756. [Test]
  757. public void TestClassTypeMapping()
  758. {
  759. XmlTypeMapping tm = Map (typeof (SimpleClass));
  760. Assert.AreEqual ("SimpleClass", tm.ElementName, "#1");
  761. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  762. Assert.AreEqual ("SimpleClass", tm.TypeName, "#3");
  763. Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass", tm.TypeFullName, "#4");
  764. }
  765. [Test]
  766. #if NET_2_0
  767. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  768. #endif
  769. public void TestClassTypeMapping_Array ()
  770. {
  771. XmlTypeMapping tm = Map (typeof (SimpleClass[]));
  772. Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#A1");
  773. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  774. #if NET_2_0
  775. Assert.AreEqual ("ArrayOfSimpleClass", tm.TypeName, "#A3");
  776. #else
  777. Assert.AreEqual ("SimpleClass[]", tm.TypeName, "#A3");
  778. #endif
  779. Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[]", tm.TypeFullName, "#A4");
  780. tm = Map (typeof (SimpleClass[][]));
  781. Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
  782. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  783. #if NET_2_0
  784. Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.TypeName, "#B3");
  785. #else
  786. Assert.AreEqual ("SimpleClass[][]", tm.TypeName, "#B3");
  787. #endif
  788. Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[][]", tm.TypeFullName, "#B4");
  789. tm = Map (typeof (SimpleClass[][][]));
  790. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
  791. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  792. #if NET_2_0
  793. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.TypeName, "#C3");
  794. #else
  795. Assert.AreEqual ("SimpleClass[][][]", tm.TypeName, "#C3");
  796. #endif
  797. Assert.AreEqual ("MonoTests.System.Xml.TestClasses.SimpleClass[][][]", tm.TypeFullName, "#C4");
  798. }
  799. [Test]
  800. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  801. public void TypeMapping_IEnumerable_SimpleClass ()
  802. {
  803. XmlTypeMapping tm = Map (typeof (SimpleClassEnumerable));
  804. Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#1");
  805. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  806. Assert.AreEqual ("SimpleClassEnumerable", tm.TypeName, "#3");
  807. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable", tm.TypeFullName, "#4");
  808. tm = Map (typeof (SimpleClassEnumerable[]));
  809. Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#A1");
  810. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  811. #if NET_2_0
  812. Assert.AreEqual ("ArrayOfSimpleClassEnumerable", tm.TypeName, "#A3");
  813. #else
  814. Assert.AreEqual ("SimpleClassEnumerable[]", tm.TypeName, "#A3");
  815. #endif
  816. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[]", tm.TypeFullName, "#A4");
  817. tm = Map (typeof (SimpleClassEnumerable[][]));
  818. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
  819. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  820. #if NET_2_0
  821. Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerable", tm.TypeName, "#B3");
  822. #else
  823. Assert.AreEqual ("SimpleClassEnumerable[][]", tm.TypeName, "#B3");
  824. #endif
  825. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[][]", tm.TypeFullName, "#B4");
  826. tm = Map (typeof (SimpleClassEnumerable[][][]));
  827. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
  828. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  829. #if NET_2_0
  830. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerable", tm.TypeName, "#C3");
  831. #else
  832. Assert.AreEqual ("SimpleClassEnumerable[][][]", tm.TypeName, "#C3");
  833. #endif
  834. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerable[][][]", tm.TypeFullName, "#C4");
  835. }
  836. [Test]
  837. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  838. public void TypeMapping_IEnumerable_Object ()
  839. {
  840. XmlTypeMapping tm = Map (typeof (ObjectEnumerable));
  841. Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
  842. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  843. Assert.AreEqual ("ObjectEnumerable", tm.TypeName, "#3");
  844. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable", tm.TypeFullName, "#4");
  845. tm = Map (typeof (ObjectEnumerable[]));
  846. Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
  847. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  848. #if NET_2_0
  849. Assert.AreEqual ("ArrayOfObjectEnumerable", tm.TypeName, "#A3");
  850. #else
  851. Assert.AreEqual ("ObjectEnumerable[]", tm.TypeName, "#A3");
  852. #endif
  853. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[]", tm.TypeFullName, "#A4");
  854. tm = Map (typeof (ObjectEnumerable[][]));
  855. Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
  856. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  857. #if NET_2_0
  858. Assert.AreEqual ("ArrayOfArrayOfObjectEnumerable", tm.TypeName, "#B3");
  859. #else
  860. Assert.AreEqual ("ObjectEnumerable[][]", tm.TypeName, "#B3");
  861. #endif
  862. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[][]", tm.TypeFullName, "#B4");
  863. tm = Map (typeof (ObjectEnumerable[][][]));
  864. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
  865. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  866. #if NET_2_0
  867. Assert.AreEqual ("ArrayOfArrayOfArrayOfObjectEnumerable", tm.TypeName, "#C3");
  868. #else
  869. Assert.AreEqual ("ObjectEnumerable[][][]", tm.TypeName, "#C3");
  870. #endif
  871. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectEnumerable[][][]", tm.TypeFullName, "#C4");
  872. }
  873. [Test]
  874. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  875. [ExpectedException (typeof (InvalidOperationException))]
  876. public void TypeMapping_IEnumerable_Object_NoMatchingAddMethod ()
  877. {
  878. Map (typeof (ObjectEnumerableNoMatchingAddMethod));
  879. }
  880. [Test]
  881. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  882. [ExpectedException (typeof (InvalidOperationException))]
  883. public void TypeMapping_IEnumerable_Object_NoMatchingAddMethod_Array ()
  884. {
  885. Map (typeof (ObjectEnumerableNoMatchingAddMethod[]));
  886. }
  887. [Test]
  888. #if NET_2_0
  889. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  890. #endif
  891. public void TypeMapping_IEnumerable_SimpleClass_PrivateCurrent ()
  892. {
  893. XmlTypeMapping tm = Map (typeof (SimpleClassEnumerablePrivateCurrent));
  894. Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
  895. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  896. Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent", tm.TypeName, "#3");
  897. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent", tm.TypeFullName, "#4");
  898. tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[]));
  899. Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
  900. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  901. #if NET_2_0
  902. Assert.AreEqual ("ArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#A3");
  903. #else
  904. Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[]", tm.TypeName, "#A3");
  905. #endif
  906. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[]", tm.TypeFullName, "#A4");
  907. tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[][]));
  908. Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
  909. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  910. #if NET_2_0
  911. Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#B3");
  912. #else
  913. Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[][]", tm.TypeName, "#B3");
  914. #endif
  915. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[][]", tm.TypeFullName, "#B4");
  916. tm = Map (typeof (SimpleClassEnumerablePrivateCurrent[][][]));
  917. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
  918. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  919. #if NET_2_0
  920. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerablePrivateCurrent", tm.TypeName, "#C3");
  921. #else
  922. Assert.AreEqual ("SimpleClassEnumerablePrivateCurrent[][][]", tm.TypeName, "#C3");
  923. #endif
  924. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateCurrent[][][]", tm.TypeFullName, "#C4");
  925. }
  926. [Test]
  927. #if NET_2_0
  928. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  929. #endif
  930. #if ONLY_1_1
  931. [Category ("NotDotNet")] // results in NullReferenceException in .NET 1.1 (SP1)
  932. #endif
  933. public void TypeMapping_IEnumerable_SimpleClass_PrivateGetEnumerator ()
  934. {
  935. XmlTypeMapping tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator));
  936. Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
  937. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  938. Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#3");
  939. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator", tm.TypeFullName, "#4");
  940. tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[]));
  941. Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
  942. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  943. #if NET_2_0
  944. Assert.AreEqual ("ArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#A3");
  945. #else
  946. Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[]", tm.TypeName, "#A3");
  947. #endif
  948. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[]", tm.TypeFullName, "#A4");
  949. tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[][]));
  950. Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
  951. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  952. #if NET_2_0
  953. Assert.AreEqual ("ArrayOfArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#B3");
  954. #else
  955. Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[][]", tm.TypeName, "#B3");
  956. #endif
  957. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[][]", tm.TypeFullName, "#B4");
  958. tm = Map (typeof (SimpleClassEnumerablePrivateGetEnumerator[][][]));
  959. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
  960. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  961. #if NET_2_0
  962. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassEnumerablePrivateGetEnumerator", tm.TypeName, "#C3");
  963. #else
  964. Assert.AreEqual ("SimpleClassEnumerablePrivateGetEnumerator[][][]", tm.TypeName, "#C3");
  965. #endif
  966. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassEnumerablePrivateGetEnumerator[][][]", tm.TypeFullName, "#C4");
  967. }
  968. [Test]
  969. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  970. [ExpectedException (typeof (InvalidOperationException))]
  971. public void TypeMapping_ICollection_Object_NoMatchingAddMethod ()
  972. {
  973. Map (typeof (ObjectCollectionNoMatchingAddMethod));
  974. }
  975. [Test]
  976. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  977. [ExpectedException (typeof (InvalidOperationException))]
  978. public void TypeMapping_ICollection_Object_NoMatchingAddMethod_Array ()
  979. {
  980. Map (typeof (ObjectCollectionNoMatchingAddMethod[]));
  981. }
  982. [Test]
  983. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  984. [ExpectedException (typeof (InvalidOperationException))]
  985. public void TypeMapping_ICollection_SimpleClass_NoMatchingAddMethod ()
  986. {
  987. Map (typeof (SimpleClassCollectionNoMatchingAddMethod));
  988. }
  989. [Test]
  990. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  991. [ExpectedException (typeof (InvalidOperationException))]
  992. public void TypeMapping_ICollection_SimpleClass_NoMatchingAddMethod_Array ()
  993. {
  994. Map (typeof (SimpleClassCollectionNoMatchingAddMethod[]));
  995. }
  996. [Test]
  997. #if NET_2_0
  998. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  999. #endif
  1000. public void TypeMapping_ICollection_SimpleClass ()
  1001. {
  1002. XmlTypeMapping tm = Map (typeof (SimpleClassCollection));
  1003. Assert.AreEqual ("ArrayOfSimpleClass", tm.ElementName, "#1");
  1004. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  1005. Assert.AreEqual ("SimpleClassCollection", tm.TypeName, "#3");
  1006. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection", tm.TypeFullName, "#4");
  1007. tm = Map (typeof (SimpleClassCollection[]));
  1008. Assert.AreEqual ("ArrayOfArrayOfSimpleClass", tm.ElementName, "#A1");
  1009. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  1010. #if NET_2_0
  1011. Assert.AreEqual ("ArrayOfSimpleClassCollection", tm.TypeName, "#A3");
  1012. #else
  1013. Assert.AreEqual ("SimpleClassCollection[]", tm.TypeName, "#A3");
  1014. #endif
  1015. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[]", tm.TypeFullName, "#A4");
  1016. tm = Map (typeof (SimpleClassCollection[][]));
  1017. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#B1");
  1018. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  1019. #if NET_2_0
  1020. Assert.AreEqual ("ArrayOfArrayOfSimpleClassCollection", tm.TypeName, "#B3");
  1021. #else
  1022. Assert.AreEqual ("SimpleClassCollection[][]", tm.TypeName, "#B3");
  1023. #endif
  1024. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[][]", tm.TypeFullName, "#B4");
  1025. tm = Map (typeof (SimpleClassCollection[][][]));
  1026. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfSimpleClass", tm.ElementName, "#C1");
  1027. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  1028. #if NET_2_0
  1029. Assert.AreEqual ("ArrayOfArrayOfArrayOfSimpleClassCollection", tm.TypeName, "#C3");
  1030. #else
  1031. Assert.AreEqual ("SimpleClassCollection[][][]", tm.TypeName, "#C3");
  1032. #endif
  1033. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.SimpleClassCollection[][][]", tm.TypeFullName, "#C4");
  1034. }
  1035. [Test]
  1036. #if NET_2_0
  1037. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  1038. #endif
  1039. public void TypeMapping_ICollection_Object ()
  1040. {
  1041. XmlTypeMapping tm = Map (typeof (ObjectCollection));
  1042. Assert.AreEqual ("ArrayOfAnyType", tm.ElementName, "#1");
  1043. Assert.AreEqual (string.Empty, tm.Namespace, "#2");
  1044. Assert.AreEqual ("ObjectCollection", tm.TypeName, "#3");
  1045. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection", tm.TypeFullName, "#4");
  1046. tm = Map (typeof (ObjectCollection[]));
  1047. Assert.AreEqual ("ArrayOfArrayOfAnyType", tm.ElementName, "#A1");
  1048. Assert.AreEqual (string.Empty, tm.Namespace, "#A2");
  1049. #if NET_2_0
  1050. Assert.AreEqual ("ArrayOfObjectCollection", tm.TypeName, "#A3");
  1051. #else
  1052. Assert.AreEqual ("ObjectCollection[]", tm.TypeName, "#A3");
  1053. #endif
  1054. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[]", tm.TypeFullName, "#A4");
  1055. tm = Map (typeof (ObjectCollection[][]));
  1056. Assert.AreEqual ("ArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#B1");
  1057. Assert.AreEqual (string.Empty, tm.Namespace, "#B2");
  1058. #if NET_2_0
  1059. Assert.AreEqual ("ArrayOfArrayOfObjectCollection", tm.TypeName, "#B3");
  1060. #else
  1061. Assert.AreEqual ("ObjectCollection[][]", tm.TypeName, "#B3");
  1062. #endif
  1063. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[][]", tm.TypeFullName, "#B4");
  1064. tm = Map (typeof (ObjectCollection[][][]));
  1065. Assert.AreEqual ("ArrayOfArrayOfArrayOfArrayOfAnyType", tm.ElementName, "#C1");
  1066. Assert.AreEqual (string.Empty, tm.Namespace, "#C2");
  1067. #if NET_2_0
  1068. Assert.AreEqual ("ArrayOfArrayOfArrayOfObjectCollection", tm.TypeName, "#C3");
  1069. #else
  1070. Assert.AreEqual ("ObjectCollection[][][]", tm.TypeName, "#C3");
  1071. #endif
  1072. Assert.AreEqual ("MonoTests.System.XmlSerialization.XmlReflectionImporterTests.ObjectCollection[][][]", tm.TypeFullName, "#C4");
  1073. }
  1074. [Test]
  1075. [ExpectedException (typeof (InvalidOperationException))]
  1076. public void TypeMapping_ICollection_Object_NoIntIndexer ()
  1077. {
  1078. Map (typeof (ObjectCollectionNoIntIndexer));
  1079. }
  1080. [Test]
  1081. [ExpectedException (typeof (InvalidOperationException))]
  1082. public void TypeMapping_ICollection_Object_NoIntIndexer_Array ()
  1083. {
  1084. Map (typeof (ObjectCollectionNoIntIndexer[]));
  1085. }
  1086. [Test]
  1087. [ExpectedException (typeof (InvalidOperationException))]
  1088. public void TypeMapping_ICollection_SimpleClass_NoIntIndexer ()
  1089. {
  1090. Map (typeof (SimpleClassCollectionNoIntIndexer));
  1091. }
  1092. [Test]
  1093. [ExpectedException (typeof (InvalidOperationException))]
  1094. public void TypeMapping_ICollection_SimpleClass_NoIntIndexer_Array ()
  1095. {
  1096. Map (typeof (SimpleClassCollectionNoIntIndexer[]));
  1097. }
  1098. [Test]
  1099. [ExpectedException (typeof (InvalidOperationException))]
  1100. public void TypeMapping_WrongChoices ()
  1101. {
  1102. // Type MonoTests.System.Xml.TestClasses.ItemChoiceType is missing
  1103. // enumeration value 'StrangeOne' for element 'StrangeOne' from
  1104. // namespace ''.
  1105. Map (typeof (WrongChoices));
  1106. }
  1107. [Test]
  1108. [Category ("NotWorking")] // mark it NotWorking until fixes have landed in svn
  1109. public void TestImportMembersMapping()
  1110. {
  1111. Type type = typeof(SimpleClass);
  1112. XmlAttributes attrs = new XmlAttributes();
  1113. XmlAttributeOverrides overrides = new XmlAttributeOverrides();
  1114. overrides.Add(typeof(SimpleClass), attrs);
  1115. XmlReflectionMember[] members = new XmlReflectionMember[0];
  1116. XmlMembersMapping mm;
  1117. try
  1118. {
  1119. mm = MembersMap(type, overrides, members, true);
  1120. Assert.Fail("Should not be able to fetch an empty XmlMembersMapping");
  1121. }
  1122. catch (Exception)
  1123. {
  1124. }
  1125. XmlReflectionMember rm = new XmlReflectionMember();
  1126. rm.IsReturnValue = false;
  1127. rm.MemberName = "something";
  1128. rm.MemberType = typeof(string);
  1129. members = new XmlReflectionMember[1];
  1130. members[0] = rm;
  1131. mm = MembersMap(type, overrides, members, false);
  1132. Equals(mm.Count, 1);
  1133. XmlMemberMapping smm = mm[0];
  1134. Assert.IsFalse (smm.Any, "#1");
  1135. Assert.AreEqual ("something", smm.ElementName, "#2");
  1136. Assert.AreEqual ("something", smm.MemberName, "#3");
  1137. Assert.IsNull (smm.Namespace, "#4");
  1138. Assert.AreEqual ("System.String", smm.TypeFullName, "#5");
  1139. Assert.AreEqual ("string", smm.TypeName, "#6");
  1140. #if NET_2_0
  1141. Assert.AreEqual (XmlSchemaNamespace, smm.TypeNamespace, "#7");
  1142. #else
  1143. Assert.IsNull (smm.TypeNamespace, "#7");
  1144. #endif
  1145. rm = new XmlReflectionMember();
  1146. rm.IsReturnValue = false;
  1147. rm.MemberName = "nothing";
  1148. rm.MemberType = typeof(string);
  1149. members = new XmlReflectionMember[1];
  1150. members[0] = rm;
  1151. mm = MembersMap(type, overrides, members, false);
  1152. Assert.AreEqual (1, mm.Count, "#8");
  1153. }
  1154. [Test]
  1155. public void TestIntTypeMappingWithXmlRootAttribute()
  1156. {
  1157. const string TheNamespace = "another:urn";
  1158. XmlRootAttribute root = new XmlRootAttribute("price");
  1159. root.Namespace = TheNamespace;
  1160. XmlTypeMapping tm = Map(typeof(int), root);
  1161. Assert.AreEqual ("price", tm.ElementName, "#1");
  1162. Assert.AreEqual (TheNamespace, tm.Namespace, "#2");
  1163. Assert.AreEqual ("Int32", tm.TypeName, "#3");
  1164. Assert.AreEqual ("System.Int32", tm.TypeFullName, "#4");
  1165. }
  1166. [Test]
  1167. [ExpectedException (typeof (InvalidOperationException))]
  1168. public void TestSerializeWrongChoice ()
  1169. {
  1170. new XmlSerializer (typeof(WrongChoices));
  1171. }
  1172. public class Employee : IXmlSerializable
  1173. {
  1174. private string _firstName;
  1175. private string _lastName;
  1176. private string _address;
  1177. public XmlSchema GetSchema ()
  1178. {
  1179. return null;
  1180. }
  1181. public void WriteXml (XmlWriter writer)
  1182. {
  1183. writer.WriteStartElement ("employee", "urn:devx-com");
  1184. writer.WriteAttributeString ("firstName", _firstName);
  1185. writer.WriteAttributeString ("lastName", _lastName);
  1186. writer.WriteAttributeString ("address", _address);
  1187. writer.WriteEndElement ();
  1188. }
  1189. public void ReadXml (XmlReader reader)
  1190. {
  1191. XmlNodeType type = reader.MoveToContent ();
  1192. if (type == XmlNodeType.Element && reader.LocalName == "employee") {
  1193. _firstName = reader["firstName"];
  1194. _lastName = reader["lastName"];
  1195. _address = reader["address"];
  1196. }
  1197. }
  1198. }
  1199. public class NestedStruct
  1200. {
  1201. public TimeSpan Period = TimeSpan.MaxValue;
  1202. }
  1203. public class ObjectEnumerable : IEnumerable
  1204. {
  1205. public void Add (int value)
  1206. {
  1207. }
  1208. public void Add (object value)
  1209. {
  1210. }
  1211. public IEnumerator GetEnumerator ()
  1212. {
  1213. return new ArrayList ().GetEnumerator ();
  1214. }
  1215. }
  1216. public class SimpleClassEnumerable : IEnumerable
  1217. {
  1218. public void Add (int value)
  1219. {
  1220. }
  1221. public void Add (object value)
  1222. {
  1223. }
  1224. IEnumerator IEnumerable.GetEnumerator ()
  1225. {
  1226. return GetEnumerator ();
  1227. }
  1228. public SimpleClassEnumerator GetEnumerator ()
  1229. {
  1230. return new SimpleClassEnumerator (new ArrayList ());
  1231. }
  1232. }
  1233. public class SimpleClassEnumerablePrivateGetEnumerator : IEnumerable
  1234. {
  1235. public void Add (object value)
  1236. {
  1237. }
  1238. IEnumerator IEnumerable.GetEnumerator ()
  1239. {
  1240. return new ArrayList ().GetEnumerator ();
  1241. }
  1242. }
  1243. public class SimpleClassEnumerablePrivateCurrent : IEnumerable
  1244. {
  1245. public void Add (object value)
  1246. {
  1247. }
  1248. IEnumerator IEnumerable.GetEnumerator ()
  1249. {
  1250. return GetEnumerator ();
  1251. }
  1252. public NoCurrentEnumerator GetEnumerator ()
  1253. {
  1254. return new NoCurrentEnumerator (new ArrayList ());
  1255. }
  1256. }
  1257. // GetEnumerator().Current returns object, but there's no corresponding
  1258. // Add (System.Object) method
  1259. public class ObjectEnumerableNoMatchingAddMethod : IEnumerable
  1260. {
  1261. public void Add (int value)
  1262. {
  1263. }
  1264. public IEnumerator GetEnumerator ()
  1265. {
  1266. return new ArrayList ().GetEnumerator ();
  1267. }
  1268. }
  1269. // GetEnumerator().Current returns SimpleClass, but there's no
  1270. // corresponding Add (SimpleClass) method
  1271. public class SimpleClassCollectionNoMatchingAddMethod : ICollection
  1272. {
  1273. public SimpleClass this[int index]
  1274. {
  1275. get
  1276. {
  1277. return (SimpleClass) _list[index];
  1278. }
  1279. }
  1280. public int Count
  1281. {
  1282. get { return _list.Count; }
  1283. }
  1284. public bool IsSynchronized
  1285. {
  1286. get { return _list.IsSynchronized; }
  1287. }
  1288. public object SyncRoot
  1289. {
  1290. get { return _list.SyncRoot; }
  1291. }
  1292. public void CopyTo (Array array, int index)
  1293. {
  1294. _list.CopyTo (array, index);
  1295. }
  1296. IEnumerator IEnumerable.GetEnumerator ()
  1297. {
  1298. return GetEnumerator ();
  1299. }
  1300. public SimpleClassEnumerator GetEnumerator ()
  1301. {
  1302. return new SimpleClassEnumerator (_list);
  1303. }
  1304. private ArrayList _list = new ArrayList ();
  1305. }
  1306. // GetEnumerator().Current returns object, but there's no corresponding
  1307. // Add (System.Object) method
  1308. public class ObjectCollectionNoMatchingAddMethod : ICollection
  1309. {
  1310. public object this[int index]
  1311. {
  1312. get
  1313. {
  1314. return _list[index];
  1315. }
  1316. }
  1317. public int Count
  1318. {
  1319. get { return _list.Count; }
  1320. }
  1321. public bool IsSynchronized
  1322. {
  1323. get { return _list.IsSynchronized; }
  1324. }
  1325. public object SyncRoot
  1326. {
  1327. get { return _list.SyncRoot; }
  1328. }
  1329. public void CopyTo (Array array, int index)
  1330. {
  1331. _list.CopyTo (array, index);
  1332. }
  1333. IEnumerator IEnumerable.GetEnumerator ()
  1334. {
  1335. return GetEnumerator ();
  1336. }
  1337. public IEnumerator GetEnumerator ()
  1338. {
  1339. return _list.GetEnumerator ();
  1340. }
  1341. private ArrayList _list = new ArrayList ();
  1342. }
  1343. // Does not have int indexer.
  1344. public class SimpleClassCollectionNoIntIndexer : ICollection
  1345. {
  1346. public SimpleClass this[string name]
  1347. {
  1348. get
  1349. {
  1350. return new SimpleClass ();
  1351. }
  1352. }
  1353. public int Count
  1354. {
  1355. get { return _list.Count; }
  1356. }
  1357. public bool IsSynchronized
  1358. {
  1359. get { return _list.IsSynchronized; }
  1360. }
  1361. public object SyncRoot
  1362. {
  1363. get { return _list.SyncRoot; }
  1364. }
  1365. public void CopyTo (Array array, int index)
  1366. {
  1367. _list.CopyTo (array, index);
  1368. }
  1369. IEnumerator IEnumerable.GetEnumerator ()
  1370. {
  1371. return GetEnumerator ();
  1372. }
  1373. public SimpleClassEnumerator GetEnumerator ()
  1374. {
  1375. return new SimpleClassEnumerator (_list);
  1376. }
  1377. public void Add (SimpleClass value)
  1378. {
  1379. _list.Add (value);
  1380. }
  1381. private ArrayList _list = new ArrayList ();
  1382. }
  1383. // Does not have int indexer.
  1384. public class ObjectCollectionNoIntIndexer : ICollection
  1385. {
  1386. public object this[string name]
  1387. {
  1388. get
  1389. {
  1390. return new SimpleClass ();
  1391. }
  1392. }
  1393. public int Count
  1394. {
  1395. get { return _list.Count; }
  1396. }
  1397. public bool IsSynchronized
  1398. {
  1399. get { return _list.IsSynchronized; }
  1400. }
  1401. public object SyncRoot
  1402. {
  1403. get { return _list.SyncRoot; }
  1404. }
  1405. public void CopyTo (Array array, int index)
  1406. {
  1407. _list.CopyTo (array, index);
  1408. }
  1409. public IEnumerator GetEnumerator ()
  1410. {
  1411. return _list.GetEnumerator ();
  1412. }
  1413. public void Add (object value)
  1414. {
  1415. _list.Add (value);
  1416. }
  1417. private ArrayList _list = new ArrayList ();
  1418. }
  1419. public class SimpleClassCollection : ICollection
  1420. {
  1421. public SimpleClass this[int index]
  1422. {
  1423. get
  1424. {
  1425. return (SimpleClass) _list[index];
  1426. }
  1427. }
  1428. public int Count
  1429. {
  1430. get { return _list.Count; }
  1431. }
  1432. public bool IsSynchronized
  1433. {
  1434. get { return _list.IsSynchronized; }
  1435. }
  1436. public object SyncRoot
  1437. {
  1438. get { return _list.SyncRoot; }
  1439. }
  1440. public void CopyTo (Array array, int index)
  1441. {
  1442. _list.CopyTo (array, index);
  1443. }
  1444. IEnumerator IEnumerable.GetEnumerator ()
  1445. {
  1446. return GetEnumerator ();
  1447. }
  1448. public SimpleClassEnumerator GetEnumerator ()
  1449. {
  1450. return new SimpleClassEnumerator (_list);
  1451. }
  1452. public void Add (SimpleClass value)
  1453. {
  1454. _list.Add (value);
  1455. }
  1456. private ArrayList _list = new ArrayList ();
  1457. }
  1458. public class ObjectCollection : ICollection
  1459. {
  1460. public object this[int name]
  1461. {
  1462. get
  1463. {
  1464. return new SimpleClass ();
  1465. }
  1466. }
  1467. public int Count
  1468. {
  1469. get { return _list.Count; }
  1470. }
  1471. public bool IsSynchronized
  1472. {
  1473. get { return _list.IsSynchronized; }
  1474. }
  1475. public object SyncRoot
  1476. {
  1477. get { return _list.SyncRoot; }
  1478. }
  1479. public void CopyTo (Array array, int index)
  1480. {
  1481. _list.CopyTo (array, index);
  1482. }
  1483. public IEnumerator GetEnumerator ()
  1484. {
  1485. return _list.GetEnumerator ();
  1486. }
  1487. public void Add (object value)
  1488. {
  1489. _list.Add (value);
  1490. }
  1491. private ArrayList _list = new ArrayList ();
  1492. }
  1493. public class SimpleClassEnumerator : IEnumerator
  1494. {
  1495. internal SimpleClassEnumerator (ArrayList arguments)
  1496. {
  1497. IEnumerable temp = (IEnumerable) (arguments);
  1498. _baseEnumerator = temp.GetEnumerator ();
  1499. }
  1500. public SimpleClass Current
  1501. {
  1502. get { return (SimpleClass) _baseEnumerator.Current; }
  1503. }
  1504. object IEnumerator.Current
  1505. {
  1506. get { return _baseEnumerator.Current; }
  1507. }
  1508. public bool MoveNext ()
  1509. {
  1510. return _baseEnumerator.MoveNext ();
  1511. }
  1512. bool IEnumerator.MoveNext ()
  1513. {
  1514. return _baseEnumerator.MoveNext ();
  1515. }
  1516. public void Reset ()
  1517. {
  1518. _baseEnumerator.Reset ();
  1519. }
  1520. void IEnumerator.Reset ()
  1521. {
  1522. _baseEnumerator.Reset ();
  1523. }
  1524. private IEnumerator _baseEnumerator;
  1525. }
  1526. public class NoCurrentEnumerator : IEnumerator
  1527. {
  1528. internal NoCurrentEnumerator (ArrayList arguments)
  1529. {
  1530. IEnumerable temp = (IEnumerable) (arguments);
  1531. _baseEnumerator = temp.GetEnumerator ();
  1532. }
  1533. object IEnumerator.Current
  1534. {
  1535. get { return _baseEnumerator.Current; }
  1536. }
  1537. public bool MoveNext ()
  1538. {
  1539. return _baseEnumerator.MoveNext ();
  1540. }
  1541. bool IEnumerator.MoveNext ()
  1542. {
  1543. return _baseEnumerator.MoveNext ();
  1544. }
  1545. public void Reset ()
  1546. {
  1547. _baseEnumerator.Reset ();
  1548. }
  1549. void IEnumerator.Reset ()
  1550. {
  1551. _baseEnumerator.Reset ();
  1552. }
  1553. private IEnumerator _baseEnumerator;
  1554. }
  1555. }
  1556. }