public void FullModeInit() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); keep.Add(message); keep.Sync(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); message.Init("Field", 1, 2, 3); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable <int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.AreEqual(message.Topic, diff.Topic); Assert.AreEqual(message["Field"], diff["Field"]); }
public void FullModeTopic() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); message.Sync(); keep.Add(message); Assert.IsFalse(message.IsChanged); Assert.IsTrue(keep.IsChanged); // message was added keep.Sync(); Assert.IsFalse(keep.IsChanged); message.Topic = "Refresh"; Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable <int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.AreEqual(message.Topic, diff.Topic); Assert.IsTrue(diff.IsEmpty); }
protected virtual bool UpKeep(bool force = false) { if (!force && !Keep.IsChanged) { if (!Keep.QuickMode && FChangeIndexOut.SliceCount != 0) { FChangeIndexOut.FlushNil(); FChangeOut.FlushNil(); } return(false); } if (Keep.QuickMode) { Keep.Sync(); } else { IEnumerable <Message> changes; IEnumerable <int> indexes; changes = Keep.Sync(out indexes); FChangeIndexOut.FlushResult(indexes); FChangeOut.FlushResult(changes); } FOutput.FlushResult(Keep); FCountOut.FlushInt(Keep.Count); return(true); }
public void QuickMode() { var keep = new MessageKeep(); keep.QuickMode = true; var message = new Message("Test"); List <Message> diffs = new List <Message>(); message.ChangedWithDetails += (orig, diff) => { diffs.Add(diff); }; keep.Add(message); message.Init("Field", 1, 2, 3); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); Assert.AreEqual(0, diffs.Count); var change = keep.Sync(); Assert.AreEqual(1, diffs.Count); Assert.AreEqual(message.Topic, diffs.First().Topic); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.IsNull(change); // when in quickmode outputs null change = keep.Sync(); }
public void FullModeRemove() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); message.Init("Field", 1, 2, 3); message.Commit(this); Assert.IsFalse(message.IsEmpty); keep.Add(message); Assert.IsFalse(message.IsChanged); Assert.IsTrue(keep.IsChanged); // message was added keep.Sync(); message.Remove("Field"); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable<int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.IsTrue(diff.IsEmpty); }
public void FullModeInit() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); keep.Add(message); keep.Sync(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); message.Init("Field", 1, 2, 3); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable<int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.AreEqual(message.Topic, diff.Topic); Assert.AreEqual(message["Field"], diff["Field"]); }
protected virtual bool UpKeep(bool force = false) { if (!force && !Keep.IsChanged) { if (!Keep.QuickMode && FChangeOut.SliceCount != 0) { FChangeOut.FlushNil(); FChangeIndexOut.FlushNil(); } var recentCommits = from message in Keep where message.HasRecentCommit() select message; foreach (var message in recentCommits) { message.Commit(Keep); } return(false); } if (Keep.QuickMode) { Keep.Sync(); } else { IEnumerable <int> indexes; var changes = Keep.Sync(out indexes); FChangeIndexOut.FlushResult(indexes); FChangeOut.FlushResult(changes); } FOutput.FlushResult(Keep); FCountOut.FlushItem <int>(Keep.Count); return(true); }
public void FullModeRemove() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); message.Init("Field", 1, 2, 3); message.Sync(); Assert.IsFalse(message.IsEmpty); keep.Add(message); Assert.IsFalse(message.IsChanged); Assert.IsTrue(keep.IsChanged); // message was added keep.Sync(); message.Remove("Field"); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable <int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.IsTrue(diff.IsEmpty); }
public void FullModeTopic() { var keep = new MessageKeep(); keep.QuickMode = false; var message = new Message("Test"); message.Commit(this); keep.Add(message); Assert.IsFalse(message.IsChanged); Assert.IsTrue(keep.IsChanged); // message was added keep.Sync(); Assert.IsFalse(keep.IsChanged); message.Topic = "Refresh"; Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); IEnumerable<int> changedIndices; var change = keep.Sync(out changedIndices); var diff = change.First(); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.AreEqual(message.Topic, diff.Topic); Assert.IsTrue(diff.IsEmpty); }
public void QuickMode() { var keep = new MessageKeep(); keep.QuickMode = true; var message = new Message("Test"); List<Message> diffs = new List<Message>(); message.ChangedWithDetails += (orig, diff) => { diffs.Add(diff); } ; keep.Add(message); message.Init("Field", 1, 2, 3); Assert.IsTrue(message.IsChanged); Assert.IsTrue(keep.IsChanged); Assert.AreEqual(0, diffs.Count); var change = keep.Sync(); Assert.AreEqual(1, diffs.Count); Assert.AreEqual(message.Topic, diffs.First().Topic); Assert.IsFalse(message.IsChanged); Assert.IsFalse(keep.IsChanged); Assert.IsNull(change); // when in quickmode outputs null change = keep.Sync(); }