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 17690)
+++ /branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/HeuristicLab.Algorithms.NSGA3-3.3.Test.csproj	(revision 17691)
@@ -40,4 +40,6 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Data-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec" />
+    <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec" />
     <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>
Index: /branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs
===================================================================
--- /branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs	(revision 17690)
+++ /branches/2825-NSGA3/HeuristicLab.Algorithms.NSGA3-3.3.Test/UtilityTests.cs	(revision 17691)
@@ -1,4 +1,6 @@
 ﻿using System;
+using System.Collections.Generic;
 using HeuristicLab.Algorithms.NSGA3;
+using HeuristicLab.Encodings.RealVectorEncoding;
 using Microsoft.VisualStudio.TestTools.UnitTesting;
 
@@ -36,4 +38,89 @@
             Assert.AreEqual(result, Utility.NCR(n, r));
         }
+
+        [DataTestMethod]
+        public void TestToFitnessMatrix()
+        {
+            Solution solution1 = new Solution(new RealVector());
+            Solution solution2 = new Solution(new RealVector());
+            Solution solution3 = new Solution(new RealVector());
+            Solution solution4 = new Solution(new RealVector());
+
+            solution1.Fitness = new double[] { 1.0, 2.0, 3.0 };
+            solution2.Fitness = new double[] { 4.0, 5.0, 6.0 };
+            solution3.Fitness = new double[] { 7.0, 8.0, 9.0 };
+            solution4.Fitness = new double[] { 10.0, 11.0, 12.0 };
+
+            var fitnessMatrix = Utility.ToFitnessMatrix(new List<Solution>() { solution1, solution2, solution3, solution4 });
+
+            Assert.AreEqual(1.0, fitnessMatrix[0][0]);
+            Assert.AreEqual(5.0, fitnessMatrix[1][1]);
+            Assert.AreEqual(9.0, fitnessMatrix[2][2]);
+            Assert.AreEqual(2.0, fitnessMatrix[0][1]);
+            Assert.AreEqual(4.0, fitnessMatrix[1][0]);
+            Assert.AreEqual(10.0, fitnessMatrix[3][0]);
+            Assert.AreEqual(12.0, fitnessMatrix[3][2]);
+        }
+
+        [TestMethod]
+        public void TestConcat()
+        {
+            List<int> ints1 = new List<int>() { 1, 2, 3, 4 };
+            List<int> ints2 = new List<int>() { 5, 6, 7, 8 };
+
+            List<int> concatList = Utility.Concat(ints1, ints2);
+            Assert.AreEqual(8, concatList.Count);
+            List<int> ints3 = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
+            for (int i = 0; i < ints3.Count; i++)
+            {
+                Assert.AreEqual(ints3[i], concatList[i]);
+            }
+        }
+
+        [DataTestMethod]
+        public void TestMinArgMin()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            var result = Utility.MinArgMin(i => 2 * i, ints);
+            Assert.AreEqual(1, result.Item1);
+            Assert.AreEqual(2, result.Item2);
+        }
+
+        [DataTestMethod]
+        public void TestMaxArgMax()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            var result = Utility.MaxArgMax(i => 2 * i, ints);
+            Assert.AreEqual(5, result.Item1);
+            Assert.AreEqual(10, result.Item2);
+        }
+
+        [DataTestMethod]
+        public void TestMin()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            Assert.AreEqual(2, Utility.Min(i => 2 * i, ints));
+        }
+
+        [DataTestMethod]
+        public void TestMax()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            Assert.AreEqual(10, Utility.Max(i => 2 * i, ints));
+        }
+
+        [DataTestMethod]
+        public void TestArgMin()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            Assert.AreEqual(1, Utility.ArgMin(i => 2 * i, ints));
+        }
+
+        [DataTestMethod]
+        public void TestArgMax()
+        {
+            List<int> ints = new List<int>() { 3, 4, 5, 1, 2 };
+            Assert.AreEqual(5, Utility.ArgMax(i => 2 * i, ints));
+        }
     }
 }
