public void SetTile_MaskPassed(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 mask         = Mock.Of <Mask>(m => m.Test(extent, It.IsAny <Vector>()));
            var maskedExtent = new MaskedExtent(extent, mask);

            Assert.That(maskedExtent.SetTile(position, tile));
            Mock.Get(extent).Verify(e => e.SetTile(position, tile));
        }
        public void SetTile_MaskFailed(int x, int y)
        {
            var position = new Vector(x, y);
            var tile     = new Tile();
            var extent   = Mock.Of <Extent>();

            Mock.Get(extent).Setup(e => e.SetTile(position, tile)).Throws(new InvalidOperationException());
            var mask         = Mock.Of <Mask>(m => !m.Test(extent, It.IsAny <Vector>()));
            var maskedExtent = new MaskedExtent(extent, mask);

            Assert.That(!maskedExtent.SetTile(position, tile));
        }
示例#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));
        }