Exemplo n.º 1
0
        public void FromMemoryBlockAndContiguousTest()
        {
            CMBlockBufferError err1;
            CMBlockBufferError err2;

            using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, null, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1))
                using (var bc = CMBlockBuffer.CreateContiguous(bb, null, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err2)) {
                    Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                    Assert.That(err2, Is.EqualTo(CMBlockBufferError.None), "CreateContiguous error");
                    Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");
                    Assert.That(bc.DataLength, Is.EqualTo((nuint)5), "CreateContiguous DataLength");
                }

            using (var allocator = new CMCustomBlockAllocator())
                using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, allocator, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1))
                    using (var bc = CMBlockBuffer.CreateContiguous(bb, allocator, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err2)) {
                        Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                        Assert.That(err2, Is.EqualTo(CMBlockBufferError.None), "CreateContiguous error");
                        Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");
                        Assert.That(bc.DataLength, Is.EqualTo((nuint)5), "CreateContiguous DataLength");
                    }

            using (var allocator = new CustomAllocator(this))
                using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, allocator, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1)) {
                    Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                    Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");
                    Assert.IsTrue(allocateCalled, "FromMemoryBlock AllocateCalled");
                }
            Assert.IsTrue(freeCalled, "FromMemoryBlock FreeCalled");
        }
Exemplo n.º 2
0
        public void AppendMemoryBlockTest()
        {
            CMBlockBufferError err1;
            CMBlockBufferError err2;

            using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, null, 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1)) {
                Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");

                var ptr = Marshal.AllocHGlobal(16);
                err2 = bb.AppendMemoryBlock(ptr, 16, null, 0, 5, CMBlockBufferFlags.AssureMemoryNow);
                Assert.That(err2, Is.EqualTo(CMBlockBufferError.None), "AppendMemoryBlock error");
                Assert.That(bb.DataLength, Is.EqualTo((nuint)10), "AppendMemoryBlock DataLength");
            }

            using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, new CMCustomBlockAllocator(), 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1)) {
                Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");

                var ptr = Marshal.AllocHGlobal(16);
                err2 = bb.AppendMemoryBlock(ptr, 16, new CMCustomBlockAllocator(), 0, 5, CMBlockBufferFlags.AssureMemoryNow);
                Assert.That(err2, Is.EqualTo(CMBlockBufferError.None), "AppendMemoryBlock error");
                Assert.That(bb.DataLength, Is.EqualTo((nuint)10), "AppendMemoryBlock DataLength");
            }

            allocateCalled = false;
            freeCalled     = false;
            using (var allocator = new CustomAllocator(this))
                using (var bb = CMBlockBuffer.FromMemoryBlock(IntPtr.Zero, 16, new CMCustomBlockAllocator(), 0, 5, CMBlockBufferFlags.AssureMemoryNow, out err1)) {
                    Assert.That(err1, Is.EqualTo(CMBlockBufferError.None), "FromMemoryBlock error");
                    Assert.That(bb.DataLength, Is.EqualTo((nuint)5), "FromMemoryBlock DataLength");

                    var ptr = Marshal.AllocHGlobal(16);
                    err2 = bb.AppendMemoryBlock(ptr, 16, allocator, 0, 5, CMBlockBufferFlags.AssureMemoryNow);
                    Assert.That(err2, Is.EqualTo(CMBlockBufferError.None), "AppendMemoryBlock error");
                    Assert.That(bb.DataLength, Is.EqualTo((nuint)10), "FromMemoryBlock DataLength");
                }
            Assert.IsTrue(freeCalled, "FromMemoryBlock FreeCalled");
        }