]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Remove some warnings generated by SolutionTests (#41194)
authorConnor Huffine <chuffine@gmail.com>
Sat, 1 Nov 2025 15:37:20 +0000 (11:37 -0400)
committerGitHub <noreply@github.com>
Sat, 1 Nov 2025 15:37:20 +0000 (15:37 +0000)
* Add indirection

* Address feedback

* const

* VSC trolled me

---------

Co-authored-by: slarticodefast <161409025+slarticodefast@users.noreply.github.com>
Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs
Content.Tests/Shared/Chemistry/SolutionTests.cs

index 6b71dd08be0018f18856455b24b81878b581b35d..6f50f54103e7aeadee1ff0f5db8c785944375384 100644 (file)
@@ -43,6 +43,13 @@ public sealed class SolutionSystemTests
   desc: reagent-desc-nothing
   physicalDesc: reagent-physical-desc-nothing
 ";
+
+    private const string TestReagentA = "TestReagentA";
+    private const string TestReagentB = "TestReagentB";
+    private const string TestReagentC = "TestReagentC";
+    private const string Water = "Water";
+    private const string Oil = "Oil";
+
     [Test]
     public async Task TryAddTwoNonReactiveReagent()
     {
@@ -62,8 +69,8 @@ public sealed class SolutionSystemTests
             var oilQuantity = FixedPoint2.New(15);
             var waterQuantity = FixedPoint2.New(10);
 
-            var oilAdded = new Solution("Oil", oilQuantity);
-            var originalWater = new Solution("Water", waterQuantity);
+            var oilAdded = new Solution(Oil, oilQuantity);
+            var originalWater = new Solution(Water, waterQuantity);
 
             beaker = entityManager.SpawnEntity("SolutionTarget", coordinates);
             Assert.That(containerSystem
@@ -73,8 +80,8 @@ public sealed class SolutionSystemTests
             Assert.That(containerSystem
                 .TryAddSolution(solutionEnt.Value, oilAdded));
 
-            var water = solution.GetTotalPrototypeQuantity("Water");
-            var oil = solution.GetTotalPrototypeQuantity("Oil");
+            var water = solution.GetTotalPrototypeQuantity(Water);
+            var oil = solution.GetTotalPrototypeQuantity(Oil);
             Assert.Multiple(() =>
             {
                 Assert.That(water, Is.EqualTo(waterQuantity));
@@ -107,8 +114,8 @@ public sealed class SolutionSystemTests
             var oilQuantity = FixedPoint2.New(1500);
             var waterQuantity = FixedPoint2.New(10);
 
-            var oilAdded = new Solution("Oil", oilQuantity);
-            var originalWater = new Solution("Water", waterQuantity);
+            var oilAdded = new Solution(Oil, oilQuantity);
+            var originalWater = new Solution(Water, waterQuantity);
 
             beaker = entityManager.SpawnEntity("SolutionTarget", coordinates);
             Assert.That(containerSystem
@@ -118,8 +125,8 @@ public sealed class SolutionSystemTests
             Assert.That(containerSystem
                 .TryAddSolution(solutionEnt.Value, oilAdded), Is.False);
 
-            var water = solution.GetTotalPrototypeQuantity("Water");
-            var oil = solution.GetTotalPrototypeQuantity("Oil");
+            var water = solution.GetTotalPrototypeQuantity(Water);
+            var oil = solution.GetTotalPrototypeQuantity(Oil);
             Assert.Multiple(() =>
             {
                 Assert.That(water, Is.EqualTo(waterQuantity));
@@ -153,8 +160,8 @@ public sealed class SolutionSystemTests
             var waterQuantity = FixedPoint2.New(10);
             var oilQuantity = FixedPoint2.New(ratio * waterQuantity.Int());
 
-            var oilAdded = new Solution("Oil", oilQuantity);
-            var originalWater = new Solution("Water", waterQuantity);
+            var oilAdded = new Solution(Oil, oilQuantity);
+            var originalWater = new Solution(Water, waterQuantity);
 
             beaker = entityManager.SpawnEntity("SolutionTarget", coordinates);
             Assert.That(containerSystem
@@ -168,15 +175,15 @@ public sealed class SolutionSystemTests
             {
                 Assert.That(solution.Volume, Is.EqualTo(FixedPoint2.New(threshold)));
 
-                var waterMix = solution.GetTotalPrototypeQuantity("Water");
-                var oilMix = solution.GetTotalPrototypeQuantity("Oil");
+                var waterMix = solution.GetTotalPrototypeQuantity(Water);
+                var oilMix = solution.GetTotalPrototypeQuantity(Oil);
                 Assert.That(waterMix, Is.EqualTo(FixedPoint2.New(threshold / (ratio + 1))));
                 Assert.That(oilMix, Is.EqualTo(FixedPoint2.New(threshold / (ratio + 1) * ratio)));
 
                 Assert.That(overflowingSolution.Volume, Is.EqualTo(FixedPoint2.New(80)));
 
-                var waterOverflow = overflowingSolution.GetTotalPrototypeQuantity("Water");
-                var oilOverFlow = overflowingSolution.GetTotalPrototypeQuantity("Oil");
+                var waterOverflow = overflowingSolution.GetTotalPrototypeQuantity(Water);
+                var oilOverFlow = overflowingSolution.GetTotalPrototypeQuantity(Oil);
                 Assert.That(waterOverflow, Is.EqualTo(waterQuantity - waterMix));
                 Assert.That(oilOverFlow, Is.EqualTo(oilQuantity - oilMix));
             });
@@ -207,8 +214,8 @@ public sealed class SolutionSystemTests
             var waterQuantity = FixedPoint2.New(10);
             var oilQuantity = FixedPoint2.New(ratio * waterQuantity.Int());
 
-            var oilAdded = new Solution("Oil", oilQuantity);
-            var originalWater = new Solution("Water", waterQuantity);
+            var oilAdded = new Solution(Oil, oilQuantity);
+            var originalWater = new Solution(Water, waterQuantity);
 
             beaker = entityManager.SpawnEntity("SolutionTarget", coordinates);
             Assert.That(containerSystem
@@ -234,24 +241,23 @@ public sealed class SolutionSystemTests
         // Adding reagent with adjusts temperature
         await server.WaitAssertion(() =>
         {
-
-            var solution = new Solution("TestReagentA", FixedPoint2.New(100)) { Temperature = temp };
+            var solution = new Solution(TestReagentA, FixedPoint2.New(100)) { Temperature = temp };
             Assert.That(solution.Temperature, Is.EqualTo(temp * 1));
 
-            solution.AddSolution(new Solution("TestReagentA", FixedPoint2.New(100)) { Temperature = temp * 3 }, protoMan);
+            solution.AddSolution(new Solution(TestReagentA, FixedPoint2.New(100)) { Temperature = temp * 3 }, protoMan);
             Assert.That(solution.Temperature, Is.EqualTo(temp * 2));
 
-            solution.AddSolution(new Solution("TestReagentB", FixedPoint2.New(100)) { Temperature = temp * 5 }, protoMan);
+            solution.AddSolution(new Solution(TestReagentB, FixedPoint2.New(100)) { Temperature = temp * 5 }, protoMan);
             Assert.That(solution.Temperature, Is.EqualTo(temp * 3));
         });
 
         // adding solutions combines thermal energy
         await server.WaitAssertion(() =>
         {
-            var solutionOne = new Solution("TestReagentA", FixedPoint2.New(100)) { Temperature = temp };
+            var solutionOne = new Solution(TestReagentA, FixedPoint2.New(100)) { Temperature = temp };
 
-            var solutionTwo = new Solution("TestReagentB", FixedPoint2.New(100)) { Temperature = temp };
-            solutionTwo.AddReagent("TestReagentC", FixedPoint2.New(100));
+            var solutionTwo = new Solution(TestReagentB, FixedPoint2.New(100)) { Temperature = temp };
+            solutionTwo.AddReagent(TestReagentC, FixedPoint2.New(100));
 
             var thermalEnergyOne = solutionOne.GetHeatCapacity(protoMan) * solutionOne.Temperature;
             var thermalEnergyTwo = solutionTwo.GetHeatCapacity(protoMan) * solutionTwo.Temperature;
index 7f6e335b36adaf92d6046b048eb283e73ef6957c..8b7bbb0d6f3a21820d76670351d527f90b1dbe17 100644 (file)
@@ -9,6 +9,10 @@ namespace Content.Tests.Shared.Chemistry;
 [TestFixture, Parallelizable, TestOf(typeof(Solution))]
 public sealed class SolutionTests : ContentUnitTest
 {
+    private const string Water = "water";
+    private const string Fire = "fire";
+    private const string Earth = "earth";
+
     [OneTimeSetUp]
     public void Setup()
     {
@@ -19,8 +23,8 @@ public sealed class SolutionTests : ContentUnitTest
     public void AddReagentAndGetSolution()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        var quantity = solution.GetTotalPrototypeQuantity("water");
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        var quantity = solution.GetTotalPrototypeQuantity(Water);
 
         Assert.That(quantity.Int(), Is.EqualTo(1000));
     }
@@ -29,8 +33,8 @@ public sealed class SolutionTests : ContentUnitTest
     public void ScaleSolution()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(20));
-        solution.AddReagent("fire", FixedPoint2.New(30));
+        solution.AddReagent(Water, FixedPoint2.New(20));
+        solution.AddReagent(Fire, FixedPoint2.New(30));
 
         // Test integer scaling
         {
@@ -43,8 +47,8 @@ public sealed class SolutionTests : ContentUnitTest
             tmp.ScaleSolution(2);
             Assert.That(tmp.Contents.Count, Is.EqualTo(2));
             Assert.That(tmp.Volume, Is.EqualTo(FixedPoint2.New(100)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("water"), Is.EqualTo(FixedPoint2.New(40)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("fire"), Is.EqualTo(FixedPoint2.New(60)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Water), Is.EqualTo(FixedPoint2.New(40)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Fire), Is.EqualTo(FixedPoint2.New(60)));
         }
 
         // Test float scaling
@@ -58,23 +62,23 @@ public sealed class SolutionTests : ContentUnitTest
             tmp.ScaleSolution(2f);
             Assert.That(tmp.Contents.Count, Is.EqualTo(2));
             Assert.That(tmp.Volume, Is.EqualTo(FixedPoint2.New(100)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("water"), Is.EqualTo(FixedPoint2.New(40)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("fire"), Is.EqualTo(FixedPoint2.New(60)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Water), Is.EqualTo(FixedPoint2.New(40)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Fire), Is.EqualTo(FixedPoint2.New(60)));
 
             tmp = solution.Clone();
             tmp.ScaleSolution(0.3f);
             Assert.That(tmp.Contents.Count, Is.EqualTo(2));
             Assert.That(tmp.Volume, Is.EqualTo(FixedPoint2.New(15)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("water"), Is.EqualTo(FixedPoint2.New(6)));
-            Assert.That(tmp.GetTotalPrototypeQuantity("fire"), Is.EqualTo(FixedPoint2.New(9)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Water), Is.EqualTo(FixedPoint2.New(6)));
+            Assert.That(tmp.GetTotalPrototypeQuantity(Fire), Is.EqualTo(FixedPoint2.New(9)));
         }
     }
 
     [Test]
     public void ConstructorAddReagent()
     {
-        var solution = new Solution("water", FixedPoint2.New(1000));
-        var quantity = solution.GetTotalPrototypeQuantity("water");
+        var solution = new Solution(Water, FixedPoint2.New(1000));
+        var quantity = solution.GetTotalPrototypeQuantity(Water);
 
         Assert.That(quantity.Int(), Is.EqualTo(1000));
     }
@@ -83,7 +87,7 @@ public sealed class SolutionTests : ContentUnitTest
     public void NonExistingReagentReturnsZero()
     {
         var solution = new Solution();
-        var quantity = solution.GetTotalPrototypeQuantity("water");
+        var quantity = solution.GetTotalPrototypeQuantity(Water);
 
         Assert.That(quantity.Int(), Is.EqualTo(0));
     }
@@ -92,8 +96,8 @@ public sealed class SolutionTests : ContentUnitTest
     [Test]
     public void AddLessThanZeroReagentReturnsZero()
     {
-        var solution = new Solution("water", FixedPoint2.New(-1000));
-        var quantity = solution.GetTotalPrototypeQuantity("water");
+        var solution = new Solution(Water, FixedPoint2.New(-1000));
+        var quantity = solution.GetTotalPrototypeQuantity(Water);
 
         Assert.That(quantity.Int(), Is.EqualTo(0));
     }
@@ -103,9 +107,9 @@ public sealed class SolutionTests : ContentUnitTest
     public void AddingReagentsSumsProperly()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("water", FixedPoint2.New(2000));
-        var quantity = solution.GetTotalPrototypeQuantity("water");
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Water, FixedPoint2.New(2000));
+        var quantity = solution.GetTotalPrototypeQuantity(Water);
 
         Assert.That(quantity.Int(), Is.EqualTo(3000));
     }
@@ -114,19 +118,19 @@ public sealed class SolutionTests : ContentUnitTest
     public void ReagentQuantitiesStayUnique()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(1000));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(2000));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(1000));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(2000));
     }
 
     [Test]
     public void TotalVolumeIsCorrect()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
         Assert.That(solution.Volume.Int(), Is.EqualTo(3000));
     }
@@ -135,13 +139,13 @@ public sealed class SolutionTests : ContentUnitTest
     public void CloningSolutionIsCorrect()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
         var newSolution = solution.Clone();
 
-        Assert.That(newSolution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(1000));
-        Assert.That(newSolution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(2000));
+        Assert.That(newSolution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(1000));
+        Assert.That(newSolution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(2000));
         Assert.That(newSolution.Volume.Int(), Is.EqualTo(3000));
     }
 
@@ -149,70 +153,70 @@ public sealed class SolutionTests : ContentUnitTest
     public void RemoveSolutionRecalculatesProperly()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
-        solution.RemoveReagent("water", FixedPoint2.New(500));
+        solution.RemoveReagent(Water, FixedPoint2.New(500));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(500));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(2000));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(500));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(2000));
         Assert.That(solution.Volume.Int(), Is.EqualTo(2500));
     }
 
     [Test]
     public void RemoveLessThanOneQuantityDoesNothing()
     {
-        var solution = new Solution("water", FixedPoint2.New(100));
+        var solution = new Solution(Water, FixedPoint2.New(100));
 
-        solution.RemoveReagent("water", FixedPoint2.New(-100));
+        solution.RemoveReagent(Water, FixedPoint2.New(-100));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(100));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(100));
         Assert.That(solution.Volume.Int(), Is.EqualTo(100));
     }
 
     [Test]
     public void RemoveMoreThanTotalRemovesAllReagent()
     {
-        var solution = new Solution("water", FixedPoint2.New(100));
+        var solution = new Solution(Water, FixedPoint2.New(100));
 
-        solution.RemoveReagent("water", FixedPoint2.New(1000));
+        solution.RemoveReagent(Water, FixedPoint2.New(1000));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(0));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(0));
         Assert.That(solution.Volume.Int(), Is.EqualTo(0));
     }
 
     [Test]
     public void RemoveNonExistReagentDoesNothing()
     {
-        var solution = new Solution("water", FixedPoint2.New(100));
+        var solution = new Solution(Water, FixedPoint2.New(100));
 
-        solution.RemoveReagent("fire", FixedPoint2.New(1000));
+        solution.RemoveReagent(Fire, FixedPoint2.New(1000));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(100));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(100));
         Assert.That(solution.Volume.Int(), Is.EqualTo(100));
     }
 
     [Test]
     public void RemoveSolution()
     {
-        var solution = new Solution("water", FixedPoint2.New(700));
+        var solution = new Solution(Water, FixedPoint2.New(700));
 
         solution.RemoveSolution(FixedPoint2.New(500));
 
         //Check that edited solution is correct
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(200));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(200));
         Assert.That(solution.Volume.Int(), Is.EqualTo(200));
     }
 
     [Test]
     public void RemoveSolutionMoreThanTotalRemovesAll()
     {
-        var solution = new Solution("water", FixedPoint2.New(800));
+        var solution = new Solution(Water, FixedPoint2.New(800));
 
         solution.RemoveSolution(FixedPoint2.New(1000));
 
         //Check that edited solution is correct
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(0));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(0));
         Assert.That(solution.Volume.Int(), Is.EqualTo(0));
     }
 
