示例#1
0
        public void ShouldThrowExceptionWhenOptionsChangedAfterGetValuesInvoked()
        {
            _subject = new RangeDomainSegment(_mockRandom.Object, 0, 10);
            _subject.GetValues(_subject.MaxNumberOfValuesInSegment);

            Assert.Throws(typeof(NotSupportedException), () => _subject.SetMaximumAllowedValue(100));
        }
示例#2
0
        public void ShouldProduceValuesWithConditionBoundToDomain()
        {
            _subject = new RangeDomainSegment(new Random800_90(), 8, 128, 8);

            var values = _subject.GetValues(v => v > 64, 10);

            Assert.IsTrue(values.All(a => a % 8 == 0));
        }
示例#3
0
        public void ShouldThrowExceptionWhenChangingOptionsAfterGetValues()
        {
            _subject = new RangeDomainSegment(_mockRandom.Object, 0, 10);
            _subject.SegmentValueOptions = RangeDomainSegmentOptions.Sequential;

            _subject.GetValues(_subject.MaxNumberOfValuesInSegment);

            Assert.Throws(typeof(NotSupportedException),
                          () => _subject.SegmentValueOptions = RangeDomainSegmentOptions.Sequential);
        }
示例#4
0
        public void ShouldAlwaysPullMaximumNumberOfValuesWithACondition(int min, int max, int increment)
        {
            _subject = new RangeDomainSegment(new Random800_90(), min, max, increment)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Random
            };

            for (var i = 0; i < 100; i++)
            {
                var result = _subject.GetValues(v => v % 128 == 0, 5);
                Assert.AreEqual(result.Count(), 5, "pulled not enough mod 128");
            }

            for (var i = 0; i < 100; i++)
            {
                var result = _subject.GetValues(v => v % 128 != 0, 5);
                Assert.AreEqual(result.Count(), 5, "pulled not enough not mod 128");
            }
        }
示例#5
0
        public void ShouldReturnNumbersOnlyUpToMaximumAvailable(int min, int max, int increment)
        {
            _subject = new RangeDomainSegment(_mockRandom.Object, min, max, increment)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Sequential
            };

            int maxQuantityAvailable = _subject.MaxNumberOfValuesInSegment;

            var result = _subject.GetValues(maxQuantityAvailable).ToList();

            Assert.AreEqual(_subject.MaxNumberOfValuesInSegment, result.Count);
        }
示例#6
0
        public void ShouldReturnValuesThatMatchAGivenCondition(int min, int max, int increment)
        {
            _subject = new RangeDomainSegment(new Random800_90(), min, max, increment)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Random
            };

            var result = _subject.GetValues(v => v % 8 == 0, 10);

            Assert.LessOrEqual(result.Count(), 10);

            foreach (var value in result)
            {
                Assert.IsTrue(value % 8 == 0);
            }
        }
示例#7
0
        public void ShouldReturnValidNumbersWithinRangeRandomlySanityCheck(string testLabel, int min, int max, int increment, int seedRandom, int quantityToReturn, int[] expectation)
        {
            // Random should always return the "seedRandom" in order to test the +/- logic
            _mockRandom
            .Setup(s => s.GetRandomInt(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(seedRandom);

            _subject = new RangeDomainSegment(_mockRandom.Object, min, max, increment)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Random
            };

            var result = _subject.GetValues(min, max, quantityToReturn);

            Assert.AreEqual(expectation.ToList(), result.ToList());
        }
示例#8
0
        public void ShouldReturnNumbersInSequenceSubsetRangeSanityCheck(int min, int max, int increment, int[] expectation)
        {
            _subject = new RangeDomainSegment(_mockRandom.Object, min, max, increment)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Sequential
            };

            var maxQuantityAvailable = _subject.MaxNumberOfValuesInSegment;

            var result = _subject.GetValues(min, max, maxQuantityAvailable).ToList();

            for (int i = 0; i < expectation.Length; i++)
            {
                Assert.AreEqual(expectation[i], result[i]);
            }
        }
示例#9
0
        public void ShouldReturnSequentialValuesOnlyWithinSubsets()
        {
            _subject = new RangeDomainSegment(_mockRandom.Object, 0, 10)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Sequential
            };

            int minSubset = 0;
            int maxSubset = 4;

            int[] expectedValues = { 0, 1, 2, 3, 4 };

            var maxQuantityAvailable = _subject.MaxNumberOfValuesInSegment;

            var result = _subject.GetValues(minSubset, maxSubset, maxQuantityAvailable).ToList();

            Assert.IsTrue(expectedValues.OrderBy(t => t).SequenceEqual(result.OrderBy(t => t)));
        }
示例#10
0
        public void ShouldReturnRandomValuesOnlyWithinSubsets()
        {
            // Random should always return the "seedRandom" in order to test the +/- logic
            _mockRandom
            .Setup(s => s.GetRandomInt(It.IsAny <int>(), It.IsAny <int>()))
            .Returns(0);

            _subject = new RangeDomainSegment(_mockRandom.Object, 0, 10)
            {
                SegmentValueOptions = RangeDomainSegmentOptions.Random
            };

            int minSubset = 0;
            int maxSubset = 4;

            int[] expectedValues = { 0, 1, 2, 3, 4 };

            var maxQuantityAvailable = _subject.MaxNumberOfValuesInSegment;

            var result = _subject.GetValues(minSubset, maxSubset, maxQuantityAvailable);

            Assert.AreEqual(expectedValues.ToList(), result.ToList());
        }