Exemple #1
0
        public void ReceiveFulfillableBorderToFulfill(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.PublicFulfillableBorder[Dir4.Up][0] = firstHalf;
            roomGenFrom.PublicFulfillableBorder[Dir4.Up][1] = firstHalf;
            roomGenFrom.PublicFulfillableBorder[Dir4.Up][2] = secondHalf;
            roomGenFrom.PublicFulfillableBorder[Dir4.Up][3] = secondHalf;

            if (exception)
            {
                Assert.Throws <ArgumentException>(() => { roomGenTo.ReceiveFulfillableBorder(roomGenFrom, Dir4.Down); });
            }
            else
            {
                roomGenTo.ReceiveFulfillableBorder(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));
            }
        }
Exemple #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);
                Range newRange = roomGenTo.RoomSideReqs[dir][0];
                Assert.That(newRange, Is.EqualTo(new Range(expectedStart, expectedEnd)));
            }
        }
Exemple #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); });
        }
Exemple #4
0
        public void ReceiveBorderRange(int rangeStart, int rangeEnd, Dir4 dir, int expectedStart, int expectedEnd, bool exception)
        {
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);
            var            roomGen  = new TestRoomGen <ITiledGenContext>();

            roomGen.PrepareSize(testRand.Object, new Loc(5, 7));
            roomGen.SetLoc(new Loc(1, 2));

            if (exception)
            {
                Assert.Throws <ArgumentException>(() => { roomGen.ReceiveBorderRange(new IntRange(rangeStart, rangeEnd), dir); });
            }
            else
            {
                roomGen.ReceiveBorderRange(new IntRange(rangeStart, rangeEnd), dir);
                IntRange newRange = roomGen.RoomSideReqs[dir][0];
                Assert.That(newRange, Is.EqualTo(new IntRange(expectedStart, expectedEnd)));
            }
        }
Exemple #5
0
        public void ReceiveBorderRangeToFulfill()
        {
            // test with offset, proving previous openedborders are properly transferred
            Mock <IRandom> testRand = new Mock <IRandom>(MockBehavior.Strict);
            var            roomGen  = new TestRoomGen <ITiledGenContext>();

            roomGen.PrepareSize(testRand.Object, new Loc(5, 7));
            roomGen.SetLoc(new Loc(2, 3));

            roomGen.ReceiveBorderRange(new IntRange(1, 6), Dir4.Right);
            var expectedBorderToFulfill = new Dictionary <Dir4, bool[]>
            {
                [Dir4.Down]  = new bool[] { false, false, false, false, false },
                [Dir4.Left]  = new bool[] { false, false, false, false, false, false, false },
                [Dir4.Up]    = new bool[] { false, false, false, false, false },
                [Dir4.Right] = new bool[] { true, true, true, false, false, false, false },
            };

            Assert.That(roomGen.PublicBorderToFulfill, Is.EqualTo(expectedBorderToFulfill));
        }
Exemple #6
0
        public void DigAtBorder(Dir4 dir, int scalar, int resultGrid, bool exception)
        {
            var roomGen = new TestRoomGen <ITiledGenContext>();

            string[] inGrid =
            {
                "XXXXXXXX",
                "XX..X..X",
                "XX....XX",
                "XX...XXX",
                "XX....XX",
                "XXXXXXXX",
                "XXXXXXXX",
            };

            string[] outGrid;
            switch (resultGrid)
            {
            case 1:
                outGrid = new string[]
                {
                    "XXXXXXXX",
                    "XX.....X",
                    "XX....XX",
                    "XX...XXX",
                    "XX....XX",
                    "XXXXXXXX",
                    "XXXXXXXX",
                };
                break;

            case 2:
                outGrid = new string[]
                {
                    "XXXXXXXX",
                    "XX..X..X",
                    "XX....XX",
                    "XX.....X",
                    "XX....XX",
                    "XXXXXXXX",
                    "XXXXXXXX",
                };
                break;

            case 3:
                outGrid = new string[]
                {
                    "XXXXXXXX",
                    "XX..X..X",
                    "XX.....X",
                    "XX...X.X",
                    "XX.....X",
                    "XXXXXX.X",
                    "XXXXXXXX",
                };
                break;

            default:
                outGrid = inGrid;
                break;
            }

            TestGenContext testContext   = TestGenContext.InitGridToContext(inGrid);
            TestGenContext resultContext = TestGenContext.InitGridToContext(outGrid);
            Mock <IRandom> testRand      = new Mock <IRandom>(MockBehavior.Strict);

            roomGen.PrepareSize(testRand.Object, new Loc(5, 5));
            roomGen.SetLoc(new Loc(2, 1));

            if (exception)
            {
                Assert.Throws <ArgumentException>(() => { roomGen.DigAtBorder(testContext, dir, scalar); });
            }
            else
            {
                roomGen.DigAtBorder(testContext, dir, scalar);
                Assert.That(testContext.Tiles, Is.EqualTo(resultContext.Tiles));
            }
        }