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)); }
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)); }
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)); }
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)); }