예제 #1
0
        public void TestClone()
        {
            // Define variables and constants
            const ResourceUsage USAGE        = ResourceUsage.Write;
            const uint          NUM_VERTICES = 21515;
            VertexBuffer <int>  firstBuffer  = BufferFactory.NewVertexBuffer <int>().WithUsage(USAGE).WithLength(NUM_VERTICES);

            // Set up context


            // Execute
            VertexBuffer <int>  secondBuffer = firstBuffer.Clone();
            VertexBuffer <long> thirdBuffer  = secondBuffer.Clone().WithVertexType <long>();

            // Assert outcome
            Assert.AreEqual(USAGE, secondBuffer.Usage);
            Assert.AreEqual(firstBuffer.Usage, secondBuffer.Usage);
            Assert.AreEqual(NUM_VERTICES, secondBuffer.Length);
            Assert.AreEqual(firstBuffer.Length, secondBuffer.Length);

            Assert.AreEqual(USAGE, thirdBuffer.Usage);
            Assert.AreEqual(secondBuffer.Length, thirdBuffer.Length);

            firstBuffer.Dispose();
            secondBuffer.Dispose();
            thirdBuffer.Dispose();
        }
예제 #2
0
        public void TestCopyTo()
        {
            // Define variables and constants
            VertexBuffer <float> srcBuffer = BufferFactory.NewVertexBuffer <float>()
                                             .WithUsage(ResourceUsage.Immutable)
                                             .WithInitialData(Enumerable.Range(0, 3000).Select(@int => (float)@int).ToArray());
            VertexBuffer <float> dstBuffer = srcBuffer.Clone()
                                             .WithUsage(ResourceUsage.DiscardWrite);

            // Set up context


            // Execute
            srcBuffer.CopyTo(dstBuffer);
            srcBuffer.CopyTo(dstBuffer, 100, 2000, 500);

            try {
                dstBuffer.CopyTo(srcBuffer);
                Assert.Fail();
            }
            catch (ResourceOperationUnavailableException) { }

#if !DEVELOPMENT && !RELEASE
            try {
                srcBuffer.CopyTo(dstBuffer, 1600, 2000, 500);
                Assert.Fail();
            }
            catch (AssuranceFailedException) { }

            try {
                srcBuffer.CopyTo(dstBuffer, 0, 2000, 2000);
                Assert.Fail();
            }
            catch (AssuranceFailedException) { }
#endif

            // Assert outcome
            Assert.IsFalse(srcBuffer.CanBeCopyDestination);
            Assert.IsTrue(dstBuffer.CanBeCopyDestination);

            srcBuffer.Dispose();
            dstBuffer.Dispose();
        }