public void CachedValues() { var cache = BigIntegerPowCache.GetCache(3); var value1 = cache.Get(1023); var value2 = cache.Get(1023); Assert.AreEqual(BigInteger.Pow(3, 1023), value1); Assert.AreSame(_bitsField.GetValue(value1), _bitsField.GetValue(value2)); value1 = cache.Get(1024); value2 = cache.Get(1024); Assert.AreEqual(BigInteger.Pow(3, 1024), value1); Assert.AreNotSame(_bitsField.GetValue(value1), _bitsField.GetValue(value2)); BigIntegerPowCache.GetCache(3, 2000); value1 = cache.Get(1024); value2 = cache.Get(1024); Assert.AreEqual(BigInteger.Pow(3, 1024), value1); Assert.AreSame(_bitsField.GetValue(value1), _bitsField.GetValue(value2)); value1 = cache.Get(1999); value2 = cache.Get(1999); Assert.AreEqual(BigInteger.Pow(3, 1999), value1); Assert.AreSame(_bitsField.GetValue(value1), _bitsField.GetValue(value2)); value1 = cache.Get(2000); value2 = cache.Get(2000); Assert.AreEqual(BigInteger.Pow(3, 2000), value1); Assert.AreNotSame(_bitsField.GetValue(value1), _bitsField.GetValue(value2)); }
public void CacheBasisRange() { for (int i = 3; i <= 10; i++) { var cache = BigIntegerPowCache.GetCache(i); Assert.AreSame(cache, BigIntegerPowCache.GetCache(i)); } Assert.ThrowsException <ArgumentOutOfRangeException>(() => BigIntegerPowCache.GetCache(2)); Assert.ThrowsException <ArgumentOutOfRangeException>(() => BigIntegerPowCache.GetCache(11)); }