using System.Threading;
using NUnit.Framework;
using Amib.Threading;
namespace SmartThreadPoolTests
{
///
/// Summary description for TestThreadIsBackground.
///
[TestFixture]
[Category("TestThreadIsBackground")]
public class TestThreadIsBackground
{
[Test]
public void TestIsBackground()
{
CheckIsBackground(true);
}
[Test]
public void TestNotIsBackground()
{
CheckIsBackground(false);
}
private static void CheckIsBackground(bool isBackground)
{
STPStartInfo stpStartInfo = new STPStartInfo();
stpStartInfo.AreThreadsBackground = isBackground;
SmartThreadPool stp = new SmartThreadPool(stpStartInfo);
IWorkItemResult wir = stp.QueueWorkItem(() => GetCurrentThreadIsBackground());
bool resultIsBackground = wir.GetResult();
stp.WaitForIdle();
Assert.AreEqual(isBackground, resultIsBackground);
}
private static bool GetCurrentThreadIsBackground()
{
return Thread.CurrentThread.IsBackground;
}
}
}