public void Constructs_with_negative_count_should_throw_exception()
        {
            var generator = new RandomStockStringGenerator
            {
                Values = new[] { "A", "B", "C", "D" },
                Count  = -1
            };

            Assert.Throws <GenerationException>(() => generator.Run().Cast <string>().ToArray());
        }
            /// <summary>
            /// Returns an enumeration of random strings from a pre-existing stock of values.
            /// </summary>
            /// <param name="count">The number of strings to generate.</param>
            /// <param name="stock">A stock of preset values.</param>
            /// <returns>An enumeration of random string values.</returns>
            /// <exception cref="GenerationException">Thrown if the specified parameters are inconsistent or invalid.</exception>
            public static IEnumerable <string> Strings(int count, RandomStringStock stock)
            {
                var generator = new RandomStockStringGenerator
                {
                    Count  = count,
                    Values = RandomStringStockInfo.FromStock(stock).GetItems(),
                };

                foreach (string value in generator.Run())
                {
                    yield return(value);
                }
            }
        public void Generate_sequence_ok()
        {
            var generator = new RandomStockStringGenerator
            {
                Values = new[] { "A", "B", "C", "D" },
                Count  = 8
            };

            var values = generator.Run().Cast <string>().ToArray();

            Assert.Count(8, values);
            Assert.Multiple(() =>
            {
                foreach (string value in values)
                {
                    Assert.Contains <string>(new[] { "A", "B", "C", "D" }, value);
                }
            });
        }