2009-05-14 Atsushi Enomoto <atsushi@ximian.com>
authorAtsushi Eno <atsushieno@gmail.com>
Thu, 14 May 2009 12:36:45 +0000 (12:36 -0000)
committerAtsushi Eno <atsushieno@gmail.com>
Thu, 14 May 2009 12:36:45 +0000 (12:36 -0000)
* XmlBinaryWriterSession.cs : added test to verify that session is
  actually used in binary dictionary writer.

svn path=/trunk/mcs/; revision=134126

mcs/class/System.Runtime.Serialization/Test/System.Xml/ChangeLog
mcs/class/System.Runtime.Serialization/Test/System.Xml/XmlBinaryWriterSessionTest.cs

index 61d5d732e245d1f429e854236da577e11c481305..6dfd558718f760aa27ff01d5e1747104df1b50f5 100644 (file)
@@ -1,3 +1,8 @@
+2009-05-14  Atsushi Enomoto  <atsushi@ximian.com>
+
+       * XmlBinaryWriterSession.cs : added test to verify that session is
+         actually used in binary dictionary writer.
+
 2009-04-02  Atsushi Enomoto  <atsushi@ximian.com>
 
        * XmlMtomDictionaryWriterTest.cs : new.
index fa96da6ca70d90d8874e223197a707093b763956..bb24c5c7a6731f3a8a0c964374e240c5d84cf470 100644 (file)
@@ -27,6 +27,8 @@
 //
 
 using System;
+using System.Collections.Generic;
+using System.IO;
 using System.Xml;
 using NUnit.Framework;
 
@@ -61,5 +63,51 @@ namespace MonoTests.System.Xml
                        s.TryAdd (d3, out idx);
                        Assert.AreEqual (1, idx, "#2"); // not 2
                }
+
+               [Test]
+               public void WriterAddsStringsToSession ()
+               {
+                       var ms = new MemoryStream ();
+                       var d = new MyXmlDictionary ();
+                       var s = new MyXmlBinaryWriterSession ();
+                       var w = XmlDictionaryWriter.CreateBinaryWriter (ms, d, s);
+                       w.WriteStartElement ("root1");
+                       w.WriteEndElement ();
+                       Assert.AreEqual (0, d.List.Count, "#1");
+                       Assert.AreEqual (0, s.List.Count, "#2");
+                       w.WriteStartElement (d.Add ("root2"), XmlDictionaryString.Empty);
+                       w.WriteEndElement ();
+                       Assert.AreEqual (1, d.List.Count, "#3");
+                       Assert.AreEqual (0, s.List.Count, "#4");
+                       w.WriteStartElement (new XmlDictionary ().Add ("root3"), XmlDictionaryString.Empty);
+                       w.WriteEndElement ();
+                       Assert.AreEqual (1, d.List.Count, "#5");
+                       Assert.AreEqual (1, s.List.Count, "#6");
+               }
+
+               class MyXmlDictionary : XmlDictionary
+               {
+                       public List<XmlDictionaryString> List = new List<XmlDictionaryString> ();
+
+                       public override XmlDictionaryString Add (string s)
+                       {
+                               var r = base.Add (s);
+                               List.Add (r);
+                               return r;
+                       }
+               }
+
+               class MyXmlBinaryWriterSession : XmlBinaryWriterSession
+               {
+                       public List<XmlDictionaryString> List = new List<XmlDictionaryString> ();
+
+                       public override bool TryAdd (XmlDictionaryString s, out int key)
+                       {
+                               if (!base.TryAdd (s, out key))
+                                       return false;
+                               List.Add (s);
+                               return true;
+                       }
+               }
        }
 }