зеркало из https://github.com/microsoft/SEAL.git
100 строки
3.4 KiB
C#
100 строки
3.4 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
// Licensed under the MIT license.
|
|
|
|
using Microsoft.Research.SEAL;
|
|
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
|
using System;
|
|
|
|
namespace SEALNetTest
|
|
{
|
|
[TestClass]
|
|
public class MemoryPoolHandleTests
|
|
{
|
|
[TestMethod]
|
|
public void CreateTest()
|
|
{
|
|
MemoryPoolHandle handle = MemoryManager.GetPool();
|
|
Assert.IsNotNull(handle);
|
|
Assert.IsTrue(handle.IsInitialized);
|
|
|
|
MemoryPoolHandle handle2 = new MemoryPoolHandle(handle);
|
|
Assert.IsTrue(handle2.IsInitialized);
|
|
Assert.AreEqual(handle.PoolCount, handle2.PoolCount);
|
|
Assert.AreEqual(handle.AllocByteCount, handle2.AllocByteCount);
|
|
|
|
MemoryPoolHandle handle5 = new MemoryPoolHandle();
|
|
handle5.Set(handle);
|
|
Assert.IsTrue(handle5.IsInitialized);
|
|
Assert.AreEqual(handle.PoolCount, handle5.PoolCount);
|
|
Assert.AreEqual(handle.AllocByteCount, handle5.AllocByteCount);
|
|
|
|
MemoryPoolHandle handle3 = MemoryManager.GetPool(MMProfOpt.ForceNew, clearOnDestruction: true);
|
|
Assert.IsNotNull(handle3);
|
|
Assert.AreEqual(0ul, handle3.PoolCount);
|
|
Assert.AreEqual(0ul, handle3.AllocByteCount);
|
|
|
|
MemoryPoolHandle handle4 = MemoryManager.GetPool(MMProfOpt.ForceThreadLocal);
|
|
Assert.IsNotNull(handle4);
|
|
Assert.AreEqual(0ul, handle4.PoolCount);
|
|
Assert.AreEqual(0ul, handle4.AllocByteCount);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void EqualsTest()
|
|
{
|
|
MemoryPoolHandle handle1 = MemoryManager.GetPool(MMProfOpt.ForceNew);
|
|
MemoryPoolHandle handle2 = MemoryManager.GetPool(MMProfOpt.Default);
|
|
MemoryPoolHandle handle3 = MemoryManager.GetPool();
|
|
|
|
Assert.IsNotNull(handle1);
|
|
Assert.IsNotNull(handle2);
|
|
Assert.IsNotNull(handle3);
|
|
|
|
Assert.AreNotEqual(handle1, handle2);
|
|
Assert.AreNotEqual(handle1, handle3);
|
|
Assert.AreEqual(handle2, handle3);
|
|
|
|
Assert.AreNotEqual(handle1.GetHashCode(), handle2.GetHashCode());
|
|
|
|
Assert.IsFalse(handle3.Equals(null));
|
|
}
|
|
|
|
[TestMethod]
|
|
public void StaticMethodsTest()
|
|
{
|
|
MemoryPoolHandle handle1 = MemoryPoolHandle.Global();
|
|
Assert.IsNotNull(handle1);
|
|
|
|
MemoryPoolHandle handle2 = MemoryPoolHandle.New(clearOnDestruction: true);
|
|
Assert.IsNotNull(handle2);
|
|
|
|
MemoryPoolHandle handle3 = MemoryPoolHandle.ThreadLocal();
|
|
Assert.IsNotNull(handle3);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void UseCountTest()
|
|
{
|
|
MemoryPoolHandle pool = MemoryPoolHandle.New();
|
|
Assert.AreEqual(1L, pool.UseCount);
|
|
Plaintext plain = new Plaintext(pool);
|
|
Assert.AreEqual(2L, pool.UseCount);
|
|
Plaintext plain2 = new Plaintext(pool);
|
|
Assert.AreEqual(3L, pool.UseCount);
|
|
plain.Dispose();
|
|
plain2.Dispose();
|
|
Assert.AreEqual(1L, pool.UseCount);
|
|
}
|
|
|
|
[TestMethod]
|
|
public void ExceptionsTest()
|
|
{
|
|
MemoryPoolHandle handle = new MemoryPoolHandle();
|
|
|
|
Utilities.AssertThrows<ArgumentNullException>(() => handle = new MemoryPoolHandle(null));
|
|
|
|
Utilities.AssertThrows<ArgumentNullException>(() => handle.Set(null));
|
|
}
|
|
}
|
|
}
|