Skip to content

Commit

Permalink
Do same test in all storages
Browse files Browse the repository at this point in the history
  • Loading branch information
shargon committed Feb 4, 2025
1 parent 909e066 commit e4a75c2
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 8 deletions.
34 changes: 34 additions & 0 deletions tests/Neo.Plugins.Storage.Tests/StoreTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,10 @@
#pragma warning disable CS0618 // Type or member is obsolete

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Neo.Extensions;
using Neo.IO.Storage.LevelDB;
using Neo.Persistence;
using Neo.SmartContract;
using System.IO;
using System.Linq;

Expand Down Expand Up @@ -229,12 +231,44 @@ public void TestRocksDbMultiSnapshot()
snapshot2.Dispose();
}

private void TestSeek(IStore store)
{
using var snapshot = store.GetSnapshot();
using var storeView = new SnapshotCache(snapshot);
var key = new KeyBuilder(1, 1);
var item = new StorageItem([1, 2, 3]);
storeView.Delete(key);
Assert.IsNull(storeView.TryGet(key));
storeView.Add(key, item);
CollectionAssert.AreEqual(new byte[] { 1, 2, 3 }, storeView.TryGet(key).ToArray());

var key2 = new KeyBuilder(1, 2);
var item2 = new StorageItem([4, 5, 6]);
storeView.Add(key2, item2);
CollectionAssert.AreEqual(key2.ToArray(), storeView.Seek(key2.ToArray(), SeekDirection.Backward).Select(u => u.Key).First().ToArray());
CollectionAssert.AreEqual(key.ToArray(), storeView.Seek(key.ToArray(), SeekDirection.Backward).Select(u => u.Key).First().ToArray());

storeView.Delete(key);
storeView.Delete(key2);

storeView.Add(new KeyBuilder(1, 0x000000), new StorageItem([0x00]));
storeView.Add(new KeyBuilder(1, 0x000001), new StorageItem([0x01]));
storeView.Add(new KeyBuilder(1, 0x000002), new StorageItem([0x02]));
storeView.Add(new KeyBuilder(1, 0x000003), new StorageItem([0x03]));
storeView.Add(new KeyBuilder(1, 0x000004), new StorageItem([0x04]));

var entries = storeView.Seek([], SeekDirection.Backward).ToArray();
Assert.AreEqual(0, entries.Length);
}

/// <summary>
/// Test Put/Delete/TryGet/Seek
/// </summary>
/// <param name="store">Store</param>
private void TestStorage(IStore store)
{
TestSeek(store);

using (store)
{
var key1 = new byte[] { 0x01, 0x02 };
Expand Down
18 changes: 10 additions & 8 deletions tests/Neo.UnitTests/Persistence/UT_MemoryStore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
using Neo.Extensions;
using Neo.Persistence;
using Neo.SmartContract;
using System;
using System.Linq;
using System.Text;

Expand Down Expand Up @@ -50,15 +49,15 @@ public void StoreTest()
using var store = new MemoryStore();

store.Delete([1]);
Assert.AreEqual(null, store.TryGet([1]));
Assert.IsNull(store.TryGet([1]));
Assert.IsFalse(store.TryGet([1], out var got));
Assert.AreEqual(null, got);
Assert.IsNull(got);

store.Put([1], [1, 2, 3]);
CollectionAssert.AreEqual(new byte[] { 1, 2, 3 }, store.TryGet([1]));

store.Put([2], [4, 5, 6]);
CollectionAssert.AreEqual(new byte[] { 1 }, store.Seek(Array.Empty<byte>()).Select(u => u.Key).First());
CollectionAssert.AreEqual(new byte[] { 1 }, store.Seek([]).Select(u => u.Key).First());
CollectionAssert.AreEqual(new byte[] { 2 }, store.Seek([2], SeekDirection.Backward).Select(u => u.Key).First());
CollectionAssert.AreEqual(new byte[] { 1 }, store.Seek([1], SeekDirection.Backward).Select(u => u.Key).First());

Expand All @@ -71,8 +70,8 @@ public void StoreTest()
store.Put([0x00, 0x00, 0x03], [0x03]);
store.Put([0x00, 0x00, 0x04], [0x04]);

var entries = store.Seek(Array.Empty<byte>(), SeekDirection.Backward).ToArray();
Assert.AreEqual(entries.Length, 0);
var entries = store.Seek([], SeekDirection.Backward).ToArray();
Assert.AreEqual(0, entries.Length);
}

[TestMethod]
Expand All @@ -93,7 +92,7 @@ public void NeoSystemStoreViewTest()
// But the value will not be written to the underlying store even its committed.
Assert.IsNull(_memoryStore.TryGet(key.ToArray()));
Assert.IsFalse(_memoryStore.TryGet(key.ToArray(), out var got));
Assert.AreEqual(null, got);
Assert.IsNull(got);
}

[TestMethod]
Expand All @@ -114,7 +113,7 @@ public void NeoSystemStoreGetAndChange()
var key = new KeyBuilder(1, 1);
var item = new StorageItem([1, 2, 3]);
storeView.Delete(key);
Assert.AreEqual(null, storeView.TryGet(key));
Assert.IsNull(storeView.TryGet(key));
storeView.Add(key, item);
CollectionAssert.AreEqual(new byte[] { 1, 2, 3 }, storeView.TryGet(key).ToArray());

Expand All @@ -132,6 +131,9 @@ public void NeoSystemStoreGetAndChange()
storeView.Add(new KeyBuilder(1, 0x000002), new StorageItem([0x02]));
storeView.Add(new KeyBuilder(1, 0x000003), new StorageItem([0x03]));
storeView.Add(new KeyBuilder(1, 0x000004), new StorageItem([0x04]));

var entries = storeView.Seek([], SeekDirection.Backward).ToArray();
Assert.AreEqual(0, entries.Length);
}
}
}

0 comments on commit e4a75c2

Please sign in to comment.