示例#1
0
        /// <summary>
        /// Fake Copy method.
        /// </summary>
        public override void Copy(int offset, NativeMemoryChunk other, int otherOffset, int count)
        {
            FakeNativeMemoryChunk that = (FakeNativeMemoryChunk)other;
            int numToCopy = Math.Min(count, _buf.Length - offset);

            Array.Copy(_buf, offset, that._buf, otherOffset, numToCopy);
        }
示例#2
0
        public void TestDispose()
        {
            int size = 128;
            NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size);

            nativeMemoryChunk.Dispose();
            Assert.IsTrue(nativeMemoryChunk.Closed);
        }
        public void TestIsReusable()
        {
            NativeMemoryChunk chunk = _pool.Get(1);

            Assert.IsTrue(_pool.IsReusable(chunk));
            chunk.Dispose();
            Assert.IsFalse(_pool.IsReusable(chunk));
        }
示例#4
0
        public void TestAlloc()
        {
            int size = 128;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size))
            {
                Assert.IsNotNull(nativeMemoryChunk);
            }
        }
        public void TestFree()
        {
            NativeMemoryChunk c = _pool.Alloc(1);

            Assert.IsFalse(c.Closed);
            _pool.Free(c);
            Assert.IsTrue(c.Closed);
            _pool.Free(c);
            Assert.IsTrue(c.Closed);
        }
        public void TestAlloc()
        {
            NativeMemoryChunk c = _pool.Alloc(1);

            Assert.IsNotNull(c);
            Assert.AreEqual(1, c.Size);
            Assert.AreEqual(1, _pool.Alloc(1).Size);
            Assert.AreEqual(33, _pool.Alloc(33).Size);
            Assert.AreEqual(32, _pool.Alloc(32).Size);
        }
示例#7
0
        public void TestWrite()
        {
            int  size  = 128;
            byte value = 1;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size))
            {
                byte[] src = Enumerable.Repeat(value, size).ToArray();
                Assert.AreEqual(size, nativeMemoryChunk.Write(0, src, 0, size));
            }
        }
示例#8
0
        public void TestWriteInvalidCount()
        {
            int  size   = 128;
            byte value  = 1;
            int  offset = 30;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size))
            {
                byte[] src = Enumerable.Repeat(value, size).ToArray();
                Assert.AreEqual(size - offset, nativeMemoryChunk.Write(offset, src, 0, size));
            }
        }
        public void Initialize()
        {
            _chunk = new FakeNativeMemoryChunk(BYTES.Length);
            _chunk.Write(0, BYTES, 0, BYTES.Length);
            _pool = new FakeNativeMemoryChunkPool();
            var poolRef = CloseableReference <NativeMemoryChunk> .of(_chunk, _pool);

            _pooledByteBuffer = new NativePooledByteBuffer(
                poolRef,
                BUFFER_LENGTH);

            poolRef.Dispose();
        }
示例#10
0
        public void TestWriteInvalidCount2()
        {
            int  size   = 128;
            byte value  = 1;
            int  offset = 30;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size))
            {
                byte[] src = Enumerable.Repeat(value, size).ToArray();
                try
                {
                    nativeMemoryChunk.Write(0, src, offset, size);
                    Assert.Fail();
                }
                catch (ArgumentException)
                {
                    // This is expected
                }
            }
        }
示例#11
0
        public void TestCopy()
        {
            int size = 128;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size),
                   nativeMemoryChunk2 = new NativeMemoryChunk(size))
            {
                byte[] src = new byte[size];
                for (int i = 0; i < size; ++i)
                {
                    src[i] = (byte)i;
                }

                nativeMemoryChunk.Write(0, src, 0, size);
                nativeMemoryChunk.Copy(0, nativeMemoryChunk2, 0, size);
                for (int i = 0; i < size; ++i)
                {
                    Assert.AreEqual(nativeMemoryChunk.Read(i), nativeMemoryChunk2.Read(i));
                }
            }
        }
示例#12
0
        public void TestReadArray()
        {
            int size = 128;

            using (NativeMemoryChunk nativeMemoryChunk = new NativeMemoryChunk(size))
            {
                byte[] src = new byte[size];
                for (int i = 0; i < size; ++i)
                {
                    src[i] = (byte)i;
                }

                nativeMemoryChunk.Write(0, src, 0, size);
                byte[] dst = new byte[size];
                nativeMemoryChunk.Read(0, dst, 0, size);
                for (int i = 0; i < size; ++i)
                {
                    Assert.AreEqual(src[i], dst[i]);
                }
            }
        }