1 // Copyright (c) Microsoft. All rights reserved.
2 // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 
4 using System;
5 using System.IO;
6 using Microsoft.Build.Framework;
7 using Microsoft.Build.Exceptions;
8 using System.Text.RegularExpressions;
9 using Xunit;
10 using System.Runtime.Serialization.Formatters.Binary;
11 
12 namespace Microsoft.Build.UnitTests
13 {
14     public class InternalLoggerExceptionTests
15     {
16         /// <summary>
17         /// Verify I implemented ISerializable correctly
18         /// </summary>
19         [Fact]
SerializeDeserialize()20         public void SerializeDeserialize()
21         {
22             InternalLoggerException e = new InternalLoggerException(
23                 "message",
24                 new Exception("innerException"),
25                 new BuildStartedEventArgs("evMessage", "evHelpKeyword"),
26                 "errorCode",
27                 "helpKeyword",
28                 false);
29 
30             using (MemoryStream memstr = new MemoryStream())
31             {
32                 BinaryFormatter frm = new BinaryFormatter();
33 
34                 frm.Serialize(memstr, e);
35                 memstr.Position = 0;
36 
37                 InternalLoggerException e2 = (InternalLoggerException)frm.Deserialize(memstr);
38 
39                 Assert.Equal(e.BuildEventArgs.Message, e2.BuildEventArgs.Message);
40                 Assert.Equal(e.BuildEventArgs.HelpKeyword, e2.BuildEventArgs.HelpKeyword);
41                 Assert.Equal(e.ErrorCode, e2.ErrorCode);
42                 Assert.Equal(e.HelpKeyword, e2.HelpKeyword);
43                 Assert.Equal(e.Message, e2.Message);
44                 Assert.Equal(e.InnerException.Message, e2.InnerException.Message);
45             }
46         }
47     }
48 }
49