@@ -220,24 +224,24 @@ public sealed class SolutionTests : ContentUnitTest
     public void RemoveSolutionRatioPreserved()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
         solution.RemoveSolution(FixedPoint2.New(1500));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(500));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(1000));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(500));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(1000));
         Assert.That(solution.Volume.Int(), Is.EqualTo(1500));
     }
 
     [Test]
     public void RemoveSolutionLessThanOneDoesNothing()
     {
-        var solution = new Solution("water", FixedPoint2.New(800));
+        var solution = new Solution(Water, FixedPoint2.New(800));
 
         solution.RemoveSolution(FixedPoint2.New(-200));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(800));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(800));
         Assert.That(solution.Volume.Int(), Is.EqualTo(800));
     }
 
@@ -245,17 +249,17 @@ public sealed class SolutionTests : ContentUnitTest
     public void SplitSolution()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1000));
-        solution.AddReagent("fire", FixedPoint2.New(2000));
+        solution.AddReagent(Water, FixedPoint2.New(1000));
+        solution.AddReagent(Fire, FixedPoint2.New(2000));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(750));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(750));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(1500));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(750));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(1500));
         Assert.That(solution.Volume.Int(), Is.EqualTo(2250));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(250));
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(500));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(250));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(500));
         Assert.That(splitSolution.Volume.Int(), Is.EqualTo(750));
     }
 
