diff --git a/Content.Shared/Utility/SharedRandomExtensions.cs b/Content.Shared/Utility/SharedRandomExtensions.cs new file mode 100644 index 0000000000..2adfdb69f7 --- /dev/null +++ b/Content.Shared/Utility/SharedRandomExtensions.cs @@ -0,0 +1,13 @@ +using Content.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Shared.Utility +{ + public static class SharedRandomExtensions + { + public static string Pick(this IRobustRandom random, DatasetPrototype prototype) + { + return random.Pick(prototype.Values); + } + } +} diff --git a/Content.Tests/Shared/Utility/RandomExtensionsTests.cs b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs new file mode 100644 index 0000000000..1073799627 --- /dev/null +++ b/Content.Tests/Shared/Utility/RandomExtensionsTests.cs @@ -0,0 +1,38 @@ +using System.IO; +using System.Threading.Tasks; +using Content.Shared.Prototypes; +using Content.Shared.Utility; +using NUnit.Framework; +using Robust.Shared.IoC; +using Robust.Shared.Prototypes; +using Robust.Shared.Random; + +namespace Content.Tests.Shared.Utility +{ + [TestFixture] + [TestOf(typeof(SharedRandomExtensions))] + public class RandomExtensionsTests : ContentUnitTest + { + private const string TestDatasetId = "TestDataset"; + + private static readonly string Prototypes = $@" +- type: dataset + id: {TestDatasetId} + values: + - A"; + + [Test] + public void RandomDataSetValueTest() + { + var prototypeManager = IoCManager.Resolve(); + + prototypeManager.LoadFromStream(new StringReader(Prototypes)); + + var dataSet = prototypeManager.Index(TestDatasetId); + var random = IoCManager.Resolve(); + var id = random.Pick(dataSet); + + Assert.NotNull(id); + } + } +}