diff --git a/UnitTesting/GlobalUsings.cs b/UnitTesting/GlobalUsings.cs new file mode 100644 index 0000000..cefced4 --- /dev/null +++ b/UnitTesting/GlobalUsings.cs @@ -0,0 +1 @@ +global using NUnit.Framework; \ No newline at end of file diff --git a/UnitTesting/TirePressureMonitoringSystem.Test/AlarmTest.cs b/UnitTesting/TirePressureMonitoringSystem.Test/AlarmTest.cs new file mode 100644 index 0000000..bbc3f36 --- /dev/null +++ b/UnitTesting/TirePressureMonitoringSystem.Test/AlarmTest.cs @@ -0,0 +1,47 @@ +using Moq; +using TDDMicroExercises.TirePressureMonitoringSystem; + +namespace UnitTesting.TirePressureMonitoringSystem.Test +{ + //Testing the Alarm class using mock implementation of Sensor + + [TestFixture] + public class AlarmTest + { + [Test] + public void Check_WhetherAlarmOnWhenPressureBelowLowThreshold() + { + var mockSensor = new Mock(); + mockSensor.Setup(sensor => sensor.PopNextPressurePsiValue()).Returns(15); + var alarm = new Alarm(mockSensor.Object); + + alarm.Check(); + + Assert.IsTrue(alarm.AlarmOn); + } + + [Test] + public void Check_WhetherAlarmOnWhenPressureAboveHighThreshold() + { + var mockSensor = new Mock(); + mockSensor.Setup(sensor => sensor.PopNextPressurePsiValue()).Returns(22); + var alarm = new Alarm(mockSensor.Object); + + alarm.Check(); + + Assert.IsTrue(alarm.AlarmOn); + } + + [Test] + public void Check_WhetherAlarmOffWhenPressureWithinThresholdRange() + { + var mockSensor = new Mock(); + mockSensor.Setup(sensor => sensor.PopNextPressurePsiValue()).Returns(18); + var alarm = new Alarm(mockSensor.Object); + + alarm.Check(); + + Assert.IsFalse(alarm.AlarmOn); + } + } +} \ No newline at end of file diff --git a/UnitTesting/TurnTicketDispenser.Test/TicketDispenserTest.cs b/UnitTesting/TurnTicketDispenser.Test/TicketDispenserTest.cs new file mode 100644 index 0000000..c1b0f65 --- /dev/null +++ b/UnitTesting/TurnTicketDispenser.Test/TicketDispenserTest.cs @@ -0,0 +1,76 @@ +using Moq; +using TDDMicroExercises.TurnTicketDispenser; + +namespace UnitTesting.TurnTicketDispenser.Test +{ + //Testing the TicketDispenser class using mock implementation of ITurnNumberSource + + [TestFixture] + public class TicketDispenserTest + { + [Test] + public void Dispenser_ShouldReturnNonNegativeTicketTurnNumber() + { + var mockTurnNumberSequence = new Mock(); + mockTurnNumberSequence.Setup(seq => seq.GetNextTurnNumber()).Returns(1); + + var dispenser = new TicketDispenser(mockTurnNumberSequence.Object); + var ticket = dispenser.GetTurnTicket(); + + Assert.That(ticket.TurnNumber, Is.GreaterThanOrEqualTo(0)); + } + + [Test] + public void Dispenser_ShouldReturnSubsequentTicketTurnNumberEveryTime() + { + var mockTurnNumberSequence = new Mock(); + mockTurnNumberSequence.SetupSequence(seq => seq.GetNextTurnNumber()) + .Returns(1) + .Returns(2) + .Returns(3); + + var ticketDispenser = new TicketDispenser(mockTurnNumberSequence.Object); + + var ticket1 = ticketDispenser.GetTurnTicket(); + var ticket2 = ticketDispenser.GetTurnTicket(); + var ticket3 = ticketDispenser.GetTurnTicket(); + + Assert.AreEqual(1, ticket1.TurnNumber); + Assert.AreEqual(2, ticket2.TurnNumber); + Assert.AreEqual(3, ticket3.TurnNumber); + } + + [Test] + public void MultipleDispensers_ShouldReturnSubsequentTicketTurnNumber() + { + var mockTurnNumberSequence = new Mock(); + mockTurnNumberSequence.SetupSequence(seq => seq.GetNextTurnNumber()) + .Returns(11) + .Returns(12); + + var dispenser1 = new TicketDispenser(mockTurnNumberSequence.Object); + var dispenser2 = new TicketDispenser(mockTurnNumberSequence.Object); + + var ticket1 = dispenser1.GetTurnTicket(); + var ticket2 = dispenser2.GetTurnTicket(); + + Assert.AreEqual(11, ticket1.TurnNumber); + Assert.AreEqual(12, ticket2.TurnNumber); + } + + [Test] + public void MultipleDispensers_ShouldReturnDistinctTicketTurnNumber() + { + var turnNumberSequence = new TurnNumberSequence(); + var dispenserFactory = new TicketDispenserFactory(turnNumberSequence); + + var dispenser1 = dispenserFactory.CreateTicketDispenser(); + var dispenser2 = dispenserFactory.CreateTicketDispenser(); + + var ticket1 = dispenser1.GetTurnTicket(); + var ticket2 = dispenser2.GetTurnTicket(); + + Assert.That(ticket1.TurnNumber, Is.Not.EqualTo(ticket2.TurnNumber)); + } + } +} diff --git a/UnitTesting/UnitTesting.csproj b/UnitTesting/UnitTesting.csproj new file mode 100644 index 0000000..debc0da --- /dev/null +++ b/UnitTesting/UnitTesting.csproj @@ -0,0 +1,25 @@ + + + + net6.0 + enable + enable + + false + true + + + + + + + + + + + + + + + + diff --git a/src/TDDMicroExercises.csproj b/src/TDDMicroExercises.csproj index 3ae5879..e4edf20 100644 --- a/src/TDDMicroExercises.csproj +++ b/src/TDDMicroExercises.csproj @@ -1,5 +1,8 @@  + + + Debug AnyCPU @@ -10,11 +13,14 @@ Properties TDDMicroExercises TDDMicroExercises - v4.5.2 + v4.8 2.0 + + + true @@ -34,7 +40,23 @@ 4 + + packages\Castle.Core.5.1.1\lib\net462\Castle.Core.dll + + + packages\Microsoft.CodeCoverage.17.7.1\lib\net462\Microsoft.VisualStudio.CodeCoverage.Shim.dll + + + packages\Moq.4.20.69\lib\net462\Moq.dll + + + + packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll + + + packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll + lib\nunit.framework.dll @@ -45,9 +67,14 @@ + + + + + @@ -67,17 +94,25 @@ - - - - - - + + + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. + + + + + + + + +