@@ -263,17 +267,17 @@ public sealed class SolutionTests : ContentUnitTest
     public void SplitSolutionFractional()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1));
-        solution.AddReagent("fire", FixedPoint2.New(2));
+        solution.AddReagent(Water, FixedPoint2.New(1));
+        solution.AddReagent(Fire, FixedPoint2.New(2));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(1));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(0.66f));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Float(), Is.EqualTo(1.34f));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(0.66f));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Float(), Is.EqualTo(1.34f));
         Assert.That(solution.Volume.Int(), Is.EqualTo(2));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(0.34f));
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("fire").Float(), Is.EqualTo(0.66f));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(0.34f));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Fire).Float(), Is.EqualTo(0.66f));
         Assert.That(splitSolution.Volume.Int(), Is.EqualTo(1));
     }
 
@@ -281,17 +285,17 @@ public sealed class SolutionTests : ContentUnitTest
     public void SplitSolutionFractionalOpposite()
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(1));
-        solution.AddReagent("fire", FixedPoint2.New(2));
+        solution.AddReagent(Water, FixedPoint2.New(1));
+        solution.AddReagent(Fire, FixedPoint2.New(2));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(2));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(0.33f));
-        Assert.That(solution.GetTotalPrototypeQuantity("fire").Float(), Is.EqualTo(0.67f));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(0.33f));
+        Assert.That(solution.GetTotalPrototypeQuantity(Fire).Float(), Is.EqualTo(0.67f));
         Assert.That(solution.Volume.Int(), Is.EqualTo(1));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(0.67f));
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("fire").Float(), Is.EqualTo(1.33f));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(0.67f));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Fire).Float(), Is.EqualTo(1.33f));
         Assert.That(splitSolution.Volume.Int(), Is.EqualTo(2));
     }
 
