XmlSerializationWriterTests.cs 51 KB

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