private static ZumoTest CreateFilterTestWithMultipleRequests(bool typed) { string testName = string.Format(CultureInfo.InvariantCulture, "Filter which maps one requests to many - {0} client", typed ? "typed" : "untyped"); return new ZumoTest(testName, async delegate(ZumoTest test) { var client = ZumoTestGlobals.Instance.Client; int numberOfRequests = new Random().Next(2, 5); var filter = new FilterWithMultipleRequests(test, numberOfRequests); test.AddLog("Created a filter which will replay the request {0} times", numberOfRequests); var filteredClient = client.WithFilter(filter); var typedTable = filteredClient.GetTable<RoundTripTableItem>(); var untypedTable = filteredClient.GetTable(ZumoTestGlobals.RoundTripTableName); var uniqueId = Guid.NewGuid().ToString("N"); if (typed) { var item = new RoundTripTableItem { String1 = uniqueId }; await typedTable.InsertAsync(item); } else { var item = new JsonObject(); item.Add("string1", JsonValue.CreateStringValue(uniqueId)); await untypedTable.InsertAsync(item); } if (filter.TestFailed) { test.AddLog("Filter reported a test failure. Aborting."); return false; } test.AddLog("Inserted the data; now retrieving it to see how many items we have inserted."); filter.NumberOfRequests = 1; // no need to send it multiple times anymore var items = await untypedTable.ReadAsync("$select=string1,id&$filter=string1 eq '" + uniqueId + "'"); var array = items.GetArray(); bool passed; if (array.Count == numberOfRequests) { test.AddLog("Filter inserted correct number of items."); passed = true; } else { test.AddLog("Error, filtered client should have inserted {0} items, but there are {1}", numberOfRequests, array.Count); passed = false; } // Cleanup foreach (var item in array) { await untypedTable.DeleteAsync(item.GetObject()); } test.AddLog("Cleanup: removed added items."); return passed; }); }
private static ZumoTest CreateFilterTestWithMultipleRequests(bool typed) { string testName = string.Format(CultureInfo.InvariantCulture, "Filter which maps one requests to many - {0} client", typed ? "typed" : "untyped"); return(new ZumoTest(testName, async delegate(ZumoTest test) { var client = ZumoTestGlobals.Instance.Client; int numberOfRequests = new Random().Next(2, 5); var filter = new FilterWithMultipleRequests(test, numberOfRequests); test.AddLog("Created a filter which will replay the request {0} times", numberOfRequests); var filteredClient = client.WithFilter(filter); var typedTable = filteredClient.GetTable <RoundTripTableItem>(); var untypedTable = filteredClient.GetTable(ZumoTestGlobals.RoundTripTableName); var uniqueId = Guid.NewGuid().ToString("N"); if (typed) { var item = new RoundTripTableItem { String1 = uniqueId }; await typedTable.InsertAsync(item); } else { var item = new JsonObject(); item.Add("string1", JsonValue.CreateStringValue(uniqueId)); await untypedTable.InsertAsync(item); } if (filter.TestFailed) { test.AddLog("Filter reported a test failure. Aborting."); return false; } test.AddLog("Inserted the data; now retrieving it to see how many items we have inserted."); filter.NumberOfRequests = 1; // no need to send it multiple times anymore var items = await untypedTable.ReadAsync("$select=string1,id&$filter=string1 eq '" + uniqueId + "'"); var array = items.GetArray(); bool passed; if (array.Count == numberOfRequests) { test.AddLog("Filter inserted correct number of items."); passed = true; } else { test.AddLog("Error, filtered client should have inserted {0} items, but there are {1}", numberOfRequests, array.Count); passed = false; } // Cleanup foreach (var item in array) { await untypedTable.DeleteAsync(item.GetObject()); } test.AddLog("Cleanup: removed added items."); return passed; })); }