コード例 #1
0
        public unsafe void ExpandAfterShrinkPool_AllocatesDefault()
        {
            LazyUTF8String.ResetPool(new MockTracer(), DefaultIndexEntryCount);
            string fileAndFolderNames = "folderSDKfile.txtDKfolders";

            UseASCIIBytePointer(
                fileAndFolderNames,
                bufferPtr =>
            {
                int initialBytePoolSize   = LazyUTF8String.BytePoolSize();
                int initialStringPoolSize = LazyUTF8String.StringPoolSize();

                LazyUTF8String.FromByteArray(bufferPtr + 6, 3);
                LazyUTF8String.FromByteArray(bufferPtr + 17, 2);
                LazyUTF8String.ShrinkPool();
                CheckPoolSizes(expectedBytePoolSize: 6, expectedStringPoolSize: 2);
                LazyUTF8String.FreePool();
                CheckPoolSizes(expectedBytePoolSize: 6, expectedStringPoolSize: 2);
                LazyUTF8String.ShrinkPool();
                CheckPoolSizes(expectedBytePoolSize: 0, expectedStringPoolSize: 0);
                LazyUTF8String.FromByteArray(bufferPtr + 6, 3);
                CheckPoolSizes(expectedBytePoolSize: initialBytePoolSize, expectedStringPoolSize: initialStringPoolSize);
                LazyUTF8String.ShrinkPool();
                CheckPoolSizes(expectedBytePoolSize: 3, expectedStringPoolSize: 1);
            });
        }
コード例 #2
0
        public void MinimumPoolSize()
        {
            LazyUTF8String.ResetPool(new MockTracer(), 0);

            LazyUTF8String.FreePool();
            LazyUTF8String.BytePoolSize().ShouldBeAtLeast(1);

            LazyUTF8String.InitializePools(new MockTracer(), 0);
            LazyUTF8String.BytePoolSize().ShouldBeAtLeast(1);
        }
コード例 #3
0
 public unsafe void PoolSizeCheck()
 {
     UseASCIIBytePointer(
         "folderSDKfile.txtDKfolders",
         bufferPtr =>
     {
         int bytePoolSizeBeforeFreePool   = LazyUTF8String.BytePoolSize();
         int stringPoolSizeBeforeFreePool = LazyUTF8String.StringPoolSize();
         LazyUTF8String firstFolder       = LazyUTF8String.FromByteArray(bufferPtr + 6, 3);
         LazyUTF8String secondFolder      = LazyUTF8String.FromByteArray(bufferPtr + 17, 2);
         CheckPoolSizes(bytePoolSizeBeforeFreePool, stringPoolSizeBeforeFreePool);
     });
 }
コード例 #4
0
        public unsafe void PoolSizeIncreasesAfterShrinking()
        {
            LazyUTF8String.ResetPool();
            string fileAndFolderNames = "folderSDKfile.txtDKfolders";

            UseASCIIBytePointer(
                fileAndFolderNames,
                bufferPtr =>
            {
                int initialBytePoolSize   = LazyUTF8String.BytePoolSize();
                int initialStringPoolSize = LazyUTF8String.StringPoolSize();
                LazyUTF8String.FromByteArray(bufferPtr + 6, 3);
                LazyUTF8String.FromByteArray(bufferPtr + 17, 2);
                LazyUTF8String.ShrinkPool();
                CheckPoolSizes(expectedBytePoolSize: 6, expectedStringPoolSize: 2);
                LazyUTF8String.FromByteArray(bufferPtr + 6, 3);
                LazyUTF8String.FromByteArray(bufferPtr + 17, 2);
                LazyUTF8String.FromByteArray(bufferPtr, 6);

                CheckPoolSizes(expectedBytePoolSize: 6 + initialBytePoolSize, expectedStringPoolSize: 2 + initialStringPoolSize);
            });
        }
コード例 #5
0
 private static void CheckPoolSizes(int expectedBytePoolSize, int expectedStringPoolSize)
 {
     LazyUTF8String.BytePoolSize().ShouldEqual(expectedBytePoolSize, $"{nameof(LazyUTF8String.BytePoolSize)} should be {expectedBytePoolSize}");
     LazyUTF8String.StringPoolSize().ShouldEqual(expectedStringPoolSize, $"{nameof(LazyUTF8String.StringPoolSize)} should be {expectedStringPoolSize}");
 }