public void Init()
        {
            _guidGenerator = new SequentialAtEndGuidGenerator();

            MetaFactories.Add(new MetaFactory(new Meta("ApplicationName", "Tests")));
            MetaFactories.Add(new MetaFactory(new Meta("Username", "Tester")));

            var typeFactory = new DefaultTypeFactory(new MD5HashProvider(Encoding.UTF8));

            var hash = typeFactory.GetHash(typeof(Created));

            EventStore = new SqlEventStore(
                new JsonSerializer(),
                typeFactory,
                Encoding.UTF8,
                ConfigurationManager.ConnectionStrings["SqlEventStore"].ConnectionString);

            var streamProcessor = new EventStreamProcessor <AccountAggregateRoot, AccountState>(new AggregateRootBuilder <AccountAggregateRoot, AccountState>(), new AggregateRootStateBuilder <AccountState>());

            Repository = new EventStoreRepository <AccountAggregateRoot, AccountState>(EventStore, streamProcessor, _guidGenerator);
        }
        public void TestProcessEvent()
        {
            var datetime = DateTimeOffset.Now;

            var expected = new EventData
            {
                Name = "event1",
                DeviceId = "id1",
                PublishedAt = datetime,
                Data = "somedata",
                Ttl = 60
            };

            using (var ms = new MemoryStream())
            {
                using (var writer = new StreamWriter(ms))
                {
                    writer.WriteLine("event: {0}", expected.Name);
                    writer.Flush();
                    var actualLength = ms.Length;
                    ms.Position = 0;

                    var sut = new EventStreamProcessor(ms, new CancellationTokenSource());

                    var actual = sut.GetEvent();
                    Assert.IsNull(actual);

                    writer.WriteLine("data: {0}", JsonConvert.SerializeObject(expected));
                    writer.Flush();
                    ms.Position = actualLength;

                    actual = sut.GetEvent();

                    Assert.IsNotNull(actual);
                    Assert.AreEqual(expected, actual);
                }
            }
        }