namespace ZeroLevel.UnitTests
{
    // In developing, not working!
    public class DumpTests
    {
        /*
        [Fact]
        public void DumpStorageTest()
        {
            // Arrange
            var storage = new DumpStorage<TestSerializableDTO>();
            var arr = new TestSerializableDTO[] {
                new TestSerializableDTO { Id = 0, Title = "#1", Timestamp = DateTime.UtcNow.Ticks },
                new TestSerializableDTO { Id = 1, Title = "#2", Timestamp = DateTime.UtcNow.Ticks },
                new TestSerializableDTO { Id = 2, Title = "#3", Timestamp = DateTime.UtcNow.Ticks }
            };

            // Act
            storage.Dump(arr[0]);
            storage.Dump(arr[1]);
            storage.Dump(arr[2]);

            // Assert
            int index = 0;
            foreach (var entry in storage.ReadAndTruncate())
            {
                Assert.True(arr[index].Equals(entry));
                index++;
            }

            Assert.True(0 == storage.ReadAndTruncate().ToArray().Length);
        }

        [Fact]
        public void DumpStorageLongTest()
        {
            // Arrange
            var storage = new DumpStorage<TestSerializableDTO>();
            long index = 0;

            for (int i = 0; i < 1000; i++)
            {
                // Dump
                for (int j = 0; j < 100; j++)
                {
                    storage.Dump(new TestSerializableDTO { Id = i * 1000 + j, Timestamp = DateTime.UtcNow.Ticks, Title = $"#{i * j}" });
                }
                // Clean
                foreach (var entry in storage.ReadAndTruncate())
                {
                    Assert.True(entry.Id == index);
                    index++;
                }
            }
            Assert.True(0 == storage.ReadAndTruncate().ToArray().Length);
        }
        */
    }
}
