XmlReflectionImporterTests.cs 56 KB

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