public void TestWriteReadStream()
        {
            Journal journal = Journal.Open("test");

            journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1"));
            journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1"));
            journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1"));
            journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1"));
            journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1"));

            EntryStreamReader streamReader = journal.StreamReader();

            EntryStream eventStream123 = streamReader.StreamFor("name123");

            Assert.AreEqual(3, eventStream123.StreamVersion);
            Assert.AreEqual(3, eventStream123.Stream.Count);
            Assert.AreEqual(new EntryValue("name123", 1, "type1", "type1_instance1", ""), eventStream123.Stream[0]);
            Assert.AreEqual(new EntryValue("name123", 2, "type1-1", "type1-1_instance1", ""), eventStream123.Stream[1]);
            Assert.AreEqual(new EntryValue("name123", 3, "type1-2", "type1-2_instance1", ""), eventStream123.Stream[2]);

            EntryStream eventStream456 = streamReader.StreamFor("name456");

            Assert.AreEqual(2, eventStream456.StreamVersion);
            Assert.AreEqual(2, eventStream456.Stream.Count);
            Assert.AreEqual(new EntryValue("name456", 1, "type2", "type2_instance1", ""), eventStream456.Stream[0]);
            Assert.AreEqual(new EntryValue("name456", 2, "type2-1", "type2-1_instance1", ""), eventStream456.Stream[1]);

            journal.Close();
        }
        public void TestWriteReadStreamSnapshot()
        {
            Journal journal = Journal.Open("test");

            journal.Write("name123", 1, EntryBatch.Of("type1", "type1_instance1", "SNAPSHOT123-1"));
            journal.Write("name456", 1, EntryBatch.Of("type2", "type2_instance1", "SNAPSHOT456-1"));
            journal.Write("name123", 2, EntryBatch.Of("type1-1", "type1-1_instance1", "SNAPSHOT123-2"));
            journal.Write("name123", 3, EntryBatch.Of("type1-2", "type1-2_instance1"));
            journal.Write("name456", 2, EntryBatch.Of("type2-1", "type2-1_instance1", "SNAPSHOT456-2"));

            EntryStreamReader streamReader = journal.StreamReader();

            EntryStream eventStream123 = streamReader.StreamFor("name123");

            Assert.AreEqual("name123", eventStream123.StreamName);
            Assert.AreEqual(3, eventStream123.StreamVersion);
            Assert.AreEqual(1, eventStream123.Stream.Count);
            Assert.AreEqual("SNAPSHOT123-2", eventStream123.Snapshot);

            EntryStream eventStream456 = streamReader.StreamFor("name456");

            Assert.AreEqual("name456", eventStream456.StreamName);
            Assert.AreEqual(2, eventStream456.StreamVersion);
            Assert.AreEqual(0, eventStream456.Stream.Count);
            Assert.AreEqual("SNAPSHOT456-2", eventStream456.Snapshot);

            journal.Close();
        }
        public PersonES PersonOfId(string id)
        {
            var stream = reader.StreamFor(id);

            return(new PersonES(ToSourceStream <DomainEvent>(stream.Stream), stream.StreamVersion));
        }
        public Product ProductOfId(string id)
        {
            var stream = reader.StreamFor(id);

            return(new Product(ToSourceStream <DomainEvent>(stream.Stream), stream.StreamVersion));
        }