34 lines
803 B
Plaintext
34 lines
803 B
Plaintext
![]() |
[source,csharp]
|
||
|
----
|
||
|
[TestMethod]
|
||
|
[ExpectedException(typeof(InvalidOperationException))]
|
||
|
public void UsingTest()
|
||
|
{
|
||
|
Console.ForegroundColor = ConsoleColor.Black;
|
||
|
try
|
||
|
{
|
||
|
using var _ = new ConsoleAlert();
|
||
|
Assert.AreEqual(ConsoleColor.Red, Console.ForegroundColor);
|
||
|
throw new InvalidOperationException();
|
||
|
}
|
||
|
finally
|
||
|
{
|
||
|
Assert.AreEqual(ConsoleColor.Black, Console.ForegroundColor); // The exception itself is not relevant for the test.
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public sealed class ConsoleAlert : IDisposable
|
||
|
{
|
||
|
private readonly ConsoleColor previous;
|
||
|
|
||
|
public ConsoleAlert()
|
||
|
{
|
||
|
previous = Console.ForegroundColor;
|
||
|
Console.ForegroundColor = ConsoleColor.Red;
|
||
|
}
|
||
|
|
||
|
public void Dispose() =>
|
||
|
Console.ForegroundColor = previous;
|
||
|
}
|
||
|
----
|