public async Task Can_append_namespace_entry_to_store_and_load_from_stream() { const string ns = "MyApp"; using var fixture = new LogStoreFixture(); var entry = LogEntryFactory.CreateEntry(new Namespace(ns)); var current = await fixture.Store.AddEntryAsync(entry); Assert.Equal(0UL, current); Assert.Equal(0UL, entry.Index); var items = 0; foreach (var item in fixture.Store.StreamEntries()) { foreach (var @object in item.Objects) { Assert.True(@object.Data is Namespace); Assert.Equal(ns, ((Namespace)@object.Data).Value); Assert.Equal(LogEntryFactory.TypeProvider.Get(typeof(Namespace)), @object.Type); Assert.Equal(LogSerializeContext.FormatVersion, @object.Version); items++; } } Assert.Equal(1, items); }
public async Task Can_stream_valid_entries() { const string ns = "MyApp"; using var fixture = new LogStoreFixture(); var one = LogEntryFactory.CreateEntry(new Namespace(ns)); var two = LogEntryFactory.CreateEntry(new Namespace(ns), one.Hash); Assert.False(one.Hash.SequenceEqual(two.Hash)); Assert.True(one.Hash.SequenceEqual(two.PreviousHash)); await fixture.Store.AddEntryAsync(one); Assert.Equal(0UL, one.Index); await fixture.Store.AddEntryAsync(two); Assert.Equal(1UL, two.Index); var count = await fixture.Store.GetLengthAsync(); Assert.Equal(2UL, count); var items = 0; foreach (var item in fixture.Store.StreamEntries()) { foreach (var @object in item.Objects) { Assert.True(@object.Data is Namespace); Assert.Equal(ns, ((Namespace)@object.Data).Value); Assert.Equal(LogEntryFactory.TypeProvider.Get(typeof(Namespace)), @object.Type); Assert.Equal(LogSerializeContext.FormatVersion, @object.Version); items++; } } Assert.Equal(2, items); }