[Test, Ignore("broken")] // TODO public void CouldAppendSeries() { var sa = new AppendSeries <int, int>(DataBlock.Create()); Assert.IsTrue(sa.TryAddLast(1, 1).Result); Assert.IsFalse(sa.TryAddLast(1, 1).Result); Assert.IsTrue(sa.TryAddLast(2, 2).Result); Assert.Throws <KeyNotFoundException>(() => { var _ = sa[0]; }); Assert.AreEqual(1, sa[1]); Assert.AreEqual(2, sa[2]); Assert.AreEqual(2, sa.Count()); for (int i = 3; i < 42000; i++) { Assert.IsTrue(sa.TryAddLast(i, i).Result); Assert.AreEqual(i, sa.Last.Present.Value); } //// TODO remove when implemented //Assert.Throws<NotImplementedException>(() => //{ // for (int i = 32000; i < 33000; i++) // { // Assert.IsTrue(sa.TryAddLast(i, i).Result); // } //}); GC.Collect(2, GCCollectionMode.Forced, true, true); GC.WaitForPendingFinalizers(); GC.Collect(2, GCCollectionMode.Forced, true, true); GC.WaitForPendingFinalizers(); sa.Dispose(); GC.Collect(2, GCCollectionMode.Forced, true, true); GC.WaitForPendingFinalizers(); GC.Collect(2, GCCollectionMode.Forced, true, true); GC.WaitForPendingFinalizers(); }
public void CouldAppendSeriesBench() { if (AdditionalCorrectnessChecks.Enabled) { Console.WriteLine("AdditionalCorrectnessChecks.Enabled"); } int count = 10_000_000; int rounds = 100; var sa = new AppendSeries <int, int>(DataBlock.Create()); var sm = new SortedMap <int, int>(); //for (int r = 0; r < rounds; r++) //{ // using (Benchmark.Run("SM.TryAddLast", count)) // { // for (int i = r * count; i < (r + 1) * count; i++) // { // if (i == r * count + 3) // { // continue; // } // if (!sm.TryAddLast(i, i).Result) // { // Assert.Fail("Cannot add " + i); // } // } // } // Console.WriteLine($"Added {((r + 1) * count / 1000000).ToString("N")}"); //} for (int r = 0; r < rounds; r++) { using (Benchmark.Run("Append", count)) { for (int i = r * count; i < (r + 1) * count; i++) { if (i == r * count + 3) { continue; } if (!sa.TryAddLast(i, i).Result) { Console.WriteLine("Cannot add " + i); return; } } } Console.WriteLine($"Added {((r + 1) * count / 1000000).ToString("N")}"); } Benchmark.Dump(); Console.WriteLine("Finished, press enter"); Console.ReadLine(); sa.Dispose(); }