Exemple #1
0
        public void WriteValue_IStreamProvider()
        {
            byte[] data               = Encoding.UTF8.GetBytes("Hello, Worlds!!");
            int    getStreamCount     = 0;
            int    releaseStreamCount = 0;
            var    provider           = new DummyStreamProvider
            {
                Stream = new MemoryStream(data)
            };

            provider.GetStreamEvent     += (o, e) => { ++getStreamCount; };
            provider.ReleaseStreamEvent += (o, e) =>
            {
                ++releaseStreamCount;
                Assert.IsTrue(object.ReferenceEquals(provider.Stream, e.Stream));
            };
            writer.WriteValue(provider);
            writer.Flush();
            Assert.AreEqual(1, getStreamCount);
            Assert.AreEqual(1, releaseStreamCount);
            Assert.AreEqual(data.Length, provider.Stream.Position);
            Assert.AreEqual(Convert.ToBase64String(data), contents.ToString());

            provider.Stream.Position = 0;
            writer.WriteBase64Event += (o, e) =>
            {
                throw new Exception("incomplete!");
            };
            getStreamCount     = 0;
            releaseStreamCount = 0;
            Exception thrown = null;

            try
            {
                writer.WriteValue(provider);
            }
            catch (Exception e)
            {
                thrown = e;
            }
            Assert.IsNotNull(thrown);
            Assert.AreEqual(1, getStreamCount);
            Assert.AreEqual(0, releaseStreamCount);
        }
		public void WriteValue_IStreamProvider ()
		{
			byte[] data = Encoding.UTF8.GetBytes ("Hello, Worlds!!");
			int getStreamCount = 0;
			int releaseStreamCount = 0;
			var provider = new DummyStreamProvider {
				Stream = new MemoryStream (data)
			};
			provider.GetStreamEvent += (o, e) => { ++getStreamCount; };
			provider.ReleaseStreamEvent += (o, e) => {
				++releaseStreamCount;
				Assert.IsTrue (object.ReferenceEquals (provider.Stream, e.Stream));
			};
			writer.WriteValue (provider);
			writer.Flush ();
			Assert.AreEqual (1, getStreamCount);
			Assert.AreEqual (1, releaseStreamCount);
			Assert.AreEqual (data.Length, provider.Stream.Position);
			Assert.AreEqual (Convert.ToBase64String (data), contents.ToString ());

			provider.Stream.Position = 0;
			writer.WriteBase64Event += (o, e) => {
				throw new Exception ("incomplete!");
			};
			getStreamCount = 0;
			releaseStreamCount = 0;
			Exception thrown = null;
			try {
				writer.WriteValue (provider);
			}
			catch (Exception e) {
				thrown = e;
			}
			Assert.IsNotNull (thrown);
			Assert.AreEqual (1, getStreamCount);
			Assert.AreEqual (0, releaseStreamCount);
		}