@@ -301,14 +305,14 @@ public sealed class SolutionTests : ContentUnitTest
     public void SplitSolutionTinyFractionalBigSmall(float initial, float reduce, float remainder)
     {
         var solution = new Solution();
-        solution.AddReagent("water", FixedPoint2.New(initial));
+        solution.AddReagent(Water, FixedPoint2.New(initial));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(reduce));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(remainder));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(remainder));
         Assert.That(solution.Volume.Float(), Is.EqualTo(remainder));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Float(), Is.EqualTo(reduce));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Float(), Is.EqualTo(reduce));
         Assert.That(splitSolution.Volume.Float(), Is.EqualTo(reduce));
     }
 
@@ -319,10 +323,14 @@ public sealed class SolutionTests : ContentUnitTest
     [TestCase(1000)]
     public void SplitRounding(int amount)
     {
+        var foo = "foo";
+        var bar = "bar";
+        var baz = "baz";
+
         var solutionOne = new Solution();
-        solutionOne.AddReagent("foo", FixedPoint2.New(amount));
-        solutionOne.AddReagent("bar", FixedPoint2.New(amount));
-        solutionOne.AddReagent("baz", FixedPoint2.New(amount));
+        solutionOne.AddReagent(foo, FixedPoint2.New(amount));
+        solutionOne.AddReagent(bar, FixedPoint2.New(amount));
+        solutionOne.AddReagent(baz, FixedPoint2.New(amount));
 
         var splitAmount = FixedPoint2.New(5);
         var split = solutionOne.SplitSolution(splitAmount);
@@ -333,48 +341,62 @@ public sealed class SolutionTests : ContentUnitTest
     [Test]
     public void SplitSolutionMoreThanTotalRemovesAll()
     {
-        var solution = new Solution("water", FixedPoint2.New(800));
+        var solution = new Solution(Water, FixedPoint2.New(800));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(1000));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(0));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(0));
         Assert.That(solution.Volume.Int(), Is.EqualTo(0));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(800));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(800));
         Assert.That(splitSolution.Volume.Int(), Is.EqualTo(800));
     }
 
     [Test]
     public void SplitSolutionLessThanOneDoesNothing()
     {
-        var solution = new Solution("water", FixedPoint2.New(800));
+        var solution = new Solution(Water, FixedPoint2.New(800));
 
         var splitSolution = solution.SplitSolution(FixedPoint2.New(-200));
 
-        Assert.That(solution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(800));
+        Assert.That(solution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(800));
         Assert.That(solution.Volume.Int(), Is.EqualTo(800));
 
-        Assert.That(splitSolution.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(0));
+        Assert.That(splitSolution.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(0));
         Assert.That(splitSolution.Volume.Int(), Is.EqualTo(0));
     }
 
     [Test]
     public void SplitSolutionZero()
     {
+        var impedrezene = "Impedrezene";
+        var thermite = "Thermite";
+        var lithium = "Li";
+        var flourine = "F";
+        var sodium = "Na";
+        var mercury = "Hg";
+        var copper = "Cu";
+        var uranium = "U";
+        var iron = "Fe";
+        var spaceDrugs = "SpaceDrugs";
+        var aluminum = "Al";
+        var glucose = "Glucose";
+        var oxygen = "O";
+
         var solution = new Solution();
-        solution.AddReagent("Impedrezene", FixedPoint2.New(0.01 + 0.19));
-        solution.AddReagent("Thermite", FixedPoint2.New(0.01 + 0.39));
-        solution.AddReagent("Li", FixedPoint2.New(0.01 + 0.17));
-        solution.AddReagent("F", FixedPoint2.New(0.01 + 0.17));
-        solution.AddReagent("Na", FixedPoint2.New(0 + 0.13));
-        solution.AddReagent("Hg", FixedPoint2.New(0.15 + 4.15));
-        solution.AddReagent("Cu", FixedPoint2.New(0 + 0.13));
-        solution.AddReagent("U", FixedPoint2.New(0.76 + 20.77));
-        solution.AddReagent("Fe", FixedPoint2.New(0.01 + 0.36));
-        solution.AddReagent("SpaceDrugs", FixedPoint2.New(0.02 + 0.41));
-        solution.AddReagent("Al", FixedPoint2.New(0));
-        solution.AddReagent("Glucose", FixedPoint2.New(0));
-        solution.AddReagent("O", FixedPoint2.New(0));
+        solution.AddReagent(impedrezene, FixedPoint2.New(0.01 + 0.19));
+        solution.AddReagent(thermite, FixedPoint2.New(0.01 + 0.39));
+        solution.AddReagent(lithium, FixedPoint2.New(0.01 + 0.17));
+        solution.AddReagent(flourine, FixedPoint2.New(0.01 + 0.17));
+        solution.AddReagent(sodium, FixedPoint2.New(0 + 0.13));
+        solution.AddReagent(mercury, FixedPoint2.New(0.15 + 4.15));
+        solution.AddReagent(copper, FixedPoint2.New(0 + 0.13));
+        solution.AddReagent(uranium, FixedPoint2.New(0.76 + 20.77));
+        solution.AddReagent(iron, FixedPoint2.New(0.01 + 0.36));
+        solution.AddReagent(spaceDrugs, FixedPoint2.New(0.02 + 0.41));
+        solution.AddReagent(aluminum, FixedPoint2.New(0));
+        solution.AddReagent(glucose, FixedPoint2.New(0));
+        solution.AddReagent(oxygen, FixedPoint2.New(0));
 
         solution.SplitSolution(FixedPoint2.New(0.98));
     }
