Files
EightBitNet/EightBit/EightBit.UnitTest/DeviceTests.cs
2025-05-13 09:52:12 +01:00

86 lines
2.4 KiB
C#

namespace EightBit.UnitTest
{
using EightBit;
using Microsoft.VisualStudio.TestTools.UnitTesting;
[TestClass]
public class DeviceTests
{
[TestMethod]
public void Device_InitialState_IsNotPowered()
{
var device = new Device();
Assert.IsFalse(device.Powered);
Assert.AreEqual(PinLevel.Low, device.POWER);
}
[TestMethod]
public void Device_RaisePOWER_SetsPoweredHigh_AndFiresEvents()
{
var device = new Device();
bool raising = false, raised = false;
device.RaisingPOWER += (s, e) => raising = true;
device.RaisedPOWER += (s, e) => raised = true;
device.RaisePOWER();
Assert.IsTrue(device.Powered);
Assert.AreEqual(PinLevel.High, device.POWER);
Assert.IsTrue(raising);
Assert.IsTrue(raised);
}
[TestMethod]
public void Device_LowerPOWER_SetsPoweredLow_AndFiresEvents()
{
var device = new Device();
device.RaisePOWER(); // Set to High first
bool lowering = false, lowered = false;
device.LoweringPOWER += (s, e) => lowering = true;
device.LoweredPOWER += (s, e) => lowered = true;
device.LowerPOWER();
Assert.IsFalse(device.Powered);
Assert.AreEqual(PinLevel.Low, device.POWER);
Assert.IsTrue(lowering);
Assert.IsTrue(lowered);
}
[TestMethod]
public void Device_RaisePOWER_DoesNothing_IfAlreadyHigh()
{
var device = new Device();
device.RaisePOWER();
bool raising = false, raised = false;
device.RaisingPOWER += (s, e) => raising = true;
device.RaisedPOWER += (s, e) => raised = true;
device.RaisePOWER();
Assert.IsTrue(device.Powered);
Assert.IsFalse(raising);
Assert.IsFalse(raised);
}
[TestMethod]
public void Device_LowerPOWER_DoesNothing_IfAlreadyLow()
{
var device = new Device();
bool lowering = false, lowered = false;
device.LoweringPOWER += (s, e) => lowering = true;
device.LoweredPOWER += (s, e) => lowered = true;
device.LowerPOWER();
Assert.IsFalse(device.Powered);
Assert.IsFalse(lowering);
Assert.IsFalse(lowered);
}
}
}