1. 程式人生 > >Util應用程式框架公共操作類(五):異常公共操作類

Util應用程式框架公共操作類(五):異常公共操作類

using System; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; using Util.Logs; namespace Util.Tests { /// <summary> /// 應用程式異常測試 /// </summary> [TestClass] public class WarningTest { #region 常量 /// <summary> /// 異常訊息
/// </summary> public const string Message = "A"; /// <summary> /// 異常訊息2 /// </summary> public const string Message2 = "B"; /// <summary> /// 異常訊息3 /// </summary> public const string Message3 = "C";
/// <summary> /// 異常訊息4 /// </summary> public const string Message4 = "D"; #endregion #region TestValidate_MessageIsNull(驗證訊息為空) /// <summary> /// 驗證訊息為空 /// </summary> [TestMethod] public void TestValidate_MessageIsNull() { Warning warning
= new Warning( null, "P1" ); Assert.AreEqual( string.Empty, warning.Message ); } #endregion #region TestCode(設定錯誤碼) /// <summary> /// 設定錯誤碼 /// </summary> [TestMethod] public void TestCode() { Warning warning = new Warning( Message, "P1" ); Assert.AreEqual( "P1", warning.Code ); } #endregion #region TestLogLevel(測試日誌級別) /// <summary> /// 測試日誌級別 /// </summary> [TestMethod] public void TestLogLevel() { Warning warning = new Warning( Message, "P1", LogLevel.Fatal ); Assert.AreEqual( LogLevel.Fatal, warning.Level ); } #endregion #region TestMessage_OnlyMessage(僅設定訊息) /// <summary> /// 僅設定訊息 /// </summary> [TestMethod] public void TestMessage_OnlyMessage() { Warning warning = new Warning( Message ); Assert.AreEqual( Message, warning.Message ); } #endregion #region TestMessage_OnlyException(僅設定異常) /// <summary> /// 僅設定異常 /// </summary> [TestMethod] public void TestMessage_OnlyException() { Warning warning = new Warning( GetException() ); Assert.AreEqual( Message, warning.Message ); } /// <summary> /// 獲取異常 /// </summary> private Exception GetException() { return new Exception( Message ); } #endregion #region TestMessage_Message_Exception(設定錯誤訊息和異常) /// <summary> /// 設定錯誤訊息和異常 /// </summary> [TestMethod] public void TestMessage_Message_Exception() { Warning warning = new Warning( Message2, "P1", LogLevel.Fatal, GetException() ); Assert.AreEqual( string.Format( "{0}\r\n{1}", Message2, Message ), warning.Message ); } #endregion #region TestMessage_2LayerException(設定2層異常) /// <summary> /// 設定2層異常 /// </summary> [TestMethod] public void TestMessage_2LayerException() { Warning warning = new Warning( Message3, "P1", LogLevel.Fatal, Get2LayerException() ); Assert.AreEqual( string.Format( "{0}\r\n{1}\r\n{2}", Message3, Message2, Message ), warning.Message ); } /// <summary> /// 獲取2層異常 /// </summary> private Exception Get2LayerException() { return new Exception( Message2, new Exception( Message ) ); } #endregion #region TestMessage_Warning(設定Warning異常) /// <summary> /// 設定Warning異常 /// </summary> [TestMethod] public void TestMessage_Warning() { Warning warning = new Warning( GetWarning() ); Assert.AreEqual( Message, warning.Message ); } /// <summary> /// 獲取異常 /// </summary> private Warning GetWarning() { return new Warning( Message ); } #endregion #region TestMessage_2LayerWarning(設定2層Warning異常) /// <summary> /// 設定2層Warning異常 /// </summary> [TestMethod] public void TestMessage_2LayerWarning() { Warning warning = new Warning( Message3, "", Get2LayerWarning() ); Assert.AreEqual( string.Format( "{0}\r\n{1}\r\n{2}", Message3, Message2, Message ), warning.Message ); } /// <summary> /// 獲取2層異常 /// </summary> private Warning Get2LayerWarning() { return new Warning( Message2, "", new Warning( Message ) ); } #endregion #region TestMessage_3LayerWarning(設定3層Warning異常) /// <summary> /// 設定3層Warning異常 /// </summary> [TestMethod] public void TestMessage_3LayerWarning() { Warning warning = new Warning( Message4, "", Get3LayerWarning() ); Assert.AreEqual( string.Format( "{0}\r\n{1}\r\n{2}\r\n{3}", Message4, Message3, Message2, Message ), warning.Message ); } /// <summary> /// 獲取3層異常 /// </summary> private Warning Get3LayerWarning() { return new Warning( Message3, "", new Exception( Message2, new Warning( Message ) ) ); } #endregion #region 新增異常資料 /// <summary> /// 新增異常資料 /// </summary> [TestMethod] public void TestAdd_1Layer() { Warning warning = new Warning( Message ); warning.Data.Add( "key1", "value1" ); warning.Data.Add( "key2", "value2" ); StringBuilder expected = new StringBuilder(); expected.AppendLine( Message ); expected.AppendLine( "key1:value1" ); expected.AppendLine( "key2:value2" ); Assert.AreEqual( expected.ToString(), warning.Message ); } /// <summary> /// 新增異常資料 /// </summary> [TestMethod] public void TestAdd_2Layer() { Exception exception = new Exception( Message ); exception.Data.Add( "a", "a1" ); exception.Data.Add( "b", "b1" ); Warning warning = new Warning( exception ); warning.Data.Add( "key1", "value1" ); warning.Data.Add( "key2", "value2" ); StringBuilder expected = new StringBuilder(); expected.AppendLine( Message ); expected.AppendLine( "a:a1" ); expected.AppendLine( "b:b1" ); expected.AppendLine( "key1:value1" ); expected.AppendLine( "key2:value2" ); Assert.AreEqual( expected.ToString(), warning.Message ); } #endregion } }