@@ -383,18 +405,18 @@ public sealed class SolutionTests : ContentUnitTest
     public void AddSolution()
     {
         var solutionOne = new Solution();
-        solutionOne.AddReagent("water", FixedPoint2.New(1000));
-        solutionOne.AddReagent("fire", FixedPoint2.New(2000));
+        solutionOne.AddReagent(Water, FixedPoint2.New(1000));
+        solutionOne.AddReagent(Fire, FixedPoint2.New(2000));
 
         var solutionTwo = new Solution();
-        solutionTwo.AddReagent("water", FixedPoint2.New(500));
-        solutionTwo.AddReagent("earth", FixedPoint2.New(1000));
+        solutionTwo.AddReagent(Water, FixedPoint2.New(500));
+        solutionTwo.AddReagent(Earth, FixedPoint2.New(1000));
 
         solutionOne.AddSolution(solutionTwo, null);
 
-        Assert.That(solutionOne.GetTotalPrototypeQuantity("water").Int(), Is.EqualTo(1500));
-        Assert.That(solutionOne.GetTotalPrototypeQuantity("fire").Int(), Is.EqualTo(2000));
-        Assert.That(solutionOne.GetTotalPrototypeQuantity("earth").Int(), Is.EqualTo(1000));
+        Assert.That(solutionOne.GetTotalPrototypeQuantity(Water).Int(), Is.EqualTo(1500));
+        Assert.That(solutionOne.GetTotalPrototypeQuantity(Fire).Int(), Is.EqualTo(2000));
+        Assert.That(solutionOne.GetTotalPrototypeQuantity(Earth).Int(), Is.EqualTo(1000));
         Assert.That(solutionOne.Volume.Int(), Is.EqualTo(4500));
     }
 
