Ejemplo n.º 1
0
        public void ChoosePossibleStartsTwoReqsOverlapRestricted()
        {
            // two overlapping sidereqs, 3 tiles each, two allowed
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);

            testRand.Setup(p => p.Next(2)).Returns(0);
            testRand.Setup(p => p.Next(1)).Returns(0);
            var roomGen = new TestRoomGen <ITiledGenContext>();

            bool[]          permittedRange = { true, false, false, true, true };
            List <IntRange> sideReqs       = new List <IntRange>
            {
                new IntRange(4, 7),
                new IntRange(5, 8),
            };
            List <HashSet <int> > compare = new List <HashSet <int> >();
            HashSet <int>         set     = new HashSet <int> {
                4
            };

            compare.Add(set);
            set = new HashSet <int> {
                7
            };
            compare.Add(set);

            List <HashSet <int> > result = roomGen.PublicChoosePossibleStarts(testRand.Object, 4, permittedRange, sideReqs);

            Assert.That(result, Is.EqualTo(compare));
            testRand.Verify(p => p.Next(2), Times.Exactly(1));
            testRand.Verify(p => p.Next(1), Times.Exactly(1));
        }
Ejemplo n.º 2
0
        public void ChoosePossibleStartsTwoReqsSuperset(int roll1)
        {
            // two overlapping sidereqs, one superset of the other (rng should make no difference)
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);

            testRand.Setup(p => p.Next(2)).Returns(roll1);
            testRand.Setup(p => p.Next(1)).Returns(0);
            var roomGen = new TestRoomGen <ITiledGenContext>();

            bool[]          permittedRange = { true, true, true, true, true };
            List <IntRange> sideReqs       = new List <IntRange>
            {
                new IntRange(4, 9),
                new IntRange(6, 8),
            };
            List <HashSet <int> > compare = new List <HashSet <int> >();
            HashSet <int>         set     = new HashSet <int> {
                6, 7
            };

            compare.Add(set);

            List <HashSet <int> > result = roomGen.PublicChoosePossibleStarts(testRand.Object, 4, permittedRange, sideReqs);

            Assert.That(result, Is.EqualTo(compare));
            testRand.Verify(p => p.Next(2), Times.Exactly(1));
            testRand.Verify(p => p.Next(1), Times.Exactly(1));
        }
Ejemplo n.º 3
0
        public void ChoosePossibleStartsThreeReqsOverlapOneRight(int roll1, int roll2)
        {
            // two separate sidereqs, with one in the middle connecting (with different rng)
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);

            testRand.Setup(p => p.Next(3)).Returns(roll1);
            testRand.Setup(p => p.Next(2)).Returns(roll2);
            testRand.Setup(p => p.Next(1)).Returns(0);
            var roomGen = new TestRoomGen <ITiledGenContext>();

            bool[]          permittedRange = { true, true, true, true, true };
            List <IntRange> sideReqs       = new List <IntRange>
            {
                new IntRange(4, 6),
                new IntRange(5, 8),
                new IntRange(7, 9),
            };
            List <HashSet <int> > compare = new List <HashSet <int> >();
            HashSet <int>         set     = new HashSet <int> {
                7
            };

            compare.Add(set);
            set = new HashSet <int> {
                4, 5
            };
            compare.Add(set);

            List <HashSet <int> > result = roomGen.PublicChoosePossibleStarts(testRand.Object, 4, permittedRange, sideReqs);

            Assert.That(result, Is.EqualTo(compare));
            testRand.Verify(p => p.Next(3), Times.Exactly(1));
            testRand.Verify(p => p.Next(2), Times.Exactly(1));
            testRand.Verify(p => p.Next(1), Times.Exactly(1));
        }
Ejemplo n.º 4
0
        public void ChoosePossibleStartsOneReqRestricted()
        {
            // one sidereq, 3 tiles, one allowed
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);

            testRand.Setup(p => p.Next(1)).Returns(0);
            var roomGen = new TestRoomGen <ITiledGenContext>();

            bool[]          permittedRange = { true, false, true, false, true };
            List <IntRange> sideReqs       = new List <IntRange> {
                new IntRange(5, 8)
            };
            List <HashSet <int> > compare = new List <HashSet <int> >();
            HashSet <int>         set     = new HashSet <int> {
                6
            };

            List <HashSet <int> > result = roomGen.PublicChoosePossibleStarts(testRand.Object, 4, permittedRange, sideReqs);

            compare.Add(set);

            Assert.That(result, Is.EqualTo(compare));
            testRand.Verify(p => p.Next(It.IsAny <int>()), Times.Exactly(1));
        }