public async Task QueryFeedWithDollarFormatOverrideAcceptMediaTypeTests(
            string contentType,
            string dollarFormat,
            string expectMediaType)
        {
            string expand     = "$expand=SpecialOrder($select=Detail)";
            string filter     = "$filter=Id le 5";
            string orderBy    = "$orderby=Id desc";
            string select     = "$select=Id";
            string format     = string.Format("$format={0}", dollarFormat);
            string query      = string.Format("?{0}&{1}&{2}&{3}&{4}", expand, filter, orderBy, select, format);
            string requestUri = this.BaseAddress + "/odata/DollarFormatCustomers" + query;

            var request = new HttpRequestMessage(HttpMethod.Get, requestUri);

            request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(contentType));

            var response = await this.Client.SendAsync(request);

            Assert.True(response.IsSuccessStatusCode);
            Assert.Equal(expectMediaType, response.Content.Headers.ContentType.MediaType);

            if (dollarFormat.ToLowerInvariant().Contains("type"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("type"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.metadata"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.metadata"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.streaming"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.streaming"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("atom"))
            {
                ODataHelper.ThrowAtomNotSupported();
            }
            if (dollarFormat.ToLowerInvariant().Contains("xml"))
            {
                XmlReader.Create(await response.Content.ReadAsStreamAsync());
            }
            else if (dollarFormat.ToLowerInvariant().Contains("json"))
            {
                await response.Content.ReadAsObject <JObject>();
            }
        }
        public async Task QueryEntryWithDollarFormatOverrideAcceptMediaTypeTests(string contentType, string dollarFormat, string expectMediaType)
        {
            string query      = string.Format("?$format={0}", dollarFormat);
            string requestUri = this.BaseAddress + "/odata/DollarFormatCustomers(1)" + query;

            var request = new HttpRequestMessage(HttpMethod.Get, requestUri);

            request.Headers.Accept.Add(MediaTypeWithQualityHeaderValue.Parse(contentType));

            var response = await this.Client.SendAsync(request);

            Assert.True(response.IsSuccessStatusCode);
            Assert.Equal(expectMediaType, response.Content.Headers.ContentType.MediaType);

            if (dollarFormat.ToLowerInvariant().Contains("type"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("type"));
                Assert.NotNull(param);
                Assert.True(dollarFormat.ToLowerInvariant().Contains(param.Value));
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.metadata"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.metadata"));
                Assert.NotNull(param);
                Assert.True(dollarFormat.ToLowerInvariant().Contains(param.Value));
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.streaming"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.streaming"));
                Assert.NotNull(param);
                Assert.True(dollarFormat.ToLowerInvariant().Contains(param.Value));
            }

            if (dollarFormat.ToLowerInvariant().Contains("atom"))
            {
                ODataHelper.ThrowAtomNotSupported();
            }
            else if (dollarFormat.ToLowerInvariant().Contains("xml"))
            {
                Assert.DoesNotThrow(() => XmlReader.Create(response.Content.ReadAsStreamAsync().Result));
            }
            else if (dollarFormat.ToLowerInvariant().Contains("json"))
            {
                Assert.DoesNotThrow(() => response.Content.ReadAsAsync <JObject>());
            }
        }
        public async Task QueryEntryWithDollarFormatWithoutAcceptMediaTypeTests(string dollarFormat, string expectMediaType)
        {
            string query      = string.Format("?$format={0}", dollarFormat);
            string requestUri = this.BaseAddress + "/odata/DollarFormatCustomers(1)" + query;

            var response = await this.Client.GetAsync(requestUri);

            Assert.True(response.IsSuccessStatusCode);
            Assert.Equal(expectMediaType, response.Content.Headers.ContentType.MediaType);
            if (dollarFormat.ToLowerInvariant().Contains("type"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("type"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.metadata"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.metadata"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("odata.streaming"))
            {
                var param = response.Content.Headers.ContentType.Parameters.FirstOrDefault(e => e.Name.Equals("odata.streaming"));
                Assert.NotNull(param);
                Assert.Contains(param.Value, dollarFormat.ToLowerInvariant());
            }

            if (dollarFormat.ToLowerInvariant().Contains("atom"))
            {
                ODataHelper.ThrowAtomNotSupported();
            }
            else if (dollarFormat.ToLowerInvariant().Contains("xml"))
            {
                XmlReader.Create(await response.Content.ReadAsStreamAsync());
            }
            else if (dollarFormat.ToLowerInvariant().Contains("json"))
            {
                await response.Content.ReadAsObject <JObject>();
            }
        }