@@ -414,12 +436,12 @@ public sealed class SolutionTests : ContentUnitTest
     {
         const float initialTemp = 100.0f;
 
-        var solution = new Solution("water", FixedPoint2.New(100)) { Temperature = initialTemp };
+        var solution = new Solution(Water, FixedPoint2.New(100)) { Temperature = initialTemp };
 
-        solution.AddReagent("water", FixedPoint2.New(100));
+        solution.AddReagent(Water, FixedPoint2.New(100));
         Assert.That(solution.Temperature, Is.EqualTo(initialTemp));
 
-        solution.AddReagent("earth", FixedPoint2.New(100));
+        solution.AddReagent(Earth, FixedPoint2.New(100));
         Assert.That(solution.Temperature, Is.EqualTo(initialTemp));
     }
 
@@ -429,12 +451,12 @@ public sealed class SolutionTests : ContentUnitTest
         const float initialTemp = 100.0f;
 
         var solutionOne = new Solution();
-        solutionOne.AddReagent("water", FixedPoint2.New(100));
+        solutionOne.AddReagent(Water, FixedPoint2.New(100));
         solutionOne.Temperature = initialTemp;
 
         var solutionTwo = new Solution();
-        solutionTwo.AddReagent("water", FixedPoint2.New(100));
-        solutionTwo.AddReagent("earth", FixedPoint2.New(100));
+        solutionTwo.AddReagent(Water, FixedPoint2.New(100));
+        solutionTwo.AddReagent(Earth, FixedPoint2.New(100));
         solutionTwo.Temperature = initialTemp;
 
         solutionOne.AddSolution(solutionTwo, null);
