public void produced_checkpoint_tags_are_correctly_ordered()
        {
            var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"});
            var zero = t.MakeZeroCheckpointTag();

            var zeroEvent = t.MakeCheckpointTag(zero, _zeroEvent);
            var zeroEvent2 = t.MakeCheckpointTag(zeroEvent, _zeroEvent);
            var first = t.MakeCheckpointTag(zeroEvent2, _firstEvent);
            var second = t.MakeCheckpointTag(first, _secondEvent);
            var second2 = t.MakeCheckpointTag(zeroEvent, _secondEvent);
            var third = t.MakeCheckpointTag(second, _thirdEvent);

            Assert.IsTrue(zeroEvent > zero);
            Assert.IsTrue(first > zero);
            Assert.IsTrue(second > first);

            Assert.AreEqual(zeroEvent2, zeroEvent);
            Assert.AreEqual(second, second2); // strong order (by tf)
            Assert.IsTrue(second2 > zeroEvent);
            Assert.IsTrue(second2 > first);

            Assert.IsTrue(third > second);
            Assert.IsTrue(third > first);
            Assert.IsTrue(third > zeroEvent);
            Assert.IsTrue(third > zero);
        }
 public void can_update_by_tf_event_if_with_prior_index_position()
 {
     var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"});
     var linkEvent = ReaderSubscriptionMessage.CommittedEventDistributed.Sample(
         Guid.NewGuid(), new TFPos(180, 170), "$et-type2", 1, false, Guid.NewGuid(), "$>", false,
         Helper.UTF8NoBom.GetBytes("0@stream2"), new byte[0]);
     var tag = CheckpointTag.FromEventTypeIndexPositions(
         new TFPos(70, 60), new Dictionary<string, int> {{"type1", 2}, {"type2", 2}});
     var updated = t.MakeCheckpointTag(tag, linkEvent);
     Assert.AreEqual(new TFPos(180, 170), updated.Position);
     Assert.AreEqual(2, updated.Streams["type1"]);
     Assert.AreEqual(2, updated.Streams["type2"]);
 }
 public void cannot_update_by_prior_tf_position()
 {
     var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"});
     var linkEvent = ReaderSubscriptionMessage.CommittedEventDistributed.Sample(
         Guid.NewGuid(), new TFPos(180, 170), "$et-type2", 1, false, Guid.NewGuid(), "$>", false,
         Helper.UTF8NoBom.GetBytes("0@stream2"), new byte[0]);
     var tag = CheckpointTag.FromEventTypeIndexPositions(
         new TFPos(270, 260), new Dictionary<string, int> {{"type1", 2}, {"type2", 2}});
     t.MakeCheckpointTag(tag, linkEvent);
 }
        public void zero_position_tag_is_before_first_event_possible()
        {
            var t = new EventByTypeIndexPositionTagger(new[] {"type1", "type2"});
            var zero = t.MakeZeroCheckpointTag();

            var zeroFromEvent = t.MakeCheckpointTag(zero, _zeroEvent);

            Assert.IsTrue(zeroFromEvent > zero);
        }