mer unit test
This commit is contained in:
parent
8ff1f69ea3
commit
5b6d47da85
22
Emne 3/Calc/Calc.sln
Normal file
22
Emne 3/Calc/Calc.sln
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calc", "Calc\Calc.csproj", "{316D55FE-FAD0-4686-BD29-68E4B6B8DBE8}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Calculator.Test", "Calculator.Test\Calculator.Test.csproj", "{57206669-909C-4445-B3B9-2444902E1C20}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{316D55FE-FAD0-4686-BD29-68E4B6B8DBE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{316D55FE-FAD0-4686-BD29-68E4B6B8DBE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{316D55FE-FAD0-4686-BD29-68E4B6B8DBE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{316D55FE-FAD0-4686-BD29-68E4B6B8DBE8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{57206669-909C-4445-B3B9-2444902E1C20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{57206669-909C-4445-B3B9-2444902E1C20}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{57206669-909C-4445-B3B9-2444902E1C20}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{57206669-909C-4445-B3B9-2444902E1C20}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
10
Emne 3/Calc/Calc/Calc.csproj
Normal file
10
Emne 3/Calc/Calc/Calc.csproj
Normal file
|
@ -0,0 +1,10 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
29
Emne 3/Calc/Calc/Calculator.cs
Normal file
29
Emne 3/Calc/Calc/Calculator.cs
Normal file
|
@ -0,0 +1,29 @@
|
|||
namespace Calc;
|
||||
|
||||
public class Calculator
|
||||
{
|
||||
public int LeggSammen(int a, int b)
|
||||
{
|
||||
return a + b;
|
||||
}
|
||||
|
||||
public int TrekkFra(int a, int b)
|
||||
{
|
||||
return a - b;
|
||||
}
|
||||
|
||||
public int Multipliser(int a, int b)
|
||||
{
|
||||
return a * b;
|
||||
}
|
||||
|
||||
public int Divider(int a, int b)
|
||||
{
|
||||
if (b == 0)
|
||||
{
|
||||
throw new ArgumentException("Cannot divide by zero.");
|
||||
}
|
||||
return a / b;
|
||||
}
|
||||
|
||||
}
|
3
Emne 3/Calc/Calc/Program.cs
Normal file
3
Emne 3/Calc/Calc/Program.cs
Normal file
|
@ -0,0 +1,3 @@
|
|||
// See https://aka.ms/new-console-template for more information
|
||||
|
||||
Console.WriteLine("Hello, World!");
|
28
Emne 3/Calc/Calculator.Test/Calculator.Test.csproj
Normal file
28
Emne 3/Calc/Calculator.Test/Calculator.Test.csproj
Normal file
|
@ -0,0 +1,28 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="NUnit" Version="3.14.0"/>
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="NUnit.Framework"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Calc\Calc.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
43
Emne 3/Calc/Calculator.Test/UnitTest1.cs
Normal file
43
Emne 3/Calc/Calculator.Test/UnitTest1.cs
Normal file
|
@ -0,0 +1,43 @@
|
|||
namespace Calculator.Test;
|
||||
|
||||
public class Tests
|
||||
{
|
||||
[Test]
|
||||
public void TestLeggSammen()
|
||||
{
|
||||
var calc = new Calc.Calculator();
|
||||
var sum = calc.LeggSammen(1, 2);
|
||||
Assert.That(sum, Is.EqualTo(3));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestTrekkFra()
|
||||
{
|
||||
var calc = new Calc.Calculator();
|
||||
var sum = calc.TrekkFra(2, 1);
|
||||
Assert.That(sum, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestMultipliser()
|
||||
{
|
||||
var calc = new Calc.Calculator();
|
||||
var sum = calc.Multipliser(2, 2);
|
||||
Assert.That(sum, Is.EqualTo(4));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDivision()
|
||||
{
|
||||
var calc = new Calc.Calculator();
|
||||
var sum = calc.Divider(4, 2);
|
||||
Assert.That(sum, Is.EqualTo(2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDivisionByZero()
|
||||
{
|
||||
var calc = new Calc.Calculator();
|
||||
Assert.Throws<ArgumentException>(() => calc.Divider(4, 0));
|
||||
}
|
||||
}
|
28
Emne 3/StigespilletTDD/GameTest/GameTest.csproj
Normal file
28
Emne 3/StigespilletTDD/GameTest/GameTest.csproj
Normal file
|
@ -0,0 +1,28 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="NUnit" Version="3.14.0"/>
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="NUnit.Framework"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StigespilletTDD\StigespilletTDD.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
12
Emne 3/StigespilletTDD/GameTest/UnitTest1.cs
Normal file
12
Emne 3/StigespilletTDD/GameTest/UnitTest1.cs
Normal file
|
@ -0,0 +1,12 @@
|
|||
namespace GameTest;
|
||||
using StigespilletTDD
|
||||
|
||||
public class Tests
|
||||
{
|
||||
|
||||
[Test]
|
||||
public void ()
|
||||
{
|
||||
Assert.Pass();
|
||||
}
|
||||
}
|
22
Emne 3/StigespilletTDD/StigespilletTDD.sln
Normal file
22
Emne 3/StigespilletTDD/StigespilletTDD.sln
Normal file
|
@ -0,0 +1,22 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StigespilletTDD", "StigespilletTDD\StigespilletTDD.csproj", "{EA04112E-4F91-4EFF-98A6-09C05202F318}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StigespilletTDD.test", "StigespilletTDD.test\StigespilletTDD.test.csproj", "{BCE58F6B-442E-4977-A26E-10E39AE516BD}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{EA04112E-4F91-4EFF-98A6-09C05202F318}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{EA04112E-4F91-4EFF-98A6-09C05202F318}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{EA04112E-4F91-4EFF-98A6-09C05202F318}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{EA04112E-4F91-4EFF-98A6-09C05202F318}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BCE58F6B-442E-4977-A26E-10E39AE516BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{BCE58F6B-442E-4977-A26E-10E39AE516BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{BCE58F6B-442E-4977-A26E-10E39AE516BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{BCE58F6B-442E-4977-A26E-10E39AE516BD}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
|
@ -0,0 +1,28 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<IsPackable>false</IsPackable>
|
||||
<IsTestProject>true</IsTestProject>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="coverlet.collector" Version="6.0.0"/>
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
|
||||
<PackageReference Include="NUnit" Version="3.14.0"/>
|
||||
<PackageReference Include="NUnit.Analyzers" Version="3.9.0"/>
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Using Include="NUnit.Framework"/>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\StigespilletTDD\StigespilletTDD.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
72
Emne 3/StigespilletTDD/StigespilletTDD.test/UnitTest1.cs
Normal file
72
Emne 3/StigespilletTDD/StigespilletTDD.test/UnitTest1.cs
Normal file
|
@ -0,0 +1,72 @@
|
|||
|
||||
namespace StigespilletTDD.test;
|
||||
using StigespilletTDD;
|
||||
|
||||
public class Tests
|
||||
{
|
||||
[Test]
|
||||
public void TestStartAt0()
|
||||
{
|
||||
var game = new Game(4);
|
||||
int position = game.GetPlayerPosition(0);
|
||||
Assert.AreEqual(0, position);
|
||||
|
||||
}
|
||||
[Test]
|
||||
public void TestInitialMove()
|
||||
{
|
||||
var game = new Game(4);
|
||||
game.Move(1, 4);
|
||||
var position = game.GetPlayerPosition(0);
|
||||
Assert.AreEqual(4, position);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestMultiplePlayerPosition()
|
||||
{
|
||||
var game = new Game(2);
|
||||
game.Move(0, 3);
|
||||
game.Move(1, 4);
|
||||
Assert.AreEqual(3, game.GetPlayerPosition(0));
|
||||
Assert.AreEqual(4, game.GetPlayerPosition(1));
|
||||
}
|
||||
|
||||
[TestCase(1,40)]
|
||||
[TestCase(36,52)]
|
||||
[TestCase(24,5)]
|
||||
public void TestLadder(int posFrom, int posTo)
|
||||
{
|
||||
var game = new Game(1);
|
||||
game.Move(0,posFrom);
|
||||
Assert.AreEqual(posTo, game.GetPlayerPosition(0));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestDiceMax6()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestNotWinning()
|
||||
{
|
||||
var game = new Game(1);
|
||||
game.Move(0, 2);
|
||||
var winner = game.GetWinner();
|
||||
Assert.IsNull(winner);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TestWinning()
|
||||
{
|
||||
var game = new Game(1);
|
||||
game.Move(0, 1);
|
||||
game.Move(0, 3);
|
||||
game.Move(0, 3);
|
||||
game.Move(0, 6);
|
||||
game.Move(0, 2);
|
||||
var winner = game.GetWinner();
|
||||
Assert.AreEqual(0, winner);
|
||||
|
||||
}
|
||||
}
|
63
Emne 3/StigespilletTDD/StigespilletTDD/Game.cs
Normal file
63
Emne 3/StigespilletTDD/StigespilletTDD/Game.cs
Normal file
|
@ -0,0 +1,63 @@
|
|||
namespace StigespilletTDD;
|
||||
|
||||
public class Game
|
||||
{
|
||||
private int[] _positions;
|
||||
private readonly Ladder[] _ladders;
|
||||
public Game(int playerCount)
|
||||
{
|
||||
_positions = new int[playerCount];
|
||||
_ladders = new[]
|
||||
{
|
||||
new Ladder(1, 40),
|
||||
new Ladder(8, 10),
|
||||
new Ladder(36, 52),
|
||||
new Ladder(43, 62),
|
||||
new Ladder(49, 79),
|
||||
new Ladder(65, 82),
|
||||
new Ladder(68, 85),
|
||||
|
||||
new Ladder(87, 70),
|
||||
new Ladder(74, 12),
|
||||
new Ladder(64, 27),
|
||||
new Ladder(56, 37),
|
||||
new Ladder(42, 30),
|
||||
new Ladder(33, 3),
|
||||
new Ladder(24, 5),
|
||||
};
|
||||
}
|
||||
|
||||
public int GetPlayerPosition(int playerIndex)
|
||||
{
|
||||
return _positions[playerIndex];
|
||||
}
|
||||
|
||||
public void Move(int playerIndex, int moveCount)
|
||||
{
|
||||
var pos = _positions[playerIndex] += moveCount;
|
||||
var ladder = FindLadder(pos);
|
||||
if (ladder != null)
|
||||
{
|
||||
_positions[playerIndex] = ladder.PositionTo;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private Ladder FindLadder(int pos)
|
||||
{
|
||||
return _ladders.FirstOrDefault(l => l.PositionFrom == pos);
|
||||
}
|
||||
|
||||
public int? GetWinner()
|
||||
{
|
||||
if (GetPlayerPosition(0) == 90)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
13
Emne 3/StigespilletTDD/StigespilletTDD/Ladder.cs
Normal file
13
Emne 3/StigespilletTDD/StigespilletTDD/Ladder.cs
Normal file
|
@ -0,0 +1,13 @@
|
|||
namespace StigespilletTDD;
|
||||
|
||||
public class Ladder
|
||||
{
|
||||
public int PositionFrom { get; set; }
|
||||
public int PositionTo { get; set; }
|
||||
|
||||
public Ladder(int positionFrom, int positionTo)
|
||||
{
|
||||
PositionFrom = positionFrom;
|
||||
PositionTo = positionTo;
|
||||
}
|
||||
}
|
3
Emne 3/StigespilletTDD/StigespilletTDD/Program.cs
Normal file
3
Emne 3/StigespilletTDD/StigespilletTDD/Program.cs
Normal file
|
@ -0,0 +1,3 @@
|
|||
// See https://aka.ms/new-console-template for more information
|
||||
|
||||
Console.WriteLine("Hello, World!");
|
|
@ -0,0 +1,10 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
</Project>
|
Loading…
Reference in a new issue