public async Task <IList> ExecuteOe <TResult>(String requestUri, Type baseEntityType) { var parser = new OeParser(new Uri("http://dummy/"), OeDataAdapter, EdmModel); var stream = new MemoryStream(); await parser.ExecuteQueryAsync(ParseUri(requestUri), OeRequestHeaders.Default, stream, CancellationToken.None); stream.Position = 0; var reader = new ResponseReader(EdmModel, DbDataAdapter.EntitySetMetaAdapters); IList fromOe; if (typeof(TResult) == typeof(Object)) { IEnumerable <JObject> jobjects = reader.ReadOpenType(stream, baseEntityType).Select(t => JRawToEnum(t)).ToList(); fromOe = TestHelper.SortProperty(jobjects); } else if (typeof(TResult).GetTypeInfo().IsPrimitive) { fromOe = new String[] { new StreamReader(stream).ReadToEnd() } } ; else { fromOe = reader.ReadFeed <TResult>(stream).ToList(); } return(fromOe); }
private static async Task <T[]> Execute <T>(String request, Object requestData, Func <OrderContext, IEnumerable <T> > fromDbFunc) { var fixture = new DbFixtureInitDb(); fixture.Initalize(); var parser = new OeParser(new Uri("http://dummy/"), fixture.OeDataAdapter, fixture.EdmModel); var responseStream = new MemoryStream(); var requestUri = new Uri(@"http://dummy/" + request); if (requestData == null) { await parser.ExecuteGetAsync(requestUri, OeRequestHeaders.Default, responseStream, CancellationToken.None); } else { String data = JsonConvert.SerializeObject(requestData); var requestStream = new MemoryStream(Encoding.UTF8.GetBytes(data)); await parser.ExecutePostAsync(requestUri, OeRequestHeaders.Default, requestStream, responseStream, CancellationToken.None); } var reader = new ResponseReader(fixture.EdmModel, fixture.DbDataAdapter.EntitySetMetaAdapters); responseStream.Position = 0; T[] fromOe; if (typeof(T) == typeof(int)) { String count = new StreamReader(responseStream).ReadToEnd(); fromOe = new T[] { (T)(Object)int.Parse(count) }; } else { fromOe = reader.ReadFeed <T>(responseStream).ToArray(); } if (fromDbFunc == null) { return(fromOe); } T[] fromDb; using (var orderContext = (OrderContext)fixture.DbDataAdapter.CreateDataContext()) fromDb = fromDbFunc(orderContext).ToArray(); var settings = new JsonSerializerSettings() { ReferenceLoopHandling = ReferenceLoopHandling.Ignore, NullValueHandling = NullValueHandling.Ignore }; String jsonOe = JsonConvert.SerializeObject(fromOe, settings); String jsonDb = JsonConvert.SerializeObject(fromDb, settings); Console.WriteLine(requestUri); Assert.Equal(jsonDb, jsonOe); return(fromOe); }