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 async Task should_sync_to_storage_change()
        {
            var changes = new List<NotifyCollectionChangedEventArgs>();
            var storage = new Storage(x => new ObservableStorage<TestStorageObject>(new MemoryStorage<TestStorageObject>()));
            var collection = new StorageCollection<TestStorageObject>(storage, "0", "6");

            collection.CollectionChanged += (sender, e) => { lock (changes) { changes.Add(e); } };
            await collection.LoadMoreItemsAsync(10);

            await Task.Delay(20);
            Assert.Equal(0, changes.Count);

            await Task.WhenAll(Enumerable.Range(5, 3).Select(x => storage.Add(new TestStorageObject(x))));
            await Task.Delay(20);

            Assert.Equal(1, changes.Count);
            Assert.Equal(1, collection.Count);
            changes.Clear();

            await Task.WhenAll(Enumerable.Range(0, 8).Select(x => storage.Put(new TestStorageObject(x))));

            await Task.Delay(20);
            Assert.Equal(6, changes.Count);
            Assert.Equal(6, collection.Count);
            changes.Clear();

            await Task.WhenAll(Enumerable.Range(4, 4).Select(x => storage.Put(new TestStorageObject(x))));

            await Task.Delay(20);
            Assert.Equal(2, changes.Count);
            Assert.Equal(6, collection.Count);
            changes.Clear();

            await Task.WhenAll(Enumerable.Range(2, 6).Select(x => storage.Delete<TestStorageObject>(x.ToString())));

            await Task.Delay(20);
            Assert.Equal(4, changes.Count);
            Assert.Equal(2, collection.Count);
            changes.Clear();
        }