public void GetRandomWeightedItem_WithCollection_ReturnsCorrectItem(int randomNumber, int expectedItem)
        {
            var mockRandomNumberGenerator = new Mock <IRandomNumberGenerator>();

            mockRandomNumberGenerator.Setup(x => x.GetRandomInteger(6)).Returns(randomNumber);
            var randomItemSelector = new RandomItemSelector(mockRandomNumberGenerator.Object);

            var items = new WeightedItem[]
            {
                new WeightedItem {
                    RandomizationWeight = 1
                },
                new WeightedItem {
                    RandomizationWeight = 2
                },
                new WeightedItem {
                    RandomizationWeight = 3
                },
            };

            var item = randomItemSelector.GetRandomWeightedItem <WeightedItem>(items);

            Assert.AreEqual(items[expectedItem], item);
            mockRandomNumberGenerator.Verify(x => x.GetRandomInteger(6), Times.Once);
            mockRandomNumberGenerator.VerifyNoOtherCalls();
        }
        private CharacterNameGenerator CreateCharacterNameGenerator(AncestryDetailsModel detailModel)
        {
            var mockRepository = new Mock <ICharacterNameRepository>();

            mockRepository.Setup(x => x.GetAncestry(detailModel.Code)).ReturnsAsync(detailModel);

            var rng = new RandomNumberGenerator();
            var ris = new RandomItemSelector(rng);

            var mockNumberGenerator = new Mock <IRandomNumberGenerator>();

            var generator = new CharacterNameGenerator(mockRepository.Object, ris, rng);

            return(generator);
        }
    public static void Main()
    {
        const int N = 100;

        // Example #1
        int[] allNumbers = new int[N];
        for (int i = 0; i < allNumbers.Length; ++i)
        {
            allNumbers[i] = i + 1;
        }
        int[] excludedNumbers = { 5, 7, 17, 23 };
        Console.WriteLine(RandomItemSelector.SelectRandomElement(allNumbers, excludedNumbers));

        // Example #2
        List <string> allStrings = new List <string>();

        for (int i = 0; i < N; ++i)
        {
            allStrings.Add("Item #" + (i + 1));
        }
        string[] excludedStrings = { "Item #5", "Item #7", "Item #17", "Item #23" };
        Console.WriteLine(RandomItemSelector.SelectRandomElement(allStrings, excludedStrings));
    }
        public void GetRandomWeightedItem_WithEmptyArray_Throws()
        {
            var randomItemSelector = new RandomItemSelector(new RandomNumberGenerator());

            Assert.Throws <ArgumentException>(() => randomItemSelector.GetRandomWeightedItem <WeightedItem>(new WeightedItem[0]));
        }
 public RandomCrystalPositionGenerator()
 {
     selector = new RandomItemSelector(5);
 }