Ejemplo n.º 1
0
        public async Task should_load_incrementally_from_an_existing_storage()
        {
            var storage = new MemoryStorage();
            await Task.WhenAll(Enumerable.Range(0, 8).Select(x => storage.Put(new TestStorageObject(x))));

            var collection = new StorageCollection<TestStorageObject>(storage, "0", "6");
            Assert.True(collection.HasMoreItems);
            Assert.Equal(0, collection.Count);

            await collection.LoadMoreItemsAsync(2);

            Assert.Equal(2, collection.Count);
            Assert.Equal(collection.Select(e => e.Id), Enumerable.Range(0, 2).Select(i => i.ToString()));

            await collection.LoadMoreItemsAsync(2);

            Assert.Equal(4, collection.Count);
            Assert.Equal(collection.Select(e => e.Id), Enumerable.Range(0, 4).Select(i => i.ToString()));

            Assert.False(collection.IsLoading);
            Assert.True(collection.HasMoreItems);

            await collection.LoadMoreItemsAsync(10);
            Assert.Equal(6, collection.Count);
            Assert.False(collection.HasMoreItems);
            Assert.Equal(collection.Select(e => e.Id), Enumerable.Range(0, 6).Select(i => i.ToString()));
        }
Ejemplo n.º 2
0
        public static async Task storage_can_be_migrated_by_get_many_request()
        {
            var v1 = new MemoryStorage<Migration>();
            var v2 = new MemoryStorage<Migration>();
            var migrate = new StorageMigration<Migration>(v2, v1, null, true);

            var data = Enumerable.Range(0, 1000).Select(x => new Migration { Id = x, Time = DateTime.UtcNow });
            await Task.WhenAll(from x in data select v1.Put(x)).ConfigureAwait(false);

            var a = await migrate.All().ToListAsync().ConfigureAwait(false);
            var b = await v2.All().ToListAsync().ConfigureAwait(false);

            Assert.True(a.SequenceEqual(b));
            Assert.False((await v1.All().ToListAsync().ConfigureAwait(false)).Any());
        }
Ejemplo n.º 3
0
        public async Task should_load_all_items()
        {
            var storage = new MemoryStorage();
            await Task.WhenAll(Enumerable.Range(0, 8).Select(x => storage.Put(new TestStorageObject(x))));

            var collection = new StorageCollection<TestStorageObject>(storage, "0", "6");
            Assert.True(collection.HasMoreItems);
            Assert.Equal(0, collection.Count);

            await collection.LoadAllAsync(2);

            Assert.Equal(6, collection.Count);
            Assert.False(collection.HasMoreItems);
            Assert.Equal(collection.Select(e => e.Id), Enumerable.Range(0, 6).Select(i => i.ToString()));
        }
Ejemplo n.º 4
0
        public static async Task storage_can_be_migrated_by_get_request()
        {
            var v1 = new MemoryStorage<Migration>();
            var v2 = new MemoryStorage<Migration>();
            var migrate = new StorageMigration<Migration>(v2, v1, null, true);

            await v1.Put(new Migration { Id = 1, Time = DateTime.UtcNow }).ConfigureAwait(false);

            Assert.Null(await v2.Get(StorageKey.Get(1)).ConfigureAwait(false));

            Assert.Equal(
                await v1.Get(StorageKey.Get(1)).ConfigureAwait(false),
                await migrate.Get(StorageKey.Get(1)).ConfigureAwait(false));

            Assert.Null(await v1.Get(StorageKey.Get(1)).ConfigureAwait(false));

            Assert.Equal(
                await v2.Get(StorageKey.Get(1)).ConfigureAwait(false),
                await migrate.Get(StorageKey.Get(1)).ConfigureAwait(false));
        }
Ejemplo n.º 5
0
        public static async Task storage_can_be_migrated_in_a_batch()
        {
            var v1 = new MemoryStorage<Migration>();
            var v2 = new MemoryStorage<Migration>();
            var v3 = new MemoryStorage<Migration>();
            var migrate = new StorageMigration<Migration>(v2, v1);
            var migrateAndDelete = new StorageMigration<Migration>(v3, v1, null, true);

            var data = Enumerable.Range(0, 100).Select(x => new Migration { Id = x, Time = DateTime.UtcNow });
            await Task.WhenAll(from x in data select v1.Put(x)).ConfigureAwait(false);

            Assert.True(data.Select(x => x.Id).SequenceEqual((await v1.All().ToListAsync().ConfigureAwait(false)).Select(x => x.Id)));

            await migrate.MigrateAsync(123).ConfigureAwait(false);

            Assert.True(data.Select(x => x.Id).SequenceEqual((await v1.All().ToListAsync().ConfigureAwait(false)).Select(x => x.Id)));
            Assert.True(data.Select(x => x.Id).SequenceEqual((await v2.All().ToListAsync().ConfigureAwait(false)).Select(x => x.Id)));

            await migrateAndDelete.MigrateAsync(456).ConfigureAwait(false);
            Assert.Equal(0, (await v1.All().ToListAsync()).Count());
            Assert.True(data.Select(x => x.Id).SequenceEqual((await v3.All().ToListAsync().ConfigureAwait(false)).Select(x => x.Id)));
        }