|
4 | 4 |
|
5 | 5 | namespace Microsoft.Azure.Cosmos.SDK.EmulatorTests |
6 | 6 | { |
7 | | - using Microsoft.Azure.Cosmos.Fluent; |
8 | | - using Microsoft.Azure.Cosmos.Linq; |
9 | | - using Microsoft.VisualStudio.TestTools.UnitTesting; |
10 | | - using Newtonsoft.Json; |
11 | 7 | using System; |
12 | 8 | using System.Collections.Generic; |
13 | 9 | using System.Collections.ObjectModel; |
14 | 10 | using System.Linq; |
15 | 11 | using System.Linq.Dynamic; |
16 | 12 | using System.Linq.Expressions; |
17 | 13 | using System.Threading.Tasks; |
| 14 | + using Microsoft.Azure.Cosmos.Fluent; |
| 15 | + using Microsoft.Azure.Cosmos.Linq; |
| 16 | + using Microsoft.VisualStudio.TestTools.UnitTesting; |
| 17 | + using Newtonsoft.Json; |
18 | 18 |
|
19 | 19 | [TestClass] |
20 | 20 | public class CosmosItemLinqTests : BaseCosmosClientHelper |
@@ -321,64 +321,64 @@ public async Task QueryableExtentionFunctionsTest() |
321 | 321 | Assert.AreEqual(10, count); |
322 | 322 |
|
323 | 323 | Response<int> intSum = await linqQueryable.Select(item => item.taskNum).SumAsync(); |
324 | | - this.VerifyResponse(intSum, 420, queryRequestOptions); |
| 324 | + this.VerifyResponse(intSum, 420); |
325 | 325 |
|
326 | 326 | Response<int?> intNullableSum = await linqQueryable.Select(item => (int?)item.taskNum).SumAsync(); |
327 | | - this.VerifyResponse(intNullableSum, 420, queryRequestOptions); |
| 327 | + this.VerifyResponse(intNullableSum, 420); |
328 | 328 |
|
329 | 329 | Response<float> floatSum = await linqQueryable.Select(item => (float)item.taskNum).SumAsync(); |
330 | | - this.VerifyResponse(floatSum, 420, queryRequestOptions); |
| 330 | + this.VerifyResponse(floatSum, 420); |
331 | 331 |
|
332 | 332 | Response<float?> floatNullableSum = await linqQueryable.Select(item => (float?)item.taskNum).SumAsync(); |
333 | | - this.VerifyResponse(floatNullableSum, 420, queryRequestOptions); |
| 333 | + this.VerifyResponse(floatNullableSum, 420); |
334 | 334 |
|
335 | 335 | Response<double> doubleSum = await linqQueryable.Select(item => (double)item.taskNum).SumAsync(); |
336 | | - this.VerifyResponse(doubleSum, 420, queryRequestOptions); |
| 336 | + this.VerifyResponse(doubleSum, 420); |
337 | 337 |
|
338 | 338 | Response<double?> doubleNullableSum = await linqQueryable.Select(item => (double?)item.taskNum).SumAsync(); |
339 | | - this.VerifyResponse(doubleNullableSum, 420, queryRequestOptions); |
| 339 | + this.VerifyResponse(doubleNullableSum, 420); |
340 | 340 |
|
341 | 341 | Response<long> longSum = await linqQueryable.Select(item => (long)item.taskNum).SumAsync(); |
342 | | - this.VerifyResponse(longSum, 420, queryRequestOptions); |
| 342 | + this.VerifyResponse(longSum, 420); |
343 | 343 |
|
344 | 344 | Response<long?> longNullableSum = await linqQueryable.Select(item => (long?)item.taskNum).SumAsync(); |
345 | | - this.VerifyResponse(longNullableSum, 420, queryRequestOptions); |
| 345 | + this.VerifyResponse(longNullableSum, 420); |
346 | 346 |
|
347 | 347 | Response<decimal> decimalSum = await linqQueryable.Select(item => (decimal)item.taskNum).SumAsync(); |
348 | | - this.VerifyResponse(decimalSum, 420, queryRequestOptions); |
| 348 | + this.VerifyResponse(decimalSum, 420); |
349 | 349 |
|
350 | 350 | Response<decimal?> decimalNullableSum = await linqQueryable.Select(item => (decimal?)item.taskNum).SumAsync(); |
351 | | - this.VerifyResponse(decimalNullableSum, 420, queryRequestOptions); |
| 351 | + this.VerifyResponse(decimalNullableSum, 420); |
352 | 352 |
|
353 | 353 | Response<double> intToDoubleAvg = await linqQueryable.Select(item => item.taskNum).AverageAsync(); |
354 | | - this.VerifyResponse(intToDoubleAvg, 42, queryRequestOptions); |
| 354 | + this.VerifyResponse(intToDoubleAvg, 42); |
355 | 355 |
|
356 | 356 | Response<double?> intToDoubleNulableAvg = await linqQueryable.Select(item => (double?)item.taskNum).AverageAsync(); |
357 | | - this.VerifyResponse(intToDoubleNulableAvg, 42, queryRequestOptions); |
| 357 | + this.VerifyResponse(intToDoubleNulableAvg, 42); |
358 | 358 |
|
359 | 359 | Response<float> floatAvg = await linqQueryable.Select(item => (float)item.taskNum).AverageAsync(); |
360 | | - this.VerifyResponse(floatAvg, 42, queryRequestOptions); |
| 360 | + this.VerifyResponse(floatAvg, 42); |
361 | 361 |
|
362 | 362 | Response<float?> floatNullableAvg = await linqQueryable.Select(item => (float?)item.taskNum).AverageAsync(); |
363 | | - this.VerifyResponse(floatNullableAvg, 42, queryRequestOptions); |
| 363 | + this.VerifyResponse(floatNullableAvg, 42); |
364 | 364 |
|
365 | 365 | Response<double> doubleAvg = await linqQueryable.Select(item => (double)item.taskNum).AverageAsync(); |
366 | | - this.VerifyResponse(doubleAvg, 42, queryRequestOptions); |
| 366 | + this.VerifyResponse(doubleAvg, 42); |
367 | 367 |
|
368 | 368 | Response<double?> doubleNullableAvg = await linqQueryable.Select(item => (double?)item.taskNum).AverageAsync(); |
369 | | - this.VerifyResponse(doubleNullableAvg, 42, queryRequestOptions); |
| 369 | + this.VerifyResponse(doubleNullableAvg, 42); |
370 | 370 |
|
371 | 371 | Response<double> longToDoubleAvg = await linqQueryable.Select(item => (long)item.taskNum).AverageAsync(); |
372 | | - this.VerifyResponse(longToDoubleAvg, 42, queryRequestOptions); |
| 372 | + this.VerifyResponse(longToDoubleAvg, 42); |
373 | 373 |
|
374 | 374 | Response<double?> longToNullableDoubleAvg = await linqQueryable.Select(item => (long?)item.taskNum).AverageAsync(); |
375 | | - this.VerifyResponse(longToNullableDoubleAvg, 42, queryRequestOptions); |
| 375 | + this.VerifyResponse(longToNullableDoubleAvg, 42); |
376 | 376 |
|
377 | 377 | Response<decimal> decimalAvg = await linqQueryable.Select(item => (decimal)item.taskNum).AverageAsync(); |
378 | | - this.VerifyResponse(decimalAvg, 42, queryRequestOptions); |
| 378 | + this.VerifyResponse(decimalAvg, 42); |
379 | 379 |
|
380 | 380 | Response<decimal?> decimalNullableAvg = await linqQueryable.Select(item => (decimal?)item.taskNum).AverageAsync(); |
381 | | - this.VerifyResponse(decimalNullableAvg, 42, queryRequestOptions); |
| 381 | + this.VerifyResponse(decimalNullableAvg, 42); |
382 | 382 |
|
383 | 383 | //Adding more items to test min and max function |
384 | 384 | ToDoActivity toDoActivity = ToDoActivity.CreateRandomToDoActivity(); |
@@ -969,6 +969,27 @@ public async Task LinqSkipOrderBy() |
969 | 969 | Assert.AreEqual(2, count); |
970 | 970 | } |
971 | 971 |
|
| 972 | + [TestMethod] |
| 973 | + public async Task LinqMemberIndexing() |
| 974 | + { |
| 975 | + string testString = "Test"; |
| 976 | + |
| 977 | + IList<ToDoActivity> itemList = await ToDoActivity.CreateRandomItems(this.Container, 3, randomPartitionKey: true); |
| 978 | + IQueryable<ToDoActivity> queryable = this.Container.GetItemLinqQueryable<ToDoActivity>() |
| 979 | + .Select(q => new ToDoActivity { id = q.childrenMap[testString].id }); |
| 980 | + |
| 981 | + FeedIterator<ToDoActivity> feedIterator = queryable.ToFeedIterator(); |
| 982 | + |
| 983 | + int count = 0; |
| 984 | + while (feedIterator.HasMoreResults) |
| 985 | + { |
| 986 | + FeedResponse<ToDoActivity> feedResponse = feedIterator.ReadNextAsync().Result; |
| 987 | + count += feedResponse.Count; |
| 988 | + } |
| 989 | + |
| 990 | + Assert.AreEqual(3, count); |
| 991 | + } |
| 992 | + |
972 | 993 | private class NumberLinqItem |
973 | 994 | { |
974 | 995 | public string id; |
@@ -1005,10 +1026,7 @@ private async Task<List<T>> FetchResults<T>(QueryDefinition queryDefinition) |
1005 | 1026 | return itemList; |
1006 | 1027 | } |
1007 | 1028 |
|
1008 | | - private void VerifyResponse<T>( |
1009 | | - Response<T> response, |
1010 | | - T expectedValue, |
1011 | | - QueryRequestOptions queryRequestOptions) |
| 1029 | + private void VerifyResponse<T>(Response<T> response, T expectedValue) |
1012 | 1030 | { |
1013 | 1031 | Assert.AreEqual<T>(expectedValue, response.Resource); |
1014 | 1032 | Assert.IsTrue(response.RequestCharge > 0); |
|
0 commit comments