XmlSerializationWriterTests.cs 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555
  1. //
  2. // MonoTests.System.Xml.Serialization.XmlSerializationWriterTests
  3. //
  4. // Author: Erik LeBel <[email protected]>
  5. //
  6. // (C) Erik LeBel 2003
  7. //
  8. // FIXME add tests for callbacks
  9. // FIXME add tests for writes that generate namespaces
  10. // FIXME add test that write XmlNode objects
  11. //
  12. using System;
  13. using System.Globalization;
  14. using System.IO;
  15. using System.Xml;
  16. using System.Xml.Serialization;
  17. using NUnit.Framework;
  18. using MonoTests.System.Xml.TestClasses;
  19. namespace MonoTests.System.XmlSerialization
  20. {
  21. // base, common implementation of XmlSerializationWriter test harness.
  22. // the reason for this is that all auto generated namespace prefixes
  23. // of the form q# are modified by any Write* that defines a new namespace.
  24. // The result of this is that even though we redefine the string results
  25. // to exclude previous tests, the q#s will change depending on number of
  26. // namespace declarations were made prior to the perticual test. This
  27. // means that if the [Test] methods are called out of sequence, they
  28. // all start to fail. For this reason, tests that define and verify
  29. // temporary namespaces should be stored in a seperate class which protects
  30. // itself from accidental pre-definitions.
  31. public class XmlSerializarionWriterTester : XmlSerializationWriter
  32. {
  33. // appease the compiler
  34. protected override void InitCallbacks ()
  35. {
  36. }
  37. StringWriter sw;
  38. XmlTextWriter writer;
  39. [SetUp]
  40. public void Reset()
  41. {
  42. sw = new StringWriter ();
  43. writer = new XmlTextWriter (sw);
  44. writer.QuoteChar = '\'';
  45. writer.Formatting = Formatting.None;
  46. Writer = writer;
  47. }
  48. public string Content
  49. {
  50. get
  51. {
  52. string val = sw.GetStringBuilder().ToString();
  53. return val;
  54. }
  55. }
  56. public void ExecuteWritePotentiallyReferencingElement (string name, string ns, object o, Type ambientType, bool suppressReference, bool isNullable)
  57. {
  58. WritePotentiallyReferencingElement (name, ns, o, ambientType, suppressReference, isNullable);
  59. }
  60. public void ExecuteWriteTypedPrimitive (string name, string ns, object o, bool xsiType)
  61. {
  62. WriteTypedPrimitive (name, ns, o, xsiType);
  63. }
  64. }
  65. // this class tests the methods of the XmlSerializationWriter that
  66. // can be executed out of order.
  67. [TestFixture]
  68. public class XmlSerializationWriterSimpleTests : XmlSerializarionWriterTester
  69. {
  70. const string XmlSchemaNamespace = "http://www.w3.org/2001/XMLSchema";
  71. const string XmlSchemaInstanceNamespace = "http://www.w3.org/2001/XMLSchema-instance";
  72. const string SoapEncodingNamespace = "http://schemas.xmlsoap.org/soap/encoding/";
  73. const string WsdlTypesNamespace = "http://microsoft.com/wsdl/types/";
  74. const string ANamespace = "some:urn";
  75. const string AnotherNamespace = "another:urn";
  76. // These TestFrom* methods indirectly test the functionality of XmlCustomFormatter
  77. [Test]
  78. public void TestFromByteArrayBase64()
  79. {
  80. // FIXME
  81. // This should work according to Mono's API, but .NET's FromByteArrayBase64
  82. // returns a byte array.
  83. //
  84. //string val = this.FromByteArrayBase64(new byte [] {143, 144, 1, 0});
  85. //Assert.AreEqual (FromByteArrayBase64(null), "");
  86. //val = FromByteArrayBase64(null);
  87. //try/catch or AssertEruals?
  88. }
  89. [Test]
  90. public void TestFromByteArrayHex()
  91. {
  92. byte [] vals = {143, 144, 1, 0};
  93. Assert.AreEqual ("8F900100", FromByteArrayHex(vals));
  94. Assert.IsNull (FromByteArrayHex (null));
  95. }
  96. [Test]
  97. public void TestFromChar()
  98. {
  99. Assert.AreEqual ("97", FromChar ('a'));
  100. Assert.AreEqual ("0", FromChar ('\0'));
  101. Assert.AreEqual ("10", FromChar ('\n'));
  102. Assert.AreEqual ("65281", FromChar ('\uFF01'));
  103. }
  104. [Test]
  105. public void TestFromDate()
  106. {
  107. DateTime d = new DateTime();
  108. Assert.AreEqual ("0001-01-01", FromDate (d));
  109. }
  110. [Test]
  111. public void TestFromDateTime()
  112. {
  113. DateTime d = new DateTime();
  114. Assert.AreEqual ("0001-01-01T00:00:00.0000000", FromDateTime (d).Substring (0, 27));
  115. }
  116. [Test] // bug #77500
  117. public void TestFromEnum()
  118. {
  119. long[] ids = {1, 2, 3, 4};
  120. string[] values = {"one", "two", "three"};
  121. Assert.AreEqual ("one", FromEnum (1, values, ids), "#1");
  122. Assert.AreEqual (string.Empty, FromEnum (0, values, ids), "#2");
  123. Assert.AreEqual ("one two", FromEnum (3, values, ids), "#3");
  124. try {
  125. string dummy = FromEnum(4, values, ids);
  126. Assert.Fail("#4");
  127. } catch (IndexOutOfRangeException) {
  128. }
  129. string[] correctValues = {"one", "two", "three", "four"};
  130. Assert.AreEqual ("four", FromEnum (4, correctValues, ids), "#5");
  131. Assert.AreEqual ("one four", FromEnum (5, correctValues, ids), "#6");
  132. Assert.AreEqual ("two four", FromEnum (6, correctValues, ids), "#7");
  133. Assert.AreEqual ("one two three four", FromEnum (7, correctValues, ids), "#8");
  134. string[] flagValues = {"one", "two", "four", "eight"};
  135. long[] flagIDs = {1, 2, 4, 8};
  136. Assert.AreEqual (string.Empty, FromEnum (0, flagValues, flagIDs), "#9");
  137. Assert.AreEqual ("two", FromEnum (2, flagValues, flagIDs), "#10");
  138. Assert.AreEqual ("four", FromEnum (4, flagValues, flagIDs), "#1");
  139. Assert.AreEqual ("one four", FromEnum (5, flagValues, flagIDs), "#12");
  140. Assert.AreEqual ("two four", FromEnum (6, flagValues, flagIDs), "#13");
  141. Assert.AreEqual ("one two four", FromEnum (7, flagValues, flagIDs), "#14");
  142. Assert.AreEqual ("eight", FromEnum (8, flagValues, flagIDs), "#15");
  143. Assert.AreEqual ("one four eight", FromEnum (13, flagValues, flagIDs), "#16");
  144. string[] unorderedValues = {"one", "four", "two", "zero"};
  145. long[] unorderedIDs = {1, 4, 2, 0};
  146. Assert.AreEqual (string.Empty, FromEnum (0, unorderedValues, unorderedIDs), "#17");
  147. Assert.AreEqual ("two", FromEnum (2, unorderedValues, unorderedIDs), "#18");
  148. Assert.AreEqual ("four", FromEnum (4, unorderedValues, unorderedIDs), "#19");
  149. Assert.AreEqual ("one four", FromEnum (5, unorderedValues, unorderedIDs), "#20");
  150. Assert.AreEqual ("four two", FromEnum (6, unorderedValues, unorderedIDs), "#21");
  151. Assert.AreEqual ("one four two", FromEnum (7, unorderedValues, unorderedIDs), "#22");
  152. string[] zeroValues = {"zero", "ten"};
  153. long[] zeroIDs = {0, 10};
  154. Assert.AreEqual ("zero", FromEnum (0, zeroValues, zeroIDs), "#9");
  155. Assert.AreEqual ("ten", FromEnum (10, zeroValues, zeroIDs), "#9");
  156. string[] reverseZeroValues = {"", "zero"};
  157. long[] reverseZeroIDs = {4, 0};
  158. Assert.AreEqual (string.Empty, FromEnum (0, reverseZeroValues, reverseZeroIDs), "#9");
  159. Assert.AreEqual ("zero", FromEnum (4, reverseZeroValues, reverseZeroIDs), "#9");
  160. string[] emptyValues = { "zero" };
  161. long[] emptyIDs = {0};
  162. Assert.AreEqual ("zero", FromEnum (0, emptyValues, emptyIDs), "#9");
  163. }
  164. [Test]
  165. public void TestFromEnum_InvalidValue ()
  166. {
  167. long[] ids = {1, 2, 3, 4};
  168. string[] values = {"one", "two", "three", "four"};
  169. #if NET_2_0
  170. try {
  171. FromEnum (8, values, ids);
  172. Assert.Fail ("#A1");
  173. } catch (InvalidOperationException ex) {
  174. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#A2");
  175. Assert.IsNotNull (ex.Message, "#A3");
  176. Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#A4");
  177. Assert.IsNull (ex.InnerException, "#A5");
  178. }
  179. #else
  180. Assert.AreEqual ("8", FromEnum (8, values, ids), "#A6");
  181. #endif
  182. #if NET_2_0
  183. try {
  184. FromEnum (8, values, ids, "Some.Type.Name");
  185. Assert.Fail ("#B1");
  186. } catch (InvalidOperationException ex) {
  187. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#B2");
  188. Assert.IsNotNull (ex.Message, "#B3");
  189. Assert.IsTrue (ex.Message.IndexOf ("'8'") != -1, "#B4");
  190. Assert.IsTrue (ex.Message.IndexOf ("Some.Type.Name") != -1, "#B5");
  191. Assert.IsNull (ex.InnerException, "#B6");
  192. }
  193. #endif
  194. }
  195. [Test]
  196. [ExpectedException (typeof (NullReferenceException))]
  197. public void TestFromEnum_Null_Values ()
  198. {
  199. long[] ids = { 1, 2, 3, 4 };
  200. string[] values = { "one", "two", "three", "four" };
  201. FromEnum (1, (string[]) null, ids);
  202. }
  203. [Test]
  204. [ExpectedException (typeof (NullReferenceException))]
  205. public void TestFromEnum_Null_IDs ()
  206. {
  207. string[] values = { "one", "two", "three", "four" };
  208. FromEnum (1, values, (long[]) null);
  209. }
  210. [Test]
  211. public void TestFromTime()
  212. {
  213. DateTime d = new DateTime();
  214. // Don't include time zone.
  215. Assert.AreEqual ("00:00:00.0000000", FromTime (d).Substring (0, 16));
  216. }
  217. [Test]
  218. public void TestFromXmlName()
  219. {
  220. Assert.AreEqual ("Hello", FromXmlName ("Hello"));
  221. Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlName ("go dogs go"));
  222. Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlName ("what's up"));
  223. Assert.AreEqual ("_x0031_23go", FromXmlName ("123go"));
  224. Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlName ("Hello what's.up"));
  225. }
  226. [Test]
  227. public void TestFromXmlNCName()
  228. {
  229. Assert.AreEqual ("Hello", FromXmlNCName ("Hello"));
  230. Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNCName ("go dogs go"));
  231. Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNCName ("what's up"));
  232. Assert.AreEqual ("_x0031_23go", FromXmlNCName ("123go"));
  233. Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNCName ("Hello what's.up"));
  234. }
  235. [Test]
  236. public void TestFromXmlNmToken()
  237. {
  238. Assert.AreEqual ("Hello", FromXmlNmToken ("Hello"));
  239. Assert.AreEqual ("go_x0020_dogs_x0020_go", FromXmlNmToken ("go dogs go"));
  240. Assert.AreEqual ("what_x0027_s_x0020_up", FromXmlNmToken ("what's up"));
  241. Assert.AreEqual ("123go", FromXmlNmToken ("123go"));
  242. Assert.AreEqual ("Hello_x0020_what_x0027_s.up", FromXmlNmToken ("Hello what's.up"));
  243. }
  244. [Test]
  245. public void TestFromXmlNmTokens()
  246. {
  247. Assert.AreEqual ("Hello go dogs_go 123go what_x0027_s.up", FromXmlNmTokens ("Hello go dogs_go 123go what's.up"));
  248. }
  249. [Test]
  250. public void TestWriteAttribute()
  251. {
  252. WriteStartElement("x");
  253. WriteAttribute("a", "b");
  254. WriteEndElement();
  255. Assert.AreEqual ("<x a='b' />", Content);
  256. Reset();
  257. WriteStartElement("x");
  258. WriteAttribute("a", new byte[] {1, 2, 3});
  259. WriteEndElement();
  260. Assert.AreEqual ("<x a='AQID' />", Content);
  261. Reset();
  262. WriteStartElement("x");
  263. WriteAttribute("a", "<b");
  264. WriteEndElement();
  265. Assert.AreEqual ("<x a='&lt;b' />", Content);
  266. Reset();
  267. WriteStartElement("x");
  268. string typedPlaceholder = null;
  269. WriteAttribute("a", typedPlaceholder);
  270. WriteEndElement();
  271. Assert.AreEqual ("<x />", Content);
  272. Reset();
  273. WriteStartElement("x");
  274. WriteAttribute("a", "\"");
  275. WriteEndElement();
  276. Assert.AreEqual ("<x a='\"' />", Content);
  277. Reset();
  278. WriteStartElement("x");
  279. WriteAttribute("a", "b\nc");
  280. WriteEndElement();
  281. Assert.AreEqual ("<x a='b&#xA;c' />", Content);
  282. Reset();
  283. WriteStartElement("x");
  284. WriteAttribute("a", ANamespace, "b");
  285. WriteEndElement();
  286. Assert.AreEqual ("<x d1p1:a='b' xmlns:d1p1='some:urn' />", Content);
  287. }
  288. [Test]
  289. public void TestWriteElementEncoded()
  290. {
  291. // FIXME
  292. // XmlNode related
  293. }
  294. [Test]
  295. public void TestWriteElementLiteral()
  296. {
  297. // FIXME
  298. // XmlNode related
  299. }
  300. [Test]
  301. public void TestWriteElementString()
  302. {
  303. WriteElementString("x", "a");
  304. Assert.AreEqual ("<x>a</x>", Content);
  305. Reset();
  306. WriteElementString("x", "<a");
  307. Assert.AreEqual ("<x>&lt;a</x>", Content);
  308. }
  309. [Test]
  310. public void TestWriteElementStringRaw()
  311. {
  312. byte [] placeHolderArray = null;
  313. WriteElementStringRaw("x", placeHolderArray);
  314. Assert.AreEqual ("", Content);
  315. Reset();
  316. WriteElementStringRaw("x", new byte[] {0, 2, 4});
  317. Assert.AreEqual ("<x>AAIE</x>", Content);
  318. Reset();
  319. WriteElementStringRaw("x", new byte[] {});
  320. Assert.AreEqual ("<x />", Content);
  321. // Note to reader, the output is not valid xml
  322. Reset();
  323. WriteElementStringRaw("x", "a > 13 && a < 19");
  324. Assert.AreEqual ("<x>a > 13 && a < 19</x>", Content);
  325. }
  326. [Test]
  327. public void TestWriteEmptyTag()
  328. {
  329. WriteEmptyTag("x");
  330. Assert.AreEqual ("<x />", Content);
  331. }
  332. [Test]
  333. public void TestWriteNamespaceDeclarations()
  334. {
  335. XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
  336. WriteStartElement("x");
  337. WriteNamespaceDeclarations(ns);
  338. WriteEndElement();
  339. Assert.AreEqual ("<x />", Content);
  340. Reset();
  341. ns.Add("mypref", ANamespace);
  342. WriteStartElement("x");
  343. WriteNamespaceDeclarations(ns);
  344. WriteEndElement();
  345. Assert.AreEqual (XmlSerializerTests.Infoset("<x xmlns:mypref='some:urn' />"), XmlSerializerTests.Infoset(Content));
  346. Reset();
  347. ns.Add("ns2", "another:urn");
  348. WriteStartElement("x");
  349. WriteNamespaceDeclarations(ns);
  350. WriteEndElement();
  351. Assert.AreEqual (XmlSerializerTests.Infoset("<x xmlns:ns2='another:urn' xmlns:mypref='some:urn' />"), XmlSerializerTests.Infoset(Content));
  352. Reset();
  353. ns.Add("ns3", "ya:urn");
  354. WriteStartElement("x");
  355. WriteNamespaceDeclarations(ns);
  356. WriteEndElement();
  357. Assert.AreEqual (XmlSerializerTests.Infoset("<x xmlns:ns3='ya:urn' xmlns:ns2='another:urn' xmlns:mypref='some:urn' />"), XmlSerializerTests.Infoset(Content));
  358. }
  359. [Test]
  360. public void TestWriteNullableStringLiteral()
  361. {
  362. WriteNullableStringLiteral("x", null, null);
  363. Assert.AreEqual (XmlSerializerTests.Infoset("<x d1p1:nil='true' xmlns:d1p1='http://www.w3.org/2001/XMLSchema-instance' />"), XmlSerializerTests.Infoset(Content));
  364. Reset();
  365. WriteNullableStringLiteral("x", null, "");
  366. Assert.AreEqual ("<x />", Content);
  367. Reset();
  368. WriteNullableStringLiteral("x", null, "a<b\'c");
  369. Assert.AreEqual ("<x>a&lt;b\'c</x>", Content);
  370. Reset();
  371. WriteNullableStringLiteral("x", ANamespace, "b");
  372. Assert.AreEqual ("<x xmlns='some:urn'>b</x>", Content);
  373. }
  374. [Test]
  375. public void TestWriteNullableStringLiteralRaw()
  376. {
  377. WriteNullableStringLiteralRaw("x", null, new byte[] {1, 2, 244});
  378. Assert.AreEqual ("<x>AQL0</x>", Content);
  379. }
  380. [Test]
  381. public void TestWriteNullTagEncoded()
  382. {
  383. WriteNullTagEncoded("x");
  384. Assert.AreEqual (XmlSerializerTests.Infoset("<x d1p1:nil='true' xmlns:d1p1='http://www.w3.org/2001/XMLSchema-instance' />"), XmlSerializerTests.Infoset(Content));
  385. }
  386. [Test]
  387. public void TestWriteNullTagLiteral()
  388. {
  389. WriteNullTagLiteral("x");
  390. Assert.AreEqual (XmlSerializerTests.Infoset("<x d1p1:nil='true' xmlns:d1p1='http://www.w3.org/2001/XMLSchema-instance' />"), XmlSerializerTests.Infoset(Content));
  391. }
  392. [Test]
  393. [Category ("NotWorking")]
  394. public void TestWritePotentiallyReferencingElement ()
  395. {
  396. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  397. xsw.Reset ();
  398. xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, EnumDefaultValue.e1, typeof (EnumDefaultValue), true, false);
  399. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  400. "<x xmlns='{0}'>1</x>", ANamespace), xsw.Content, "#1");
  401. xsw.Reset ();
  402. xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, (int) 1, typeof (EnumDefaultValue), true, false);
  403. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  404. "<x xmlns:q1='{0}' d1p1:type='q1:int' xmlns:d1p1='{1}' xmlns='{2}'>1</x>",
  405. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  406. xsw.Content, "#2");
  407. xsw.Reset ();
  408. xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", typeof (string), true, false);
  409. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  410. "<x xmlns='{0}'>something</x>", ANamespace), xsw.Content, "#3");
  411. xsw.Reset ();
  412. xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, "something", null, true, false);
  413. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  414. "<x xmlns:q2='{0}' d1p1:type='q2:string' xmlns:d1p1='{1}' xmlns='{2}'>something</x>",
  415. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  416. xsw.Content, "#2");
  417. xsw.Reset ();
  418. xsw.ExecuteWritePotentiallyReferencingElement ("x", ANamespace, new string[] { "A", "B" }, typeof (string[]), true, false);
  419. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  420. "<q3:Array id='id1' xmlns:q4='{0}' q3:arrayType='q4:string[2]' xmlns:q3='{1}'>" +
  421. "<Item>A</Item>" +
  422. "<Item>B</Item>" +
  423. "</q3:Array>", XmlSchemaNamespace, SoapEncodingNamespace), xsw.Content, "#5");
  424. }
  425. [Test]
  426. public void TestWriteSerializable()
  427. {
  428. // FIXME
  429. //Assert.AreEqual (, "");
  430. }
  431. [Test]
  432. public void TestWriteStartDocument()
  433. {
  434. Assert.AreEqual ("", Content);
  435. WriteStartDocument();
  436. Assert.AreEqual ("<?xml version='1.0' encoding='utf-16'?>", Content);
  437. }
  438. [Test]
  439. public void TestWriteStartElement()
  440. {
  441. WriteStartElement("x");
  442. WriteEndElement();
  443. Assert.AreEqual ("<x />", Content);
  444. Reset();
  445. WriteStartElement("x");
  446. WriteValue("a");
  447. WriteEndElement();
  448. Assert.AreEqual ("<x>a</x>", Content);
  449. Reset();
  450. WriteStartElement("x");
  451. WriteStartElement("y", "z");
  452. WriteEndElement();
  453. WriteEndElement();
  454. Assert.AreEqual ("<x><y xmlns='z' /></x>", Content);
  455. Reset();
  456. WriteStartElement("x");
  457. WriteStartElement("y", "z", true);
  458. WriteEndElement();
  459. WriteEndElement();
  460. Assert.AreEqual ("<x><q1:y xmlns:q1='z' /></x>", Content);
  461. }
  462. [Test]
  463. public void TestWriteTypedPrimitive_Base64Binary ()
  464. {
  465. byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 };
  466. string expected = "/xQKBQAH";
  467. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  468. xsw.Reset ();
  469. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, byteArray, false);
  470. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  471. "<x xmlns='{0}'>{1}</x>", ANamespace, expected),
  472. xsw.Content, "#1");
  473. xsw.Reset ();
  474. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, false);
  475. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  476. "<x>{0}</x>", expected), xsw.Content, "#2");
  477. xsw.Reset ();
  478. xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, false);
  479. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  480. "<x>{0}</x>", expected), xsw.Content, "#3");
  481. xsw.Reset ();
  482. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, byteArray, false);
  483. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  484. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace, expected),
  485. xsw.Content, "#4");
  486. xsw.Reset ();
  487. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, byteArray, false);
  488. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  489. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace, expected),
  490. xsw.Content, "#5");
  491. xsw.Reset ();
  492. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, byteArray, false);
  493. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  494. "< xmlns='{0}'>{1}</>", ANamespace, expected), xsw.Content, "#6");
  495. xsw.Reset ();
  496. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, byteArray, false);
  497. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  498. "<base64Binary xmlns='{0}'>{1}</base64Binary>",
  499. XmlSchemaNamespace, expected), xsw.Content, "#7");
  500. }
  501. [Test]
  502. public void TestWriteTypedPrimitive_Base64Binary_XsiType ()
  503. {
  504. byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 };
  505. string expected = "/xQKBQAH";
  506. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  507. xsw.Reset ();
  508. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, true);
  509. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  510. "<x xmlns:q1='{0}' d1p1:type='q1:base64Binary' xmlns:d1p1='{1}'>{2}</x>",
  511. XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected),
  512. xsw.Content, "#1");
  513. xsw.Reset ();
  514. xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, true);
  515. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  516. "<x xmlns:q2='{0}' d1p1:type='q2:base64Binary' xmlns:d1p1='{1}'>{2}</x>",
  517. XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected),
  518. xsw.Content, "#2");
  519. }
  520. [Test]
  521. public void TestWriteTypedPrimitive_Boolean ()
  522. {
  523. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  524. xsw.Reset ();
  525. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, true, false);
  526. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  527. "<x xmlns='{0}'>true</x>", ANamespace), xsw.Content, "#1");
  528. xsw.Reset ();
  529. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, false, false);
  530. Assert.AreEqual ("<x>false</x>", xsw.Content, "#2");
  531. xsw.Reset ();
  532. xsw.ExecuteWriteTypedPrimitive ("x", null, true, false);
  533. Assert.AreEqual ("<x>true</x>", xsw.Content, "#3");
  534. xsw.Reset ();
  535. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, false, false);
  536. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  537. "<x xmlns='{0}'>false</x>", XmlSchemaNamespace), xsw.Content, "#4");
  538. xsw.Reset ();
  539. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, true, false);
  540. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  541. "<x xmlns='{0}'>true</x>", XmlSchemaInstanceNamespace),
  542. xsw.Content, "#5");
  543. xsw.Reset ();
  544. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, false, false);
  545. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  546. "< xmlns='{0}'>false</>", ANamespace), xsw.Content, "#6");
  547. xsw.Reset ();
  548. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, true, false);
  549. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  550. "<boolean xmlns='{0}'>true</boolean>", XmlSchemaNamespace),
  551. xsw.Content, "#7");
  552. }
  553. [Test]
  554. public void TestWriteTypedPrimitive_Boolean_XsiType ()
  555. {
  556. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  557. xsw.Reset ();
  558. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, true, true);
  559. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  560. "<x xmlns:q1='{0}' d1p1:type='q1:boolean' xmlns:d1p1='{1}'>true</x>",
  561. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  562. xsw.Content, "#1");
  563. xsw.Reset ();
  564. xsw.ExecuteWriteTypedPrimitive ("x", null, false, true);
  565. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  566. "<x xmlns:q2='{0}' d1p1:type='q2:boolean' xmlns:d1p1='{1}'>false</x>",
  567. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  568. xsw.Content, "#2");
  569. }
  570. [Test]
  571. public void TestWriteTypedPrimitive_Char ()
  572. {
  573. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  574. xsw.Reset ();
  575. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 'c', false);
  576. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  577. "<x xmlns='{0}'>99</x>", ANamespace), xsw.Content, "#1");
  578. xsw.Reset ();
  579. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'a', false);
  580. Assert.AreEqual ("<x>97</x>", xsw.Content, "#2");
  581. xsw.Reset ();
  582. xsw.ExecuteWriteTypedPrimitive ("x", null, 'b', false);
  583. Assert.AreEqual ("<x>98</x>", xsw.Content, "#3");
  584. xsw.Reset ();
  585. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 'd', false);
  586. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  587. "<x xmlns='{0}'>100</x>", XmlSchemaNamespace), xsw.Content, "#4");
  588. xsw.Reset ();
  589. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, 'e', false);
  590. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  591. "<x xmlns='{0}'>101</x>", XmlSchemaInstanceNamespace),
  592. xsw.Content, "#5");
  593. xsw.Reset ();
  594. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, ' ', false);
  595. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  596. "< xmlns='{0}'>32</>", ANamespace), xsw.Content, "#6");
  597. xsw.Reset ();
  598. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, '0', false);
  599. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  600. "<char xmlns='{0}'>48</char>", WsdlTypesNamespace),
  601. xsw.Content, "#7");
  602. }
  603. [Test]
  604. public void TestWriteTypedPrimitive_Char_XsiType ()
  605. {
  606. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  607. xsw.Reset ();
  608. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'c', true);
  609. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  610. "<x xmlns:q1='{0}' d1p1:type='q1:char' xmlns:d1p1='{1}'>99</x>",
  611. WsdlTypesNamespace, XmlSchemaInstanceNamespace),
  612. xsw.Content, "#1");
  613. xsw.Reset ();
  614. xsw.ExecuteWriteTypedPrimitive ("x", null, 'a', true);
  615. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  616. "<x xmlns:q2='{0}' d1p1:type='q2:char' xmlns:d1p1='{1}'>97</x>",
  617. WsdlTypesNamespace, XmlSchemaInstanceNamespace),
  618. xsw.Content, "#2");
  619. }
  620. [Test]
  621. public void TestWriteTypedPrimitive_DateTime ()
  622. {
  623. DateTime dateTime = new DateTime (1973, 08, 13);
  624. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  625. xsw.Reset ();
  626. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, dateTime, false);
  627. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  628. "<x xmlns='{0}'>{1}</x>", ANamespace, FromDateTime (dateTime)),
  629. xsw.Content, "#1");
  630. xsw.Reset ();
  631. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, false);
  632. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  633. "<x>{0}</x>", FromDateTime (dateTime)), xsw.Content, "#2");
  634. xsw.Reset ();
  635. xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, false);
  636. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  637. "<x>{0}</x>", FromDateTime (dateTime)), xsw.Content, "#3");
  638. xsw.Reset ();
  639. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, dateTime, false);
  640. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  641. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace,
  642. FromDateTime (dateTime)), xsw.Content, "#4");
  643. xsw.Reset ();
  644. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, dateTime, false);
  645. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  646. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace,
  647. FromDateTime (dateTime)), xsw.Content, "#5");
  648. xsw.Reset ();
  649. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, dateTime, false);
  650. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  651. "< xmlns='{0}'>{1}</>", ANamespace, FromDateTime (dateTime)),
  652. xsw.Content, "#6");
  653. xsw.Reset ();
  654. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, dateTime, false);
  655. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  656. "<dateTime xmlns='{0}'>{1}</dateTime>", XmlSchemaNamespace,
  657. FromDateTime (dateTime)), xsw.Content, "#7");
  658. }
  659. [Test]
  660. public void TestWriteTypedPrimitive_DateTime_XsiType ()
  661. {
  662. DateTime dateTime = new DateTime (1973, 08, 13);
  663. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  664. xsw.Reset ();
  665. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, true);
  666. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  667. "<x xmlns:q1='{0}' d1p1:type='q1:dateTime' xmlns:d1p1='{1}'>{2}</x>",
  668. XmlSchemaNamespace, XmlSchemaInstanceNamespace,
  669. FromDateTime (dateTime)), xsw.Content, "#1");
  670. xsw.Reset ();
  671. xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, true);
  672. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  673. "<x xmlns:q2='{0}' d1p1:type='q2:dateTime' xmlns:d1p1='{1}'>{2}</x>",
  674. XmlSchemaNamespace, XmlSchemaInstanceNamespace,
  675. FromDateTime (dateTime)), xsw.Content, "#2");
  676. }
  677. [Test]
  678. [Category ("NotWorking")] // enum name is output instead of integral value
  679. public void TestWriteTypedPrimitive_Enum ()
  680. {
  681. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  682. xsw.Reset ();
  683. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, EnumDefaultValue.e1, false);
  684. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  685. "<x xmlns='{0}'>1</x>", ANamespace), xsw.Content, "#1");
  686. xsw.Reset ();
  687. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e2, false);
  688. Assert.AreEqual ("<x>2</x>", xsw.Content, "#2");
  689. xsw.Reset ();
  690. xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e3, false);
  691. Assert.AreEqual ("<x>3</x>", xsw.Content, "#3");
  692. xsw.Reset ();
  693. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, EnumDefaultValue.e1, false);
  694. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  695. "<x xmlns='{0}'>1</x>", XmlSchemaNamespace), xsw.Content, "#4");
  696. xsw.Reset ();
  697. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, EnumDefaultValue.e2, false);
  698. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  699. "<x xmlns='{0}'>2</x>", XmlSchemaInstanceNamespace),
  700. xsw.Content, "#5");
  701. xsw.Reset ();
  702. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, EnumDefaultValue.e3, false);
  703. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  704. "< xmlns='{0}'>3</>", ANamespace), xsw.Content, "#6");
  705. xsw.Reset ();
  706. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, EnumDefaultValue.e2, false);
  707. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  708. "<int xmlns='{0}'>2</int>", XmlSchemaNamespace),
  709. xsw.Content, "#7");
  710. }
  711. [Test]
  712. [Category ("NotWorking")] // InvalidOperationException is thrown
  713. public void TestWriteTypedPrimitive_Enum_XsiType ()
  714. {
  715. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  716. xsw.Reset ();
  717. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e1, true);
  718. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  719. "<x xmlns:q1='{0}' d1p1:type='q1:int' xmlns:d1p1='{1}'>1</x>",
  720. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  721. xsw.Content, "#1");
  722. xsw.Reset ();
  723. xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e2, true);
  724. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  725. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}'>2</x>",
  726. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  727. xsw.Content, "#2");
  728. }
  729. [Test]
  730. public void TestWriteTypedPrimitive_Guid ()
  731. {
  732. Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223");
  733. string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223";
  734. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  735. xsw.Reset ();
  736. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, guid, false);
  737. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  738. "<x xmlns='{0}'>{1}</x>", ANamespace, expectedGuid),
  739. xsw.Content, "#1");
  740. xsw.Reset ();
  741. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, false);
  742. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  743. "<x>{0}</x>", expectedGuid), xsw.Content, "#2");
  744. xsw.Reset ();
  745. xsw.ExecuteWriteTypedPrimitive ("x", null, guid, false);
  746. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  747. "<x>{0}</x>", expectedGuid), xsw.Content, "#3");
  748. xsw.Reset ();
  749. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, guid, false);
  750. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  751. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace, expectedGuid),
  752. xsw.Content, "#4");
  753. xsw.Reset ();
  754. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, guid, false);
  755. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  756. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace, expectedGuid),
  757. xsw.Content, "#5");
  758. xsw.Reset ();
  759. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, guid, false);
  760. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  761. "< xmlns='{0}'>{1}</>", ANamespace, expectedGuid),
  762. xsw.Content, "#6");
  763. xsw.Reset ();
  764. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, guid, false);
  765. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  766. "<guid xmlns='{0}'>{1}</guid>", WsdlTypesNamespace,
  767. expectedGuid), xsw.Content, "#7");
  768. }
  769. [Test]
  770. public void TestWriteTypedPrimitive_Guid_XsiType ()
  771. {
  772. Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223");
  773. string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223";
  774. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  775. xsw.Reset ();
  776. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, true);
  777. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  778. "<x xmlns:q1='{0}' d1p1:type='q1:guid' xmlns:d1p1='{1}'>{2}</x>",
  779. WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid),
  780. xsw.Content, "#1");
  781. xsw.Reset ();
  782. xsw.ExecuteWriteTypedPrimitive ("x", null, guid, true);
  783. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  784. "<x xmlns:q2='{0}' d1p1:type='q2:guid' xmlns:d1p1='{1}'>{2}</x>",
  785. WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid),
  786. xsw.Content, "#2");
  787. }
  788. [Test]
  789. public void TestWriteTypedPrimitive_Int ()
  790. {
  791. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  792. xsw.Reset ();
  793. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 76665, false);
  794. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  795. "<x xmlns='{0}'>76665</x>", ANamespace), xsw.Content, "#1");
  796. xsw.Reset ();
  797. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -5656, false);
  798. Assert.AreEqual ("<x>-5656</x>", xsw.Content, "#2");
  799. xsw.Reset ();
  800. xsw.ExecuteWriteTypedPrimitive ("x", null, 0, false);
  801. Assert.AreEqual ("<x>0</x>", xsw.Content, "#3");
  802. xsw.Reset ();
  803. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 534, false);
  804. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  805. "<x xmlns='{0}'>534</x>", XmlSchemaNamespace), xsw.Content, "#4");
  806. xsw.Reset ();
  807. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, -6756, false);
  808. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  809. "<x xmlns='{0}'>-6756</x>", XmlSchemaInstanceNamespace),
  810. xsw.Content, "#5");
  811. xsw.Reset ();
  812. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, 434, false);
  813. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  814. "< xmlns='{0}'>434</>", ANamespace), xsw.Content, "#6");
  815. xsw.Reset ();
  816. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, 434, false);
  817. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  818. "<int xmlns='{0}'>434</int>", XmlSchemaNamespace),
  819. xsw.Content, "#7");
  820. }
  821. [Test]
  822. public void TestWriteTypedPrimitive_Int_XsiType ()
  823. {
  824. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  825. xsw.Reset ();
  826. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -6756, true);
  827. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  828. "<x xmlns:q1='{0}' d1p1:type='q1:int' xmlns:d1p1='{1}'>-6756</x>",
  829. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  830. xsw.Content, "#1");
  831. xsw.Reset ();
  832. xsw.ExecuteWriteTypedPrimitive ("x", null, 434, true);
  833. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  834. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}'>434</x>",
  835. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  836. xsw.Content, "#2");
  837. }
  838. [Test]
  839. public void TestWriteTypedPrimitive_String ()
  840. {
  841. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  842. xsw.Reset ();
  843. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", false);
  844. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  845. "<x xmlns='{0}'>hello</x>", ANamespace), xsw.Content, "#1");
  846. xsw.Reset ();
  847. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", false);
  848. Assert.AreEqual ("<x>hello</x>", xsw.Content, "#2");
  849. xsw.Reset ();
  850. xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", false);
  851. Assert.AreEqual ("<x>hello</x>", xsw.Content, "#3");
  852. xsw.Reset ();
  853. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", false);
  854. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  855. "<x xmlns='{0}'>hello</x>", XmlSchemaNamespace),
  856. xsw.Content, "#4");
  857. xsw.Reset ();
  858. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", false);
  859. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  860. "<x xmlns='{0}'>hello</x>", XmlSchemaInstanceNamespace),
  861. xsw.Content, "#5");
  862. xsw.Reset ();
  863. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, false);
  864. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  865. "<x xmlns='{0}' />", ANamespace), xsw.Content, "#6");
  866. xsw.Reset ();
  867. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", false);
  868. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  869. "< xmlns='{0}'>&lt;\"te'st\"&gt;</>", ANamespace),
  870. xsw.Content, "#7");
  871. xsw.Reset ();
  872. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", false);
  873. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  874. "<string xmlns='{0}'>hello</string>", XmlSchemaNamespace),
  875. xsw.Content, "#8");
  876. }
  877. [Test]
  878. public void TestWriteTypedPrimitive_String_XsiType ()
  879. {
  880. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  881. xsw.Reset ();
  882. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", true);
  883. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  884. "<x xmlns:q1='{0}' d1p1:type='q1:string' xmlns:d1p1='{1}'>hello</x>",
  885. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  886. xsw.Content, "#1");
  887. xsw.Reset ();
  888. xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", true);
  889. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  890. "<x xmlns:q2='{0}' d1p1:type='q2:string' xmlns:d1p1='{1}'>hello</x>",
  891. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  892. xsw.Content, "#2");
  893. }
  894. [Test]
  895. public void TestWriteTypedPrimitive_String_XsiType_Namespace ()
  896. {
  897. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  898. xsw.Reset ();
  899. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", true);
  900. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  901. "<x xmlns:q1='{0}' d1p1:type='q1:string' xmlns:d1p1='{1}' xmlns='{2}'>hello</x>",
  902. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  903. xsw.Content, "#1");
  904. xsw.Reset ();
  905. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", true);
  906. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  907. "<x d1p1:type='string' xmlns:d1p1='{0}' xmlns='{1}'>hello</x>",
  908. XmlSchemaInstanceNamespace, XmlSchemaNamespace),
  909. xsw.Content, "#2");
  910. xsw.Reset ();
  911. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", true);
  912. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  913. "<x xmlns:q2='{0}' d1p1:type='q2:string' xmlns:d1p1='{1}' xmlns='{1}'>hello</x>",
  914. XmlSchemaNamespace, XmlSchemaInstanceNamespace), xsw.Content, "#3");
  915. xsw.Reset ();
  916. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, true);
  917. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  918. "<x xmlns:q3='{0}' d1p1:type='q3:string' xmlns:d1p1='{1}' xmlns='{2}' />",
  919. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  920. xsw.Content, "#4");
  921. xsw.Reset ();
  922. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", true);
  923. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  924. "< xmlns:q4='{0}' d1p1:type='q4:string' xmlns:d1p1='{1}' xmlns='{2}'>&lt;\"te'st\"&gt;</>",
  925. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  926. xsw.Content, "#5");
  927. xsw.Reset ();
  928. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", true);
  929. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  930. "<string d1p1:type='string' xmlns:d1p1='{0}' xmlns='{1}'>hello</string>",
  931. XmlSchemaInstanceNamespace, XmlSchemaNamespace),
  932. xsw.Content, "#6");
  933. }
  934. [Test]
  935. public void TestWriteTypedPrimitive_UnsignedByte ()
  936. {
  937. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  938. xsw.Reset ();
  939. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, (byte) 5, false);
  940. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  941. "<x xmlns='{0}'>5</x>", ANamespace), xsw.Content, "#1");
  942. xsw.Reset ();
  943. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 125, false);
  944. Assert.AreEqual ("<x>125</x>", xsw.Content, "#2");
  945. xsw.Reset ();
  946. xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 0, false);
  947. Assert.AreEqual ("<x>0</x>", xsw.Content, "#3");
  948. xsw.Reset ();
  949. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, (byte) 255, false);
  950. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  951. "<x xmlns='{0}'>255</x>", XmlSchemaNamespace), xsw.Content, "#4");
  952. xsw.Reset ();
  953. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, (byte) 128, false);
  954. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  955. "<x xmlns='{0}'>128</x>", XmlSchemaInstanceNamespace),
  956. xsw.Content, "#5");
  957. xsw.Reset ();
  958. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, (byte) 1, false);
  959. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  960. "< xmlns='{0}'>1</>", ANamespace), xsw.Content, "#6");
  961. xsw.Reset ();
  962. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, (byte) 99, false);
  963. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  964. "<unsignedByte xmlns='{0}'>99</unsignedByte>",
  965. XmlSchemaNamespace), xsw.Content, "#7");
  966. }
  967. [Test]
  968. public void TestWriteTypedPrimitive_UnsignedByte_XsiType ()
  969. {
  970. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  971. xsw.Reset ();
  972. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 5, true);
  973. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  974. "<x xmlns:q1='{0}' d1p1:type='q1:unsignedByte' xmlns:d1p1='{1}'>5</x>",
  975. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  976. xsw.Content, "#1");
  977. xsw.Reset ();
  978. xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 99, true);
  979. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  980. "<x xmlns:q2='{0}' d1p1:type='q2:unsignedByte' xmlns:d1p1='{1}'>99</x>",
  981. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  982. xsw.Content, "#2");
  983. }
  984. [Test]
  985. public void TestWriteTypedPrimitive_XmlQualifiedName ()
  986. {
  987. XmlQualifiedName qname = new XmlQualifiedName ("something", AnotherNamespace);
  988. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  989. xsw.Reset ();
  990. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false);
  991. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  992. "<x xmlns:q1='{0}' xmlns='{1}'>q1:something</x>",
  993. AnotherNamespace, ANamespace), xsw.Content, "#A1");
  994. xsw.Reset ();
  995. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false);
  996. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  997. "<x xmlns:q2='{0}'>q2:something</x>",
  998. AnotherNamespace), xsw.Content, "#A2");
  999. xsw.Reset ();
  1000. xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false);
  1001. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1002. "<x xmlns:q3='{0}'>q3:something</x>", AnotherNamespace),
  1003. xsw.Content, "#A3");
  1004. xsw.Reset ();
  1005. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false);
  1006. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1007. "<x xmlns:q4='{0}' xmlns='{1}'>q4:something</x>", AnotherNamespace,
  1008. XmlSchemaNamespace), xsw.Content, "#A4");
  1009. xsw.Reset ();
  1010. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false);
  1011. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1012. "<x xmlns:q5='{0}' xmlns='{1}'>q5:something</x>", AnotherNamespace,
  1013. XmlSchemaInstanceNamespace), xsw.Content, "#A5");
  1014. xsw.Reset ();
  1015. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false);
  1016. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1017. "< xmlns:q6='{0}' xmlns='{1}'>q6:something</>", AnotherNamespace,
  1018. ANamespace), xsw.Content, "#A6");
  1019. xsw.Reset ();
  1020. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false);
  1021. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1022. "<QName xmlns:q7='{0}' xmlns='{1}'>q7:something</QName>",
  1023. AnotherNamespace, XmlSchemaNamespace), xsw.Content, "#A7");
  1024. xsw.Reset ();
  1025. qname = new XmlQualifiedName ("else");
  1026. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false);
  1027. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1028. "<x xmlns='{0}'>else</x>", ANamespace), xsw.Content, "#B1");
  1029. xsw.Reset ();
  1030. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false);
  1031. Assert.AreEqual ("<x>else</x>", xsw.Content, "#B2");
  1032. xsw.Reset ();
  1033. xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false);
  1034. Assert.AreEqual ("<x>else</x>", xsw.Content, "#B3");
  1035. xsw.Reset ();
  1036. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false);
  1037. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1038. "<x xmlns='{0}'>else</x>", XmlSchemaNamespace), xsw.Content, "#B4");
  1039. xsw.Reset ();
  1040. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false);
  1041. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1042. "<x xmlns='{0}'>else</x>", XmlSchemaInstanceNamespace),
  1043. xsw.Content, "#B5");
  1044. xsw.Reset ();
  1045. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false);
  1046. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1047. "< xmlns='{0}'>else</>", ANamespace), xsw.Content, "#B6");
  1048. xsw.Reset ();
  1049. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false);
  1050. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1051. "<QName xmlns='{0}'>else</QName>", XmlSchemaNamespace),
  1052. xsw.Content, "#B7");
  1053. }
  1054. [Test]
  1055. [ExpectedException (typeof (NullReferenceException))]
  1056. public void TestWriteTypedPrimitive_Null_Value()
  1057. {
  1058. WriteTypedPrimitive("x", ANamespace, null, false);
  1059. }
  1060. [Test]
  1061. [ExpectedException (typeof (InvalidOperationException))]
  1062. public void TestWriteTypedPrimitive_NonPrimitive ()
  1063. {
  1064. // The type System.Version was not expected. Use the XmlInclude
  1065. // or SoapInclude attribute to specify types that are not known
  1066. // statically.
  1067. WriteTypedPrimitive ("x", ANamespace, new Version (), false);
  1068. }
  1069. [Test]
  1070. [ExpectedException (typeof (InvalidOperationException))]
  1071. public void TestWriteTypedPrimitive_XmlNode ()
  1072. {
  1073. WriteTypedPrimitive ("x", ANamespace, new XmlDocument ().CreateElement ("foo"), false);
  1074. }
  1075. [Test]
  1076. public void TestWriteValue()
  1077. {
  1078. WriteValue("");
  1079. Assert.AreEqual ("", Content);
  1080. Reset();
  1081. WriteValue("hello");
  1082. Assert.AreEqual ("hello", Content);
  1083. Reset();
  1084. string v = null;
  1085. WriteValue(v);
  1086. Assert.AreEqual ("", Content);
  1087. Reset();
  1088. WriteValue(new byte[] {13, 8, 99});
  1089. Assert.AreEqual ("DQhj", Content);
  1090. }
  1091. public void TestWriteXmlAttribute()
  1092. {
  1093. // FIXME
  1094. // XmlNode related
  1095. }
  1096. [Test]
  1097. public void TestWriteXsiType()
  1098. {
  1099. WriteStartElement("x");
  1100. WriteXsiType("pref", null);
  1101. WriteEndElement();
  1102. Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
  1103. "<x d1p1:type='pref' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1104. Content, "#1");
  1105. Reset ();
  1106. WriteStartElement ("x");
  1107. WriteXsiType ("int", XmlSchemaNamespace);
  1108. WriteEndElement ();
  1109. Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
  1110. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}' />",
  1111. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  1112. Content, "#2");
  1113. Reset ();
  1114. WriteStartElement ("x");
  1115. WriteXsiType ("int", ANamespace);
  1116. WriteEndElement ();
  1117. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1118. "<x xmlns:q3='{0}' d1p1:type='q3:int' xmlns:d1p1='{1}' />",
  1119. ANamespace, XmlSchemaInstanceNamespace), Content, "#3");
  1120. Reset ();
  1121. WriteStartElement ("x");
  1122. WriteXsiType ("int", XmlSchemaInstanceNamespace);
  1123. WriteEndElement ();
  1124. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1125. "<x xmlns:q4='{0}' q4:type='q4:int' />",
  1126. XmlSchemaInstanceNamespace), Content, "#4");
  1127. Reset ();
  1128. WriteStartElement ("x");
  1129. WriteXsiType ("int", string.Empty);
  1130. WriteEndElement ();
  1131. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1132. "<x d1p1:type='int' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1133. Content, "#5");
  1134. Reset ();
  1135. WriteStartElement ("x");
  1136. WriteXsiType (string.Empty, null);
  1137. WriteEndElement ();
  1138. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1139. "<x d1p1:type='' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1140. Content, "#6");
  1141. Reset ();
  1142. WriteStartElement ("x");
  1143. WriteXsiType (null, null);
  1144. WriteEndElement ();
  1145. Assert.AreEqual ("<x />", Content, "#7");
  1146. }
  1147. [Test]
  1148. public void TestWriteXsiType_Namespace ()
  1149. {
  1150. WriteStartElement ("x", ANamespace);
  1151. WriteXsiType ("pref", null);
  1152. WriteEndElement ();
  1153. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1154. "<x d1p1:type='pref' xmlns:d1p1='{0}' xmlns='{1}' />",
  1155. XmlSchemaInstanceNamespace, ANamespace), Content, "#1");
  1156. Reset ();
  1157. WriteStartElement ("x", ANamespace);
  1158. WriteXsiType ("int", XmlSchemaNamespace);
  1159. WriteEndElement ();
  1160. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1161. "<x xmlns:q5='{0}' d1p1:type='q5:int' xmlns:d1p1='{1}' xmlns='{2}' />",
  1162. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  1163. Content, "#2");
  1164. Reset ();
  1165. WriteStartElement ("x", ANamespace);
  1166. WriteXsiType ("int", ANamespace);
  1167. WriteEndElement ();
  1168. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1169. "<x d1p1:type='int' xmlns:d1p1='{1}' xmlns='{2}' />",
  1170. ANamespace, XmlSchemaInstanceNamespace, ANamespace),
  1171. Content, "#3");
  1172. Reset ();
  1173. WriteStartElement ("x", ANamespace);
  1174. WriteXsiType ("int", XmlSchemaInstanceNamespace);
  1175. WriteEndElement ();
  1176. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1177. "<x xmlns:q6='{0}' q6:type='q6:int' xmlns='{1}' />",
  1178. XmlSchemaInstanceNamespace, ANamespace), Content, "#4");
  1179. Reset ();
  1180. WriteStartElement ("x", ANamespace);
  1181. WriteXsiType ("int", string.Empty);
  1182. WriteEndElement ();
  1183. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1184. "<x d1p1:type='int' xmlns:d1p1='{0}' xmlns='{1}' />",
  1185. XmlSchemaInstanceNamespace, ANamespace), Content, "#5");
  1186. Reset ();
  1187. WriteStartElement ("x", ANamespace);
  1188. WriteXsiType (string.Empty, null);
  1189. WriteEndElement ();
  1190. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1191. "<x d1p1:type='' xmlns:d1p1='{0}' xmlns='{1}' />",
  1192. XmlSchemaInstanceNamespace, ANamespace), Content, "#6");
  1193. Reset ();
  1194. WriteStartElement ("x", ANamespace);
  1195. WriteXsiType (null, null);
  1196. WriteEndElement ();
  1197. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1198. "<x xmlns='{0}' />", ANamespace), Content, "#7");
  1199. }
  1200. #if NET_2_0
  1201. [Test]
  1202. public void TestFromEnum_Null_TypeName ()
  1203. {
  1204. string[] values = { "one", "two", "three", "four" };
  1205. long[] ids = { 1, 2, 3, 4 };
  1206. Assert.AreEqual ("one", FromEnum (1, values, ids, (string) null));
  1207. }
  1208. [Test]
  1209. public void TestCreateInvalidEnumValueException ()
  1210. {
  1211. Exception ex = CreateInvalidEnumValueException("AnInvalidValue", "SomeType");
  1212. Assert.IsNotNull (ex, "#1");
  1213. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  1214. Assert.IsNotNull (ex.Message, "#3");
  1215. Assert.IsTrue (ex.Message.IndexOf ("AnInvalidValue") != -1, "#4");
  1216. Assert.IsTrue (ex.Message.IndexOf ("SomeType") != -1, "#5");
  1217. }
  1218. #endif
  1219. }
  1220. }