@@ -446,8 +468,8 @@ public sealed class SolutionTests : ContentUnitTest
     {
         const float initialTemp = 100.0f;
 
-        var solution = new Solution("water", FixedPoint2.New(100)) { Temperature = initialTemp };
-        solution.RemoveReagent("water", FixedPoint2.New(50));
+        var solution = new Solution(Water, FixedPoint2.New(100)) { Temperature = initialTemp };
+        solution.RemoveReagent(Water, FixedPoint2.New(50));
         Assert.That(solution.Temperature, Is.EqualTo(initialTemp));
     }
 
@@ -456,7 +478,7 @@ public sealed class SolutionTests : ContentUnitTest
     {
         const float initialTemp = 100.0f;
 
-        var solution = new Solution("water", FixedPoint2.New(100)) { Temperature = initialTemp };
+        var solution = new Solution(Water, FixedPoint2.New(100)) { Temperature = initialTemp };
         solution.RemoveSolution(FixedPoint2.New(50));
         Assert.That(solution.Temperature, Is.EqualTo(initialTemp));
     }
@@ -466,7 +488,7 @@ public sealed class SolutionTests : ContentUnitTest
     {
         const float initialTemp = 100.0f;
 
-        var solution = new Solution("water", FixedPoint2.New(100)) { Temperature = initialTemp };
+        var solution = new Solution(Water, FixedPoint2.New(100)) { Temperature = initialTemp };
         solution.SplitSolution(FixedPoint2.New(50));
         Assert.That(solution.Temperature, Is.EqualTo(initialTemp));
     }