XmlSerializationWriterTests.cs 52 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562
  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. [Category ("NotWorking")] // #7 fails
  464. public void TestWriteTypedPrimitive_Base64Binary ()
  465. {
  466. byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 };
  467. string expected = "/xQKBQAH";
  468. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  469. xsw.Reset ();
  470. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, byteArray, false);
  471. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  472. "<x xmlns='{0}'>{1}</x>", ANamespace, expected),
  473. xsw.Content, "#1");
  474. xsw.Reset ();
  475. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, false);
  476. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  477. "<x>{0}</x>", expected), xsw.Content, "#2");
  478. xsw.Reset ();
  479. xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, false);
  480. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  481. "<x>{0}</x>", expected), xsw.Content, "#3");
  482. xsw.Reset ();
  483. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, byteArray, false);
  484. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  485. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace, expected),
  486. xsw.Content, "#4");
  487. xsw.Reset ();
  488. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, byteArray, false);
  489. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  490. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace, expected),
  491. xsw.Content, "#5");
  492. xsw.Reset ();
  493. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, byteArray, false);
  494. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  495. "< xmlns='{0}'>{1}</>", ANamespace, expected), xsw.Content, "#6");
  496. xsw.Reset ();
  497. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, byteArray, false);
  498. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  499. "<base64Binary xmlns='{0}'>{1}</base64Binary>",
  500. XmlSchemaNamespace, expected), xsw.Content, "#7");
  501. }
  502. [Test]
  503. public void TestWriteTypedPrimitive_Base64Binary_XsiType ()
  504. {
  505. byte[] byteArray = new byte[] { 255, 20, 10, 5, 0, 7 };
  506. string expected = "/xQKBQAH";
  507. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  508. xsw.Reset ();
  509. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, byteArray, true);
  510. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  511. "<x xmlns:q1='{0}' d1p1:type='q1:base64Binary' xmlns:d1p1='{1}'>{2}</x>",
  512. XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected),
  513. xsw.Content, "#1");
  514. xsw.Reset ();
  515. xsw.ExecuteWriteTypedPrimitive ("x", null, byteArray, true);
  516. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  517. "<x xmlns:q2='{0}' d1p1:type='q2:base64Binary' xmlns:d1p1='{1}'>{2}</x>",
  518. XmlSchemaNamespace, XmlSchemaInstanceNamespace, expected),
  519. xsw.Content, "#2");
  520. }
  521. [Test]
  522. [Category ("NotWorking")] // #7 fails
  523. public void TestWriteTypedPrimitive_Boolean ()
  524. {
  525. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  526. xsw.Reset ();
  527. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, true, false);
  528. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  529. "<x xmlns='{0}'>true</x>", ANamespace), xsw.Content, "#1");
  530. xsw.Reset ();
  531. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, false, false);
  532. Assert.AreEqual ("<x>false</x>", xsw.Content, "#2");
  533. xsw.Reset ();
  534. xsw.ExecuteWriteTypedPrimitive ("x", null, true, false);
  535. Assert.AreEqual ("<x>true</x>", xsw.Content, "#3");
  536. xsw.Reset ();
  537. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, false, false);
  538. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  539. "<x xmlns='{0}'>false</x>", XmlSchemaNamespace), xsw.Content, "#4");
  540. xsw.Reset ();
  541. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, true, false);
  542. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  543. "<x xmlns='{0}'>true</x>", XmlSchemaInstanceNamespace),
  544. xsw.Content, "#5");
  545. xsw.Reset ();
  546. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, false, false);
  547. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  548. "< xmlns='{0}'>false</>", ANamespace), xsw.Content, "#6");
  549. xsw.Reset ();
  550. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, true, false);
  551. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  552. "<boolean xmlns='{0}'>true</boolean>", XmlSchemaNamespace),
  553. xsw.Content, "#7");
  554. }
  555. [Test]
  556. public void TestWriteTypedPrimitive_Boolean_XsiType ()
  557. {
  558. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  559. xsw.Reset ();
  560. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, true, true);
  561. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  562. "<x xmlns:q1='{0}' d1p1:type='q1:boolean' xmlns:d1p1='{1}'>true</x>",
  563. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  564. xsw.Content, "#1");
  565. xsw.Reset ();
  566. xsw.ExecuteWriteTypedPrimitive ("x", null, false, true);
  567. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  568. "<x xmlns:q2='{0}' d1p1:type='q2:boolean' xmlns:d1p1='{1}'>false</x>",
  569. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  570. xsw.Content, "#2");
  571. }
  572. [Test]
  573. [Category ("NotWorking")] // #7 fails
  574. public void TestWriteTypedPrimitive_Char ()
  575. {
  576. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  577. xsw.Reset ();
  578. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 'c', false);
  579. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  580. "<x xmlns='{0}'>99</x>", ANamespace), xsw.Content, "#1");
  581. xsw.Reset ();
  582. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, 'a', false);
  583. Assert.AreEqual ("<x>97</x>", xsw.Content, "#2");
  584. xsw.Reset ();
  585. xsw.ExecuteWriteTypedPrimitive ("x", null, 'b', false);
  586. Assert.AreEqual ("<x>98</x>", xsw.Content, "#3");
  587. xsw.Reset ();
  588. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 'd', false);
  589. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  590. "<x xmlns='{0}'>100</x>", XmlSchemaNamespace), xsw.Content, "#4");
  591. xsw.Reset ();
  592. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, 'e', false);
  593. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  594. "<x xmlns='{0}'>101</x>", XmlSchemaInstanceNamespace),
  595. xsw.Content, "#5");
  596. xsw.Reset ();
  597. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, ' ', false);
  598. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  599. "< xmlns='{0}'>32</>", ANamespace), xsw.Content, "#6");
  600. xsw.Reset ();
  601. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, '0', false);
  602. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  603. "<char xmlns='{0}'>48</char>", WsdlTypesNamespace),
  604. xsw.Content, "#7");
  605. }
  606. [Test]
  607. [Category ("NotWorking")] // namespace should be wsdl types ns
  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. [Category ("NotWorking")] // #7 fails
  626. public void TestWriteTypedPrimitive_DateTime ()
  627. {
  628. DateTime dateTime = new DateTime (1973, 08, 13);
  629. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  630. xsw.Reset ();
  631. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, dateTime, false);
  632. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  633. "<x xmlns='{0}'>{1}</x>", ANamespace, FromDateTime (dateTime)),
  634. xsw.Content, "#1");
  635. xsw.Reset ();
  636. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, false);
  637. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  638. "<x>{0}</x>", FromDateTime (dateTime)), xsw.Content, "#2");
  639. xsw.Reset ();
  640. xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, false);
  641. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  642. "<x>{0}</x>", FromDateTime (dateTime)), xsw.Content, "#3");
  643. xsw.Reset ();
  644. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, dateTime, false);
  645. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  646. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace,
  647. FromDateTime (dateTime)), xsw.Content, "#4");
  648. xsw.Reset ();
  649. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, dateTime, false);
  650. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  651. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace,
  652. FromDateTime (dateTime)), xsw.Content, "#5");
  653. xsw.Reset ();
  654. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, dateTime, false);
  655. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  656. "< xmlns='{0}'>{1}</>", ANamespace, FromDateTime (dateTime)),
  657. xsw.Content, "#6");
  658. xsw.Reset ();
  659. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, dateTime, false);
  660. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  661. "<dateTime xmlns='{0}'>{1}</dateTime>", XmlSchemaNamespace,
  662. FromDateTime (dateTime)), xsw.Content, "#7");
  663. }
  664. [Test]
  665. public void TestWriteTypedPrimitive_DateTime_XsiType ()
  666. {
  667. DateTime dateTime = new DateTime (1973, 08, 13);
  668. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  669. xsw.Reset ();
  670. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, dateTime, true);
  671. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  672. "<x xmlns:q1='{0}' d1p1:type='q1:dateTime' xmlns:d1p1='{1}'>{2}</x>",
  673. XmlSchemaNamespace, XmlSchemaInstanceNamespace,
  674. FromDateTime (dateTime)), xsw.Content, "#1");
  675. xsw.Reset ();
  676. xsw.ExecuteWriteTypedPrimitive ("x", null, dateTime, true);
  677. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  678. "<x xmlns:q2='{0}' d1p1:type='q2:dateTime' xmlns:d1p1='{1}'>{2}</x>",
  679. XmlSchemaNamespace, XmlSchemaInstanceNamespace,
  680. FromDateTime (dateTime)), xsw.Content, "#2");
  681. }
  682. [Test]
  683. [Category ("NotWorking")] // enum name is output instead of integral value
  684. public void TestWriteTypedPrimitive_Enum ()
  685. {
  686. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  687. xsw.Reset ();
  688. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, EnumDefaultValue.e1, false);
  689. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  690. "<x xmlns='{0}'>1</x>", ANamespace), xsw.Content, "#1");
  691. xsw.Reset ();
  692. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e2, false);
  693. Assert.AreEqual ("<x>2</x>", xsw.Content, "#2");
  694. xsw.Reset ();
  695. xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e3, false);
  696. Assert.AreEqual ("<x>3</x>", xsw.Content, "#3");
  697. xsw.Reset ();
  698. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, EnumDefaultValue.e1, false);
  699. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  700. "<x xmlns='{0}'>1</x>", XmlSchemaNamespace), xsw.Content, "#4");
  701. xsw.Reset ();
  702. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, EnumDefaultValue.e2, false);
  703. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  704. "<x xmlns='{0}'>2</x>", XmlSchemaInstanceNamespace),
  705. xsw.Content, "#5");
  706. xsw.Reset ();
  707. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, EnumDefaultValue.e3, false);
  708. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  709. "< xmlns='{0}'>3</>", ANamespace), xsw.Content, "#6");
  710. xsw.Reset ();
  711. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, EnumDefaultValue.e2, false);
  712. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  713. "<int xmlns='{0}'>2</int>", XmlSchemaNamespace),
  714. xsw.Content, "#7");
  715. }
  716. [Test]
  717. [Category ("NotWorking")] // InvalidOperationException is thrown
  718. public void TestWriteTypedPrimitive_Enum_XsiType ()
  719. {
  720. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  721. xsw.Reset ();
  722. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, EnumDefaultValue.e1, true);
  723. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  724. "<x xmlns:q1='{0}' d1p1:type='q1:int' xmlns:d1p1='{1}'>1</x>",
  725. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  726. xsw.Content, "#1");
  727. xsw.Reset ();
  728. xsw.ExecuteWriteTypedPrimitive ("x", null, EnumDefaultValue.e2, true);
  729. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  730. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}'>2</x>",
  731. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  732. xsw.Content, "#2");
  733. }
  734. [Test]
  735. [Category ("NotWorking")] // #7 fails
  736. public void TestWriteTypedPrimitive_Guid ()
  737. {
  738. Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223");
  739. string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223";
  740. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  741. xsw.Reset ();
  742. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, guid, false);
  743. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  744. "<x xmlns='{0}'>{1}</x>", ANamespace, expectedGuid),
  745. xsw.Content, "#1");
  746. xsw.Reset ();
  747. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, false);
  748. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  749. "<x>{0}</x>", expectedGuid), xsw.Content, "#2");
  750. xsw.Reset ();
  751. xsw.ExecuteWriteTypedPrimitive ("x", null, guid, false);
  752. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  753. "<x>{0}</x>", expectedGuid), xsw.Content, "#3");
  754. xsw.Reset ();
  755. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, guid, false);
  756. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  757. "<x xmlns='{0}'>{1}</x>", XmlSchemaNamespace, expectedGuid),
  758. xsw.Content, "#4");
  759. xsw.Reset ();
  760. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, guid, false);
  761. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  762. "<x xmlns='{0}'>{1}</x>", XmlSchemaInstanceNamespace, expectedGuid),
  763. xsw.Content, "#5");
  764. xsw.Reset ();
  765. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, guid, false);
  766. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  767. "< xmlns='{0}'>{1}</>", ANamespace, expectedGuid),
  768. xsw.Content, "#6");
  769. xsw.Reset ();
  770. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, guid, false);
  771. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  772. "<guid xmlns='{0}'>{1}</guid>", WsdlTypesNamespace,
  773. expectedGuid), xsw.Content, "#7");
  774. }
  775. [Test]
  776. [Category ("NotWorking")] // namespace should be wsdl types ns
  777. public void TestWriteTypedPrimitive_Guid_XsiType ()
  778. {
  779. Guid guid = new Guid ("CA761232-ED42-11CE-BACD-00AA0057B223");
  780. string expectedGuid = "ca761232-ed42-11ce-bacd-00aa0057b223";
  781. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  782. xsw.Reset ();
  783. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, guid, true);
  784. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  785. "<x xmlns:q1='{0}' d1p1:type='q1:guid' xmlns:d1p1='{1}'>{2}</x>",
  786. WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid),
  787. xsw.Content, "#1");
  788. xsw.Reset ();
  789. xsw.ExecuteWriteTypedPrimitive ("x", null, guid, true);
  790. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  791. "<x xmlns:q2='{0}' d1p1:type='q2:guid' xmlns:d1p1='{1}'>{2}</x>",
  792. WsdlTypesNamespace, XmlSchemaInstanceNamespace, expectedGuid),
  793. xsw.Content, "#2");
  794. }
  795. [Test]
  796. [Category ("NotWorking")] // #7 fails
  797. public void TestWriteTypedPrimitive_Int ()
  798. {
  799. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  800. xsw.Reset ();
  801. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, 76665, false);
  802. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  803. "<x xmlns='{0}'>76665</x>", ANamespace), xsw.Content, "#1");
  804. xsw.Reset ();
  805. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -5656, false);
  806. Assert.AreEqual ("<x>-5656</x>", xsw.Content, "#2");
  807. xsw.Reset ();
  808. xsw.ExecuteWriteTypedPrimitive ("x", null, 0, false);
  809. Assert.AreEqual ("<x>0</x>", xsw.Content, "#3");
  810. xsw.Reset ();
  811. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, 534, false);
  812. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  813. "<x xmlns='{0}'>534</x>", XmlSchemaNamespace), xsw.Content, "#4");
  814. xsw.Reset ();
  815. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, -6756, false);
  816. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  817. "<x xmlns='{0}'>-6756</x>", XmlSchemaInstanceNamespace),
  818. xsw.Content, "#5");
  819. xsw.Reset ();
  820. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, 434, false);
  821. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  822. "< xmlns='{0}'>434</>", ANamespace), xsw.Content, "#6");
  823. xsw.Reset ();
  824. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, 434, false);
  825. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  826. "<int xmlns='{0}'>434</int>", XmlSchemaNamespace),
  827. xsw.Content, "#7");
  828. }
  829. [Test]
  830. public void TestWriteTypedPrimitive_Int_XsiType ()
  831. {
  832. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  833. xsw.Reset ();
  834. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, -6756, true);
  835. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  836. "<x xmlns:q1='{0}' d1p1:type='q1:int' xmlns:d1p1='{1}'>-6756</x>",
  837. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  838. xsw.Content, "#1");
  839. xsw.Reset ();
  840. xsw.ExecuteWriteTypedPrimitive ("x", null, 434, true);
  841. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  842. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}'>434</x>",
  843. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  844. xsw.Content, "#2");
  845. }
  846. [Test]
  847. [Category ("NotWorking")] // #8 fails
  848. public void TestWriteTypedPrimitive_String ()
  849. {
  850. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  851. xsw.Reset ();
  852. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", false);
  853. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  854. "<x xmlns='{0}'>hello</x>", ANamespace), xsw.Content, "#1");
  855. xsw.Reset ();
  856. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", false);
  857. Assert.AreEqual ("<x>hello</x>", xsw.Content, "#2");
  858. xsw.Reset ();
  859. xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", false);
  860. Assert.AreEqual ("<x>hello</x>", xsw.Content, "#3");
  861. xsw.Reset ();
  862. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", false);
  863. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  864. "<x xmlns='{0}'>hello</x>", XmlSchemaNamespace),
  865. xsw.Content, "#4");
  866. xsw.Reset ();
  867. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", false);
  868. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  869. "<x xmlns='{0}'>hello</x>", XmlSchemaInstanceNamespace),
  870. xsw.Content, "#5");
  871. xsw.Reset ();
  872. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, false);
  873. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  874. "<x xmlns='{0}' />", ANamespace), xsw.Content, "#6");
  875. xsw.Reset ();
  876. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", false);
  877. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  878. "< xmlns='{0}'>&lt;\"te'st\"&gt;</>", ANamespace),
  879. xsw.Content, "#7");
  880. xsw.Reset ();
  881. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", false);
  882. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  883. "<string xmlns='{0}'>hello</string>", XmlSchemaNamespace),
  884. xsw.Content, "#8");
  885. }
  886. [Test]
  887. public void TestWriteTypedPrimitive_String_XsiType ()
  888. {
  889. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  890. xsw.Reset ();
  891. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, "hello", true);
  892. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  893. "<x xmlns:q1='{0}' d1p1:type='q1:string' xmlns:d1p1='{1}'>hello</x>",
  894. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  895. xsw.Content, "#1");
  896. xsw.Reset ();
  897. xsw.ExecuteWriteTypedPrimitive ("x", null, "hello", true);
  898. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  899. "<x xmlns:q2='{0}' d1p1:type='q2:string' xmlns:d1p1='{1}'>hello</x>",
  900. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  901. xsw.Content, "#2");
  902. }
  903. [Test]
  904. [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT
  905. public void TestWriteTypedPrimitive_String_XsiType_Namespace ()
  906. {
  907. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  908. xsw.Reset ();
  909. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, "hello", true);
  910. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  911. "<x xmlns:q1='{0}' d1p1:type='q1:string' xmlns:d1p1='{1}' xmlns='{2}'>hello</x>",
  912. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  913. xsw.Content, "#1");
  914. xsw.Reset ();
  915. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, "hello", true);
  916. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  917. "<x d1p1:type='string' xmlns:d1p1='{0}' xmlns='{1}'>hello</x>",
  918. XmlSchemaInstanceNamespace, XmlSchemaNamespace),
  919. xsw.Content, "#2");
  920. xsw.Reset ();
  921. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, "hello", true);
  922. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  923. "<x xmlns:q2='{0}' d1p1:type='q2:string' xmlns:d1p1='{1}' xmlns='{1}'>hello</x>",
  924. XmlSchemaNamespace, XmlSchemaInstanceNamespace), xsw.Content, "#3");
  925. xsw.Reset ();
  926. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, string.Empty, true);
  927. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  928. "<x xmlns:q3='{0}' d1p1:type='q3:string' xmlns:d1p1='{1}' xmlns='{2}' />",
  929. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  930. xsw.Content, "#4");
  931. xsw.Reset ();
  932. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, "<\"te'st\">", true);
  933. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  934. "< xmlns:q4='{0}' d1p1:type='q4:string' xmlns:d1p1='{1}' xmlns='{2}'>&lt;\"te'st\"&gt;</>",
  935. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  936. xsw.Content, "#5");
  937. xsw.Reset ();
  938. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, "hello", true);
  939. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  940. "<string d1p1:type='string' xmlns:d1p1='{0}' xmlns='{1}'>hello</string>",
  941. XmlSchemaInstanceNamespace, XmlSchemaNamespace),
  942. xsw.Content, "#6");
  943. }
  944. [Test]
  945. [Category ("NotWorking")] // #7 fails
  946. public void TestWriteTypedPrimitive_UnsignedByte ()
  947. {
  948. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  949. xsw.Reset ();
  950. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, (byte) 5, false);
  951. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  952. "<x xmlns='{0}'>5</x>", ANamespace), xsw.Content, "#1");
  953. xsw.Reset ();
  954. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 125, false);
  955. Assert.AreEqual ("<x>125</x>", xsw.Content, "#2");
  956. xsw.Reset ();
  957. xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 0, false);
  958. Assert.AreEqual ("<x>0</x>", xsw.Content, "#3");
  959. xsw.Reset ();
  960. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, (byte) 255, false);
  961. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  962. "<x xmlns='{0}'>255</x>", XmlSchemaNamespace), xsw.Content, "#4");
  963. xsw.Reset ();
  964. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, (byte) 128, false);
  965. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  966. "<x xmlns='{0}'>128</x>", XmlSchemaInstanceNamespace),
  967. xsw.Content, "#5");
  968. xsw.Reset ();
  969. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, (byte) 1, false);
  970. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  971. "< xmlns='{0}'>1</>", ANamespace), xsw.Content, "#6");
  972. xsw.Reset ();
  973. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, (byte) 99, false);
  974. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  975. "<unsignedByte xmlns='{0}'>99</unsignedByte>",
  976. XmlSchemaNamespace), xsw.Content, "#7");
  977. }
  978. [Test]
  979. public void TestWriteTypedPrimitive_UnsignedByte_XsiType ()
  980. {
  981. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  982. xsw.Reset ();
  983. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, (byte) 5, true);
  984. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  985. "<x xmlns:q1='{0}' d1p1:type='q1:unsignedByte' xmlns:d1p1='{1}'>5</x>",
  986. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  987. xsw.Content, "#1");
  988. xsw.Reset ();
  989. xsw.ExecuteWriteTypedPrimitive ("x", null, (byte) 99, true);
  990. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  991. "<x xmlns:q2='{0}' d1p1:type='q2:unsignedByte' xmlns:d1p1='{1}'>99</x>",
  992. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  993. xsw.Content, "#2");
  994. }
  995. [Test]
  996. [Category ("NotWorking")] // #A7 fails
  997. public void TestWriteTypedPrimitive_XmlQualifiedName ()
  998. {
  999. XmlQualifiedName qname = new XmlQualifiedName ("something", AnotherNamespace);
  1000. XmlSerializarionWriterTester xsw = new XmlSerializarionWriterTester ();
  1001. xsw.Reset ();
  1002. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false);
  1003. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1004. "<x xmlns:q1='{0}' xmlns='{1}'>q1:something</x>",
  1005. AnotherNamespace, ANamespace), xsw.Content, "#A1");
  1006. xsw.Reset ();
  1007. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false);
  1008. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1009. "<x xmlns:q2='{0}'>q2:something</x>",
  1010. AnotherNamespace), xsw.Content, "#A2");
  1011. xsw.Reset ();
  1012. xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false);
  1013. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1014. "<x xmlns:q3='{0}'>q3:something</x>", AnotherNamespace),
  1015. xsw.Content, "#A3");
  1016. xsw.Reset ();
  1017. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false);
  1018. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1019. "<x xmlns:q4='{0}' xmlns='{1}'>q4:something</x>", AnotherNamespace,
  1020. XmlSchemaNamespace), xsw.Content, "#A4");
  1021. xsw.Reset ();
  1022. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false);
  1023. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1024. "<x xmlns:q5='{0}' xmlns='{1}'>q5:something</x>", AnotherNamespace,
  1025. XmlSchemaInstanceNamespace), xsw.Content, "#A5");
  1026. xsw.Reset ();
  1027. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false);
  1028. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1029. "< xmlns:q6='{0}' xmlns='{1}'>q6:something</>", AnotherNamespace,
  1030. ANamespace), xsw.Content, "#A6");
  1031. xsw.Reset ();
  1032. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false);
  1033. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1034. "<QName xmlns:q7='{0}' xmlns='{1}'>q7:something</QName>",
  1035. AnotherNamespace, XmlSchemaNamespace), xsw.Content, "#A7");
  1036. xsw.Reset ();
  1037. qname = new XmlQualifiedName ("else");
  1038. xsw.ExecuteWriteTypedPrimitive ("x", ANamespace, qname, false);
  1039. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1040. "<x xmlns='{0}'>else</x>", ANamespace), xsw.Content, "#B1");
  1041. xsw.Reset ();
  1042. xsw.ExecuteWriteTypedPrimitive ("x", string.Empty, qname, false);
  1043. Assert.AreEqual ("<x>else</x>", xsw.Content, "#B2");
  1044. xsw.Reset ();
  1045. xsw.ExecuteWriteTypedPrimitive ("x", null, qname, false);
  1046. Assert.AreEqual ("<x>else</x>", xsw.Content, "#B3");
  1047. xsw.Reset ();
  1048. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaNamespace, qname, false);
  1049. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1050. "<x xmlns='{0}'>else</x>", XmlSchemaNamespace), xsw.Content, "#B4");
  1051. xsw.Reset ();
  1052. xsw.ExecuteWriteTypedPrimitive ("x", XmlSchemaInstanceNamespace, qname, false);
  1053. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1054. "<x xmlns='{0}'>else</x>", XmlSchemaInstanceNamespace),
  1055. xsw.Content, "#B5");
  1056. xsw.Reset ();
  1057. xsw.ExecuteWriteTypedPrimitive (string.Empty, ANamespace, qname, false);
  1058. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1059. "< xmlns='{0}'>else</>", ANamespace), xsw.Content, "#B6");
  1060. xsw.Reset ();
  1061. xsw.ExecuteWriteTypedPrimitive (null, ANamespace, qname, false);
  1062. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1063. "<QName xmlns='{0}'>else</QName>", XmlSchemaNamespace),
  1064. xsw.Content, "#B7");
  1065. }
  1066. [Test]
  1067. [ExpectedException (typeof (NullReferenceException))]
  1068. public void TestWriteTypedPrimitive_Null_Value()
  1069. {
  1070. WriteTypedPrimitive("x", ANamespace, null, false);
  1071. }
  1072. [Test]
  1073. [Category ("NotWorking")] // InvalidOperatinException is not thrown
  1074. [ExpectedException (typeof (InvalidOperationException))]
  1075. public void TestWriteTypedPrimitive_NonPrimitive ()
  1076. {
  1077. // The type System.Version was not expected. Use the XmlInclude
  1078. // or SoapInclude attribute to specify types that are not known
  1079. // statically.
  1080. WriteTypedPrimitive ("x", ANamespace, new Version (), false);
  1081. }
  1082. [Test]
  1083. public void TestWriteValue()
  1084. {
  1085. WriteValue("");
  1086. Assert.AreEqual ("", Content);
  1087. Reset();
  1088. WriteValue("hello");
  1089. Assert.AreEqual ("hello", Content);
  1090. Reset();
  1091. string v = null;
  1092. WriteValue(v);
  1093. Assert.AreEqual ("", Content);
  1094. Reset();
  1095. WriteValue(new byte[] {13, 8, 99});
  1096. Assert.AreEqual ("DQhj", Content);
  1097. }
  1098. public void TestWriteXmlAttribute()
  1099. {
  1100. // FIXME
  1101. // XmlNode related
  1102. }
  1103. [Test]
  1104. public void TestWriteXsiType()
  1105. {
  1106. WriteStartElement("x");
  1107. WriteXsiType("pref", null);
  1108. WriteEndElement();
  1109. Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
  1110. "<x d1p1:type='pref' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1111. Content, "#1");
  1112. Reset ();
  1113. WriteStartElement ("x");
  1114. WriteXsiType ("int", XmlSchemaNamespace);
  1115. WriteEndElement ();
  1116. Assert.AreEqual (string.Format(CultureInfo.InvariantCulture,
  1117. "<x xmlns:q2='{0}' d1p1:type='q2:int' xmlns:d1p1='{1}' />",
  1118. XmlSchemaNamespace, XmlSchemaInstanceNamespace),
  1119. Content, "#2");
  1120. Reset ();
  1121. WriteStartElement ("x");
  1122. WriteXsiType ("int", ANamespace);
  1123. WriteEndElement ();
  1124. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1125. "<x xmlns:q3='{0}' d1p1:type='q3:int' xmlns:d1p1='{1}' />",
  1126. ANamespace, XmlSchemaInstanceNamespace), Content, "#3");
  1127. Reset ();
  1128. WriteStartElement ("x");
  1129. WriteXsiType ("int", XmlSchemaInstanceNamespace);
  1130. WriteEndElement ();
  1131. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1132. "<x xmlns:q4='{0}' q4:type='q4:int' />",
  1133. XmlSchemaInstanceNamespace), Content, "#4");
  1134. Reset ();
  1135. WriteStartElement ("x");
  1136. WriteXsiType ("int", string.Empty);
  1137. WriteEndElement ();
  1138. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1139. "<x d1p1:type='int' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1140. Content, "#5");
  1141. Reset ();
  1142. WriteStartElement ("x");
  1143. WriteXsiType (string.Empty, null);
  1144. WriteEndElement ();
  1145. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1146. "<x d1p1:type='' xmlns:d1p1='{0}' />", XmlSchemaInstanceNamespace),
  1147. Content, "#6");
  1148. Reset ();
  1149. WriteStartElement ("x");
  1150. WriteXsiType (null, null);
  1151. WriteEndElement ();
  1152. Assert.AreEqual ("<x />", Content, "#7");
  1153. }
  1154. [Test]
  1155. [Category ("NotWorking")] // order of namespace declaration differs from that of MSFT
  1156. public void TestWriteXsiType_Namespace ()
  1157. {
  1158. WriteStartElement ("x", ANamespace);
  1159. WriteXsiType ("pref", null);
  1160. WriteEndElement ();
  1161. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1162. "<x d1p1:type='pref' xmlns:d1p1='{0}' xmlns='{1}' />",
  1163. XmlSchemaInstanceNamespace, ANamespace), Content, "#1");
  1164. Reset ();
  1165. WriteStartElement ("x", ANamespace);
  1166. WriteXsiType ("int", XmlSchemaNamespace);
  1167. WriteEndElement ();
  1168. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1169. "<x xmlns:q5='{0}' d1p1:type='q5:int' xmlns:d1p1='{1}' xmlns='{2}' />",
  1170. XmlSchemaNamespace, XmlSchemaInstanceNamespace, ANamespace),
  1171. Content, "#2");
  1172. Reset ();
  1173. WriteStartElement ("x", ANamespace);
  1174. WriteXsiType ("int", ANamespace);
  1175. WriteEndElement ();
  1176. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1177. "<x d1p1:type='int' xmlns:d1p1='{1}' xmlns='{2}' />",
  1178. ANamespace, XmlSchemaInstanceNamespace, ANamespace),
  1179. Content, "#3");
  1180. Reset ();
  1181. WriteStartElement ("x", ANamespace);
  1182. WriteXsiType ("int", XmlSchemaInstanceNamespace);
  1183. WriteEndElement ();
  1184. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1185. "<x xmlns:q6='{0}' q6:type='q6:int' xmlns='{1}' />",
  1186. XmlSchemaInstanceNamespace, ANamespace), Content, "#4");
  1187. Reset ();
  1188. WriteStartElement ("x", ANamespace);
  1189. WriteXsiType ("int", string.Empty);
  1190. WriteEndElement ();
  1191. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1192. "<x d1p1:type='int' xmlns:d1p1='{0}' xmlns='{1}' />",
  1193. XmlSchemaInstanceNamespace, ANamespace), Content, "#5");
  1194. Reset ();
  1195. WriteStartElement ("x", ANamespace);
  1196. WriteXsiType (string.Empty, null);
  1197. WriteEndElement ();
  1198. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1199. "<x d1p1:type='' xmlns:d1p1='{0}' xmlns='{1}' />",
  1200. XmlSchemaInstanceNamespace, ANamespace), Content, "#6");
  1201. Reset ();
  1202. WriteStartElement ("x", ANamespace);
  1203. WriteXsiType (null, null);
  1204. WriteEndElement ();
  1205. Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
  1206. "<x xmlns='{0}' />", ANamespace), Content, "#7");
  1207. }
  1208. #if NET_2_0
  1209. [Test]
  1210. public void TestFromEnum_Null_TypeName ()
  1211. {
  1212. string[] values = { "one", "two", "three", "four" };
  1213. long[] ids = { 1, 2, 3, 4 };
  1214. Assert.AreEqual ("one", FromEnum (1, values, ids, (string) null));
  1215. }
  1216. [Test]
  1217. public void TestCreateInvalidEnumValueException ()
  1218. {
  1219. Exception ex = CreateInvalidEnumValueException("AnInvalidValue", "SomeType");
  1220. Assert.IsNotNull (ex, "#1");
  1221. Assert.AreEqual (typeof (InvalidOperationException), ex.GetType (), "#2");
  1222. Assert.IsNotNull (ex.Message, "#3");
  1223. Assert.IsTrue (ex.Message.IndexOf ("AnInvalidValue") != -1, "#4");
  1224. Assert.IsTrue (ex.Message.IndexOf ("SomeType") != -1, "#5");
  1225. }
  1226. #endif
  1227. }
  1228. }