Exemplo n.º 1
0
		public void Test()
		{
			string message = "This is a test of serialized event data.";
			Exception myError = new PlatformNotSupportedException("Error.Message", new InsufficientMemoryException());
			LogEventArgs arg1 = null;

			LogEventHandler eh = new LogEventHandler(delegate(object s, LogEventArgs e) { arg1 = e; });
			string[] stack = new string[] { "step 1", "step 2" };
			using (Log.Start(stack[0]))
			using (Log.Start(stack[1]))
			{
				Log.LogWrite += eh;
				Log.Error(myError, message);
				Log.LogWrite -= eh;
			}
			Assert.IsNotNull(arg1);
			Assert.AreEqual(1, arg1.Count);
			Assert.AreEqual(1, arg1.ToArray().Length);

			EventData data = arg1.ToArray()[0];
			Assert.IsNotNull(data);
			BasicLogTest.AssertMessage(GetType(), stack, data, LogLevels.Error, message, myError.GetType());
			Assert.AreEqual(String.Join("::", stack), data.ToString("{LogStack}"));

			BinaryFormatter ser = new BinaryFormatter();
			MemoryStream ms = new MemoryStream();
			
			ser.Serialize(ms, arg1);
			Assert.Greater((int)ms.Position, 0);

			ms.Position = 0;
			object restored = ser.Deserialize(ms);
			Assert.IsNotNull(restored);
			Assert.AreEqual(typeof(LogEventArgs), restored.GetType());
			LogEventArgs arg2 = restored as LogEventArgs;

			Assert.IsNotNull(arg2);
			Assert.AreEqual(1, arg2.Count);
			Assert.AreEqual(1, arg2.ToArray().Length);

			data = arg2.ToArray()[0];
			Assert.IsNotNull(data);

			Assert.IsNotNull(data.Exception);
			Assert.AreNotEqual(myError.GetType(), data.Exception.GetType());
			Assert.AreEqual(typeof(Log).Assembly, data.Exception.GetType().Assembly);
			Assert.AreEqual(myError.Message, data.Exception.Message);
			Assert.AreEqual(myError.StackTrace, data.Exception.StackTrace);
			Assert.AreEqual(myError.Source, data.Exception.Source);
			Assert.AreEqual(myError.ToString(), data.Exception.ToString());

			BasicLogTest.AssertMessage(GetType(), stack, data, LogLevels.Error, message, data.Exception.GetType());
		}