示例#1
0
        public void TestTileSpiralEnumerator()
        {
            // simplest case, range with one tile.
            var range = new TileRange(0, 0, 0, 0, 16);
            var enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 2 tiles.
            range = new TileRange(0, 0, 1, 0, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 4 tiles.
            range = new TileRange(0, 0, 1, 1, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 6 tiles.
            range = new TileRange(0, 0, 2, 1, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 9 tiles.
            range = new TileRange(0, 0, 2, 2, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // rudementary tests.
            range = new TileRange(-10, -10, 10, 10, 16);
            var tiles = new HashSet<Tile>(range.EnumerateInCenterFirst());
            Assert.AreEqual(range.Count, tiles.Count);

            // rudementary tests.
            range = new TileRange(33638, 21862, 33640, 21864, 16);
            tiles = new HashSet<Tile>(range.EnumerateInCenterFirst());
            Assert.AreEqual(range.Count, tiles.Count);
        }
示例#2
0
        public void TestTileSpiralEnumerator()
        {
            // simplest case, range with one tile.
            var range      = new TileRange(0, 0, 0, 0, 16);
            var enumerator = new TileRange.TileRangeCenteredEnumerator(range);

            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 2 tiles.
            range      = new TileRange(0, 0, 1, 0, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 4 tiles.
            range      = new TileRange(0, 0, 1, 1, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 6 tiles.
            range      = new TileRange(0, 0, 2, 1, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // a range with 9 tiles.
            range      = new TileRange(0, 0, 2, 2, 16);
            enumerator = new TileRange.TileRangeCenteredEnumerator(range);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(2, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(1, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(2, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(1, enumerator.Current.Y);
            Assert.IsTrue(enumerator.MoveNext());
            Assert.AreEqual(0, enumerator.Current.X);
            Assert.AreEqual(0, enumerator.Current.Y);
            Assert.IsFalse(enumerator.MoveNext());

            // rudementary tests.
            range = new TileRange(-10, -10, 10, 10, 16);
            var tiles = new HashSet <Tile>(range.EnumerateInCenterFirst());

            Assert.AreEqual(range.Count, tiles.Count);

            // rudementary tests.
            range = new TileRange(33638, 21862, 33640, 21864, 16);
            tiles = new HashSet <Tile>(range.EnumerateInCenterFirst());
            Assert.AreEqual(range.Count, tiles.Count);
        }