Exemplo n.º 1
0
        public void JsonStreamReaderTest()
        {
            List <Message <SimpleObject> > stream1 = new List <Message <SimpleObject> >();
            List <Message <SimpleObject> > stream2 = new List <Message <SimpleObject> >();
            IStreamMetadata metadata1 = null;
            IStreamMetadata metadata2 = null;

            using (var reader = new JsonStreamReader(StoreName, InputPath))
            {
                metadata1 = reader.AvailableStreams.First((m) => m.Name == "Stream1");
                ValidateMetadata(metadata1, "Stream1", 1, TypeName, StoreName, StorePath, FirstTime, LastTime, FirstTime, LastTime, 2);

                metadata2 = reader.AvailableStreams.First((m) => m.Name == "Stream2");
                ValidateMetadata(metadata2, "Stream2", 2, TypeName, StoreName, StorePath, FirstTime, LastTime, FirstTime, LastTime, 2);

                reader.OpenStream <SimpleObject>("Stream1", (d, e) => stream1.Add(new Message <SimpleObject>(d.DeepClone(), e.OriginatingTime, e.CreationTime, e.SourceId, e.SequenceId)));
                reader.OpenStream <SimpleObject>("Stream2", (d, e) => stream2.Add(new Message <SimpleObject>(d.DeepClone(), e.OriginatingTime, e.CreationTime, e.SourceId, e.SequenceId)));
                reader.ReadAll(ReplayDescriptor.ReplayAll);
            }

            Assert.AreEqual(stream1.Count, 2);
            Assert.AreEqual(stream2.Count, 2);

            ValidateMessage(stream1[0], 1, 0, FirstTime, FirstTime, (data) => ValidateSimpleObject(data, Data));
            ValidateMessage(stream1[1], 1, 1, LastTime, LastTime, (data) => ValidateSimpleObject(data, Data));
            ValidateMessage(stream2[0], 2, 0, FirstTime, FirstTime, (data) => ValidateSimpleObject(data, Data));
            ValidateMessage(stream2[1], 2, 1, LastTime, LastTime, (data) => ValidateSimpleObject(data, Data));
        }