Library/Library.Test/TestTransactedCompoundFile.cs
C# | Copy Code |
---|---|
Dictionary<uint, byte[]> store = new Dictionary<uint, byte[]>(); using (TempFile temp = new TempFile()) { uint id; byte[] bytes; using (TransactedCompoundFile test = new TransactedCompoundFile(new TransactedCompoundFile.Options(temp.TempPath) { BlockSize = 512, CreateNew = true })) { for (int i = 0; i < 10000; i++) { switch(i < 1000 ? 0 : rand.Next(3)) { case 0: { id = test.Create(); bytes = RandomBytes(rand.Next(1000)); store.Add(id, bytes); test.Write(id, bytes, 0, bytes.Length); break; } case 1: { id = RandomPick(store.Keys); bytes = store[id]; CompareBytes(bytes, 0, bytes.Length, IOStream.ReadAllBytes(test.Read(id))); break; } case 2: { id = RandomPick(store.Keys); Assert.IsTrue(store.Remove(id)); test.Delete(id); break; } } } foreach (var kv in store) { CompareBytes(kv.Value, 0, kv.Value.Length, IOStream.ReadAllBytes(test.Read(kv.Key))); } } } |
VB.NET | Copy Code |
---|---|
Dim store As New Dictionary(Of UInteger, Byte())() Using temp As New TempFile() Dim id As UInteger Dim bytes As Byte() Using test As New TransactedCompoundFile(New TransactedCompoundFile.Options(temp.TempPath) With { _ Key .BlockSize = 512, _ Key .CreateNew = True _ }) Dim i As Integer = 0 While i < 10000 Select Case If(i < 1000, 0, rand.[Next](3)) Case 0 If True Then id = test.Create() bytes = RandomBytes(rand.[Next](1000)) store.Add(id, bytes) test.Write(id, bytes, 0, bytes.Length) Exit Select End If Case 1 If True Then id = RandomPick(store.Keys) bytes = store(id) CompareBytes(bytes, 0, bytes.Length, IOStream.ReadAllBytes(test.Read(id))) Exit Select End If Case 2 If True Then id = RandomPick(store.Keys) Assert.IsTrue(store.Remove(id)) test.Delete(id) Exit Select End If End Select System.Math.Max(System.Threading.Interlocked.Increment(i),i - 1) End While For Each kv As var In store CompareBytes(kv.Value, 0, kv.Value.Length, IOStream.ReadAllBytes(test.Read(kv.Key))) Next End Using End Using |
Target Platforms: Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7