예제 #1
0
        public void ReceiveOpenedBorderToFulfill(bool firstHalf, bool secondHalf, bool exception)
        {
            // test with offset, proving previous openedborders are properly transferred
            // test error case, in which no bordertofulfill is opened
            Mock <IRandom> testRand    = new Mock <IRandom>(MockBehavior.Strict);
            var            roomGenTo   = new TestRoomGen <ITiledGenContext>();
            var            roomGenFrom = new TestRoomGen <ITiledGenContext>();

            roomGenTo.PrepareSize(testRand.Object, new Loc(3, 2));
            roomGenTo.SetLoc(new Loc(2, 0));
            roomGenFrom.PrepareSize(testRand.Object, new Loc(4, 2));
            roomGenFrom.SetLoc(new Loc(0, 2));
            roomGenFrom.PublicOpenedBorder[Dir4.Up][0] = firstHalf;
            roomGenFrom.PublicOpenedBorder[Dir4.Up][1] = firstHalf;
            roomGenFrom.PublicOpenedBorder[Dir4.Up][2] = secondHalf;
            roomGenFrom.PublicOpenedBorder[Dir4.Up][3] = secondHalf;

            if (exception)
            {
                Assert.Throws <ArgumentException>(() => { roomGenTo.ReceiveOpenedBorder(roomGenFrom, Dir4.Down); });
            }
            else
            {
                roomGenTo.ReceiveOpenedBorder(roomGenFrom, Dir4.Down);
                var expectedBorderToFulfill = new Dictionary <Dir4, bool[]>
                {
                    [Dir4.Down]  = new bool[] { true, true, false },
                    [Dir4.Left]  = new bool[] { false, false },
                    [Dir4.Up]    = new bool[] { false, false, false },
                    [Dir4.Right] = new bool[] { false, false },
                };
                Assert.That(roomGenTo.PublicBorderToFulfill, Is.EqualTo(expectedBorderToFulfill));
            }
        }
예제 #2
0
        public void ReceiveOpenedBorder(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2, Dir4 dir, int expectedStart, int expectedEnd, bool exception)
        {
            Mock <IRandom> testRand    = new Mock <IRandom>(MockBehavior.Strict);
            var            roomGenTo   = new TestRoomGen <ITiledGenContext>();
            var            roomGenFrom = new TestRoomGen <ITiledGenContext>();

            roomGenTo.PrepareSize(testRand.Object, new Loc(w1, h1));
            roomGenTo.SetLoc(new Loc(x1, y1));
            roomGenFrom.PrepareSize(testRand.Object, new Loc(w2, h2));
            roomGenFrom.SetLoc(new Loc(x2, y2));
            for (int ii = 0; ii < roomGenFrom.PublicOpenedBorder[dir.Reverse()].Length; ii++)
            {
                roomGenFrom.PublicOpenedBorder[dir.Reverse()][ii] = true;
            }

            if (exception)
            {
                Assert.Throws <ArgumentException>(() => { roomGenTo.ReceiveOpenedBorder(roomGenFrom, dir); });
            }
            else
            {
                roomGenTo.ReceiveOpenedBorder(roomGenFrom, dir);
                IntRange newRange = roomGenTo.RoomSideReqs[dir][0];
                Assert.That(newRange, Is.EqualTo(new IntRange(expectedStart, expectedEnd)));
            }
        }
예제 #3
0
        public void ReceiveOpenedBorderToFulfillAlreadyFilled()
        {
            // test error case, in which no borderfill is opened by the openedborder but the tiles already exist
            Mock <IRandom> testRand    = new Mock <IRandom>(MockBehavior.Strict);
            var            roomGenTo   = new TestRoomGen <ITiledGenContext>();
            var            roomGenFrom = new TestRoomGen <ITiledGenContext>();

            roomGenTo.PrepareSize(testRand.Object, new Loc(3, 2));
            roomGenTo.SetLoc(new Loc(2, 0));
            roomGenFrom.PrepareSize(testRand.Object, new Loc(4, 2));
            roomGenFrom.SetLoc(new Loc(0, 2));
            roomGenFrom.PublicOpenedBorder[Dir4.Up][0]    = true;
            roomGenFrom.PublicOpenedBorder[Dir4.Up][1]    = true;
            roomGenTo.PublicBorderToFulfill[Dir4.Down][0] = true;
            roomGenTo.PublicBorderToFulfill[Dir4.Down][1] = true;

            Assert.Throws <ArgumentException>(() => { roomGenTo.ReceiveOpenedBorder(roomGenFrom, Dir4.Down); });
        }