public void ChangeTrackerWithAddedElementsRemovedOverSeveralSynchronizations() { var storage = new InMemoryStorageEngine(); var os = ObjectStore2.New(storage); var ctw = new ChangeTrackerWrapper(); os.Roots.Entangle(ctw); ctw.ChangeTracker.Append(1); ctw.ChangeTracker.Append(2); ctw.ChangeTracker.Append(3); ctw.ChangeTracker.Prepend(0); os.Persist(); os = ObjectStore2.Load(storage); ctw = os.Roots.Find <ChangeTrackerWrapper>(); ctw.ValuesFromHead().SequenceEqual(new[] { 0, 1, 2, 3 }).ShouldBeTrue(); ctw.ValuesFromTail().SequenceEqual(new[] { 3, 2, 1, 0 }).ShouldBeTrue(); ctw.ChangeTracker.Head.Next.Remove(); os.Persist(); os = ObjectStore2.Load(storage); ctw = os.Roots.Find <ChangeTrackerWrapper>(); ctw.ValuesFromHead().SequenceEqual(new[] { 0, 2, 3 }).ShouldBeTrue(); ctw.ValuesFromTail().SequenceEqual(new[] { 3, 2, 0 }).ShouldBeTrue(); }
public void ChangeTrackerWithNoChangesCanBePersistedAndLoadedAgain() { var storage = new InMemoryStorageEngine(); var os = ObjectStore2.New(storage); var ctw = new ChangeTrackerWrapper(); os.Roots.Entangle(ctw); os.Persist(); os = ObjectStore2.Load(storage); ctw = os.Roots.Find <ChangeTrackerWrapper>(); ctw.ValuesFromHead().Count().ShouldBe(0); ctw.ValuesFromTail().Count().ShouldBe(0); }
public void ChangeTrackerWithSetNodeValueSurvivesPersistence() { var storage = new InMemoryStorageEngine(); var os = ObjectStore2.New(storage); var ctw = new ChangeTrackerWrapper(); os.Roots.Entangle(ctw); ctw.ChangeTracker.Append(1); ctw.ChangeTracker.Append(2); os.Persist(); os = ObjectStore2.Load(storage); ctw = os.Roots.Find <ChangeTrackerWrapper>(); ctw.ChangeTracker.Head.Value = 3; os.Persist(); os = ObjectStore2.Load(storage); ctw = os.Roots.Find <ChangeTrackerWrapper>(); ctw.ValuesFromHead().SequenceEqual(new[] { 3, 2 }).ShouldBeTrue(); }