public void TryTake_WithoutCache() { var initTarget = 1; var blockInfoCache = new BlockInfoCache(initTarget); var res = blockInfoCache.TryTake(initTarget, out var blockInfo, false); Assert.False(res); }
public void TargetHeight_WithEmptyQueue() { var initTarget = 1; var blockInfoCache = new BlockInfoCache(initTarget); blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = 1 }); blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = 2 }); blockInfoCache.TryTake(1, out _, false); blockInfoCache.TryTake(2, out _, false); Assert.True(blockInfoCache.TargetChainHeight() == 3); }
public void TryTake_OutDatedData() { var initTarget = 1; var blockInfoCache = new BlockInfoCache(initTarget); int i = 0; while (i++ < (int)initTarget + CrossChainConstants.MinimalBlockInfoCacheThreshold) { var t = blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = i }); } blockInfoCache.TryTake(2, out var b1, true); var res = blockInfoCache.TryTake(1, out var b2, true); Assert.True(res); Assert.True(b2.Height == 1); }
public void TryTake_Twice() { var initTarget = 2; var blockInfoCache = new BlockInfoCache(initTarget); int i = 0; while (i++ < (int)initTarget + CrossChainConstants.MinimalBlockInfoCacheThreshold) { var t = blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = i }); } blockInfoCache.TryTake(initTarget, out var b1, true); var res = blockInfoCache.TryTake(initTarget, out var b2, true); Assert.True(res); Assert.Equal(b1, b2); }
public void TryTake_WithoutSizeLimit() { var initTarget = 1; var blockInfoCache = new BlockInfoCache(initTarget); blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = 1 }); var res = blockInfoCache.TryTake(initTarget, out var blockInfo, false); Assert.True(res); Assert.True(blockInfo.Height == initTarget); }
public void TryTake_WithoutEnoughCache() { var initTarget = 1; var blockInfoCache = new BlockInfoCache(initTarget); int i = 0; while (i++ < CrossChainConstants.MinimalBlockInfoCacheThreshold) { var t = blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = i }); } var res = blockInfoCache.TryTake(initTarget, out var blockInfo, true); Assert.False(res); }
public void TryTake_WithClearCacheNeeded() { var initTarget = 2; var blockInfoCache = new BlockInfoCache(initTarget); int i = 0; while (i++ < (int)initTarget + CrossChainConstants.MinimalBlockInfoCacheThreshold) { var t = blockInfoCache.TryAdd(new SideChainBlockData { SideChainHeight = i }); } var res = blockInfoCache.TryTake(initTarget, out var blockInfo, true); Assert.True(res); Assert.True(blockInfo.Height == initTarget); }