Example #1
0
        public void SetTile_LimitOkay_Succeeded(int x, int y)
        {
            var position      = new Vector(x, y);
            var tile          = new Tile();
            var extent        = Mock.Of <Extent>(e => e.SetTile(position, tile));
            var limitedExtent = new LimitedExtent(extent, 1);

            Assert.That(limitedExtent.SetTile(position, tile));
            Mock.Get(extent).Verify(e => e.SetTile(position, tile), Times.Once);
        }
Example #2
0
        public void SetTile_LimitPassed_Failed(int x, int y)
        {
            var position = new Vector(x, y);
            var tile     = new Tile();
            var extent   = Mock.Of <Extent>(e => e.SetTile(Vector.Zero, new Tile()));

            Mock.Get(extent).Setup(e => e.SetTile(position, tile)).Throws(new InvalidOperationException());
            var limitedExtent = new LimitedExtent(extent, 1);

            limitedExtent.SetTile(Vector.Zero, new Tile());

            Assert.That(!limitedExtent.SetTile(position, tile));
        }
Example #3
0
        /// <summary>
        ///     Creates a new instance of the <see cref="EditSession" /> class with the specified world, limit, and mask.
        /// </summary>
        /// <param name="world">The world to modify, which must not be <c>null</c>.</param>
        /// <param name="limit">The limit on the number of tiles that can be set.</param>
        /// <param name="mask">The mask to test, which must not be <c>null</c>.</param>
        /// <exception cref="ArgumentNullException">
        ///     Either <paramref name="world" /> or <paramref name="mask" /> is <c>null</c>.
        /// </exception>
        public static EditSession Create([NotNull] World world, int limit, [NotNull] Mask mask)
        {
            if (world == null)
            {
                throw new ArgumentNullException(nameof(world));
            }
            if (mask == null)
            {
                throw new ArgumentNullException(nameof(mask));
            }

            var    changeSet = new ChangeSet();
            Extent extent    = new LoggedExtent(world, changeSet);

            extent = new LimitedExtent(extent, limit);
            extent = new MaskedExtent(extent, mask);
            return(new EditSession(extent, world, changeSet));
        }