Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions elevator/Elevator.Tests/Elevator.Tests/Elevator.Tests.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\..\Elevator\Elevator.Domain\Elevator.Domain.csproj" />
<ProjectReference Include="..\..\Elevator\Evelator\Elevator.csproj" />
</ItemGroup>

</Project>
89 changes: 89 additions & 0 deletions elevator/Elevator.Tests/Elevator.Tests/TestRunProgram.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
using Elevator.Domain;
using NUnit.Framework;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Elevator.Tests
{
[TestFixture]
public class TestRunProgram
{
private List<Floor> Floors { get; set; }
[SetUp]
public void SetUp()
{
Floors = new List<Floor>() {
new Floor(0),
new Floor(1),
new Floor(2),
new Floor(3),
new Floor(4),
new Floor(5),
new Floor(6),
new Floor(7),
new Floor(8),
new Floor(9),
new Floor(10)
};
}

// Invalid Tests
[TestCase("-1", true, nameof(Floor))]
[TestCase("11", true, nameof(Floor))]
[TestCase("u", true, nameof(Floor))]
[TestCase("U", true, nameof(Floor))]
[TestCase("10 q", true, nameof(Direction))]
[TestCase("11 u", true, nameof(Floor))]
[TestCase("-2 u", true, nameof(Floor))]
[TestCase("10u", true, nameof(Floor))]
[TestCase("10u 30", true, nameof(Floor))]
[TestCase("3 party", true, nameof(Direction))]
// Valid internal button press
[TestCase("q", false, null)]
[TestCase("1", false, null)]
[TestCase("10", false, null)]
[TestCase("10", false, null)]
// Valid external button press
[TestCase("10 d", false, null)]
[TestCase("10 D", false, null)]
[TestCase("10 u", false, null)]
[TestCase("10 U", false, null)]
[TestCase("5 U", false, null)]
[TestCase("5 D", false, null)]
[TestCase(" 5 D ", false, null)]
public void TestProcessInput(string input, bool expectedError, string errorMessage)
{
var program = new RunProgram();
var result = program.ProcessInput(input, Floors);
Assert.AreEqual(expectedError, result.HasError);
Assert.AreEqual(errorMessage, result.ErrorMessage);
}

[Test]
public void TestFloorExternalButtonPress_5D()
{
var program = new RunProgram();
var result = program.ProcessInput("5 d", Floors);
Assert.IsFalse(result.HasError);
Assert.True(Floors[5].DownButtonPressed);
}

[Test]
public void TestFloorExternalButtonPress_5U()
{
var program = new RunProgram();
var result = program.ProcessInput("5 u", Floors);
Assert.IsFalse(result.HasError);
Assert.True(Floors[5].UpButtonPressed);
}

[Test]
public void TestFloorInternalButtonPress_5()
{
var program = new RunProgram();
var result = program.ProcessInput("5", Floors);
Assert.IsFalse(result.HasError);
Assert.True(Floors[5].InternalButtonPress);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
<PackageReference Include="NUnit" Version="3.13.3" />
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
</ItemGroup>

<ItemGroup>
<ProjectReference Include="..\Elevator.Domain\Elevator.Domain.csproj" />
</ItemGroup>

</Project>
146 changes: 146 additions & 0 deletions elevator/Elevator/Elevator.Domain.Tests/TestElevator.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
using NUnit.Framework;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace Elevator.Domain.Tests
{
[TestFixture]
public class TestElevator
{
private List<Floor> Floors { get; set; }
[SetUp]
public void SetUp()
{
Floors = new List<Floor>() {
new Floor(0),
new Floor(1),
new Floor(2),
new Floor(3),
new Floor(4),
new Floor(5),
new Floor(6),
new Floor(7),
new Floor(8),
new Floor(9),
new Floor(10)
};
}

[Test]
public async Task Test_DirectionChangeABottom()
{
var elevator = new Elevator(Floors, 0, Direction.Down);
await elevator.EvaulateFloors();
Assert.AreEqual(Direction.Up, elevator.Direction);
}

[Test]
public async Task Test_DirectionChangeATop()
{
var elevator = new Elevator(Floors, 10, Direction.Up);
await elevator.EvaulateFloors();
Assert.AreEqual(Direction.Down, elevator.Direction);
}

[TestCase(0, 1)]
[TestCase(1, 2)]
[TestCase(10, 10)]
public async Task Test_GoingUp(int currentFloor, int expected)
{
var elevator = new Elevator(Floors, currentFloor, Direction.Up);
await elevator.EvaulateFloors();
Assert.AreEqual(expected, elevator.CurrentFloor);
}

[TestCase(0, 0)]
[TestCase(2, 1)]
[TestCase(10, 9)]
public async Task Test_GoingDown(int currentFloor, int expected)
{
var elevator = new Elevator(Floors, currentFloor, Direction.Down);
await elevator.EvaulateFloors();
Assert.AreEqual(expected, elevator.CurrentFloor);
}

[Test]
public async Task Test_DownButtonPress_GoingDown()
{
Floors[3].ButtonPressed("d");
var elevator = new Elevator(Floors, 3, Direction.Down);
await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].DownButtonPressed);
}

[Test]
public async Task Test_UpButtonPress_GoingDown()
{
Floors[3].ButtonPressed("u");
var elevator = new Elevator(Floors, 3, Direction.Down);
await elevator.EvaulateFloors();
Assert.AreEqual(true, Floors[3].UpButtonPressed);
}

[Test]
public async Task Test_UpButtonPress_GoingUp()
{
Floors[3].ButtonPressed("u");
var elevator = new Elevator(Floors, 3, Direction.Up);
await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].UpButtonPressed);
}

[Test]
public async Task Test_DownButtonPress_GoingUp()
{
Floors[3].ButtonPressed("d");
var elevator = new Elevator(Floors, 3, Direction.Up);
await elevator.EvaulateFloors();
Assert.AreEqual(true, Floors[3].DownButtonPressed);
}

[Test]
public async Task Test_ButtonPressFromInside_GoingUp()
{
Floors[3].ButtonPressedFromElevator();
var elevator = new Elevator(Floors, 3, Direction.Up);
await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].InternalButtonPress);
}

[Test]
public async Task Test_ButtonPressFromInside_GoingDown()
{
Floors[3].ButtonPressedFromElevator();
var elevator = new Elevator(Floors, 3, Direction.Down);
await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].InternalButtonPress);
}


[Test]
public async Task Test_CheckingWhileGoingUp()
{
Floors[3].ButtonPressed("u");
var elevator = new Elevator(Floors, 2, Direction.Up);

await elevator.EvaulateFloors();
Assert.AreEqual(true, Floors[3].UpButtonPressed);

await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].UpButtonPressed);

await elevator.EvaulateFloors();
Assert.AreEqual(false, Floors[3].UpButtonPressed);
}

[Test]
public async Task Test_StopLongestPath()
{
Floors[3].ButtonPressed("u");
var elevator = new Elevator(Floors, 4, Direction.Up);

await elevator.Stop();
Assert.AreEqual(false, Floors[3].UpButtonPressed);
}
}
}
15 changes: 15 additions & 0 deletions elevator/Elevator/Elevator.Domain/Direction.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Elevator.Domain
{
public enum Direction
{
Down = -1,
Stopped = 0,
Up = 1
}
}
7 changes: 7 additions & 0 deletions elevator/Elevator/Elevator.Domain/Elevator.Domain.csproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>

</Project>
Loading