Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/HeuristicLab.Algorithms.NSGA3-3.3.Test.csproj
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/HeuristicLab.Algorithms.NSGA3-3.3.Test.csproj	(revision 17666)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/HeuristicLab.Algorithms.NSGA3-3.3.Test.csproj	(revision 17666)
@@ -0,0 +1,75 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" />
+  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProjectGuid>{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}</ProjectGuid>
+    <OutputType>Library</OutputType>
+    <AppDesignerFolder>Properties</AppDesignerFolder>
+    <RootNamespace>HeuristicLab.Algorithms.NSGA3_3._3.Test</RootNamespace>
+    <AssemblyName>HeuristicLab.Algorithms.NSGA3-3.3.Test</AssemblyName>
+    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
+    <FileAlignment>512</FileAlignment>
+    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
+    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">15.0</VisualStudioVersion>
+    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
+    <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
+    <IsCodedUITest>False</IsCodedUITest>
+    <TestProjectType>UnitTest</TestProjectType>
+    <NuGetPackageImportStamp>
+    </NuGetPackageImportStamp>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>pdbonly</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.dll</HintPath>
+    </Reference>
+    <Reference Include="Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
+      <HintPath>..\packages\MSTest.TestFramework.2.1.1\lib\net45\Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions.dll</HintPath>
+    </Reference>
+    <Reference Include="System" />
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="ReferencePointsTests.cs" />
+    <Compile Include="UtilityTests.cs" />
+    <Compile Include="Properties\AssemblyInfo.cs" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="packages.config" />
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\HeuristicLab.Algorithms.NSGA3\3.3\HeuristicLab.Algorithms.NSGA3-3.3.csproj">
+      <Project>{557a23ce-9a5e-44f5-aea2-4f4f33c1511f}</Project>
+      <Name>HeuristicLab.Algorithms.NSGA3-3.3</Name>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
+    <PropertyGroup>
+      <ErrorText>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}.</ErrorText>
+    </PropertyGroup>
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.props'))" />
+    <Error Condition="!Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets'))" />
+  </Target>
+  <Import Project="..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\packages\MSTest.TestAdapter.2.1.1\build\net45\MSTest.TestAdapter.targets')" />
+</Project>
Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/Properties/AssemblyInfo.cs
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/Properties/AssemblyInfo.cs	(revision 17666)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/Properties/AssemblyInfo.cs	(revision 17666)
@@ -0,0 +1,20 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+[assembly: AssemblyTitle("HeuristicLab.Algorithms.NSGA3-3.3.Test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("HeuristicLab.Algorithms.NSGA3-3.3.Test")]
+[assembly: AssemblyCopyright("Copyright Â©  2020")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+[assembly: ComVisible(false)]
+
+[assembly: Guid("edefa5a2-ac02-484a-9334-d2d1a8ff5b31")]
+
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/ReferencePointsTests.cs
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/ReferencePointsTests.cs	(revision 17666)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/ReferencePointsTests.cs	(revision 17666)
@@ -0,0 +1,20 @@
+﻿using HeuristicLab.Algorithms.NSGA3;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace HeuristicLab.Algorithms.NSGA3_3._3.Test
+{
+    [TestClass]
+    public class ReferencePointsTests
+    {
+        [DataTestMethod]
+        [DataRow(3, 91)]
+        [DataRow(5, 210)]
+        [DataRow(8, 156)]
+        [DataRow(10, 275)]
+        [DataRow(15, 135)]
+        public void TestGetNumberOfGeneratedReferencePoints(int dimensions, int expectedNumberOfReferencePoints)
+        {
+            Assert.AreEqual(expectedNumberOfReferencePoints, ReferencePoint.GetNumberOfGeneratedReferencePoints(dimensions));
+        }
+    }
+}
Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs	(revision 17666)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs	(revision 17666)
@@ -0,0 +1,28 @@
+﻿using System;
+using HeuristicLab.Algorithms.NSGA3;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+
+namespace HeuristicLab.Algorithms.NSGA3_3._3.Test
+{
+    [TestClass]
+    public class UtilityTests
+    {
+        [DataTestMethod]
+        [DataRow(0, 1)]
+        [DataRow(1, 1)]
+        [DataRow(3, 6)]
+        [DataRow(4, 24)]
+        public void TestFactorial(int input, int result)
+        {
+            Assert.AreEqual(result, Utility.Factorial(input));
+        }
+
+        [DataTestMethod]
+        [DataRow(-1)]
+        [DataRow(31)]
+        public void TestFactorial2(int input)
+        {
+            Assert.ThrowsException<InvalidOperationException>(() => { Utility.Factorial(input); });
+        }
+    }
+}
Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/packages.config
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/packages.config	(revision 17666)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/packages.config	(revision 17666)
@@ -0,0 +1,5 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="MSTest.TestAdapter" version="2.1.1" targetFramework="net461" />
+  <package id="MSTest.TestFramework" version="2.1.1" targetFramework="net461" />
+</packages>
Index: branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.sln
===================================================================
--- branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.sln	(revision 17665)
+++ branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.sln	(revision 17666)
@@ -5,4 +5,6 @@
 MinimumVisualStudioVersion = 10.0.40219.1
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.NSGA3-3.3", "HeuristicLab.Algorithms.NSGA3\3.3\HeuristicLab.Algorithms.NSGA3-3.3.csproj", "{557A23CE-9A5E-44F5-AEA2-4F4F33C1511F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Algorithms.NSGA3-3.3.Test", "HeuristicLab.Algorithms.NSGA3-3.3.Test\HeuristicLab.Algorithms.NSGA3-3.3.Test.csproj", "{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}"
 EndProject
 Global
@@ -16,4 +18,8 @@
 		{557A23CE-9A5E-44F5-AEA2-4F4F33C1511F}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{557A23CE-9A5E-44F5-AEA2-4F4F33C1511F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{EDEFA5A2-AC02-484A-9334-D2D1A8FF5B31}.Release|Any CPU.Build.0 = Release|Any CPU
 	EndGlobalSection
 	GlobalSection(SolutionProperties) = preSolution
