diff --git a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs index 6b71dd08be..6f50f54103 100644 --- a/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs +++ b/Content.IntegrationTests/Tests/Chemistry/SolutionSystemTests.cs @@ -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; diff --git a/Content.Tests/Shared/Chemistry/SolutionTests.cs b/Content.Tests/Shared/Chemistry/SolutionTests.cs index 7f6e335b36..8b7bbb0d6f 100644 --- a/Content.Tests/Shared/Chemistry/SolutionTests.cs +++ b/Content.Tests/Shared/Chemistry/SolutionTests.cs @@ -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)); }