Util應用程式框架公共操作類(五):異常公共操作類
阿新 • • 發佈:2018-12-27
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
}
}