public async Task BrokenServerFixedSizePagedAsync() { var server = new FakeServer(s_resourceA, 1); var request = new PageStreamingRequest { PageSize = 0 }; var paged = server.PagedAsync(null, null, request); await Assert.ThrowsAsync <NotSupportedException>(() => paged.ReadPageAsync(1)); }
public async Task FlattenAsync(PagedResource pagedResource, int pageSize) { var server = new FakeServer(pagedResource); var request = new PageStreamingRequest { PageSize = pageSize }; var paged = server.PagedAsync(null, null, request); Assert.Equal(pagedResource.All, await paged.ToArray()); }
public async Task SpecifyPageTokenAtStartAsync() { var server = new FakeServer(s_resourceA, 1); var request = new PageStreamingRequest { PageSize = 0, PageToken = "1:0" }; var paged = server.PagedAsync(null, null, request); Assert.Equal(s_resourceA.Resource.Skip(1), await paged.AsRawResponses().Select(x => x.ToArray()).ToArray()); }
public async Task NaturalPagesAsync(PagedResource pagedResource) { var server = new FakeServer(pagedResource); var request = new PageStreamingRequest { PageSize = 0 }; var paged = server.PagedAsync(null, null, request); Assert.Equal(pagedResource.Resource, await paged.AsRawResponses().Select(x => x.ToArray()).ToArray()); }
public async Task NoDataAsync() { var noDataResource = new PagedResource(); var server = new FakeServer(noDataResource); var request = new PageStreamingRequest { PageSize = 0 }; var paged = server.PagedAsync(null, null, request); // Natural pages Assert.Equal(1, await paged.AsRawResponses().Count()); var page1 = await paged.AsRawResponses().First(); Assert.Empty(page1); Assert.Equal("", page1.NextPageToken); // Unnatural things Assert.Empty(await paged.ToArray()); Assert.Empty(await paged.ReadPageAsync(1)); }
public async Task ReadPageAsync(PagedResource pagedResource, int pageSize) { var server = new FakeServer(pagedResource); string pageToken = ""; var actualPages = new List <Page <int> >(); do { var request = new PageStreamingRequest { PageSize = pageSize, PageToken = pageToken }; var paged = server.PagedAsync(null, null, request); actualPages.Add(await paged.ReadPageAsync(pageSize)); } while ((pageToken = actualPages.Last().NextPageToken) != ""); var expectedPages = pagedResource.Fixed(pageSize); // Ignore trailing empty pages; we could change the fake server to avoid returning a page // token when we've reached (but not gone past) the end. Assert.Equal(expectedPages, actualPages.TakeWhile(p => p.Any()).Select(p => p.ToArray()).ToArray()); }