|
1 | 1 | // Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. |
2 | 2 |
|
3 | 3 | using System.IO; |
| 4 | +using System.Linq; |
| 5 | +using System.Net.Http; |
4 | 6 | using System.Runtime.Serialization; |
| 7 | +using System.Web.OData.Extensions; |
| 8 | +using System.Xml.Linq; |
5 | 9 | using Microsoft.OData.Core; |
6 | 10 | using Microsoft.TestCommon; |
7 | 11 |
|
@@ -98,5 +102,49 @@ public void ODataEntityReferenceLinkSerializer_Serializes_UrisAndEntityReference |
98 | 102 | "\"value\":[{\"@odata.id\":\"http://uri1/\"},{\"@odata.id\":\"http://uri2/\"}]}", |
99 | 103 | result); |
100 | 104 | } |
| 105 | + |
| 106 | + public static TheoryDataSet<object> SerializationTestData2 |
| 107 | + { |
| 108 | + get |
| 109 | + { |
| 110 | + Uri uri1 = new Uri("http://uri1"); |
| 111 | + return new TheoryDataSet<object> |
| 112 | + { |
| 113 | + new Uri[] {uri1} |
| 114 | + }; |
| 115 | + } |
| 116 | + } |
| 117 | + |
| 118 | + [Theory] |
| 119 | + [PropertyData("SerializationTestData2")] |
| 120 | + public void ODataEntityReferenceLinkSerializer_Serializes_UrisAndEntityReferenceLinks_WithCount(object uris) |
| 121 | + { |
| 122 | + // Arrange |
| 123 | + ODataEntityReferenceLinksSerializer serializer = new ODataEntityReferenceLinksSerializer(); |
| 124 | + ODataSerializerContext writeContext = new ODataSerializerContext(); |
| 125 | + writeContext.Request = new HttpRequestMessage(); |
| 126 | + writeContext.Request.ODataProperties().TotalCount = 1; |
| 127 | + |
| 128 | + MemoryStream stream = new MemoryStream(); |
| 129 | + IODataResponseMessage message = new ODataMessageWrapper(stream); |
| 130 | + |
| 131 | + ODataMessageWriterSettings settings = new ODataMessageWriterSettings |
| 132 | + { |
| 133 | + ODataUri = new ODataUri { ServiceRoot = new Uri("http://any/") } |
| 134 | + }; |
| 135 | + |
| 136 | + settings.SetContentType(ODataFormat.Json); |
| 137 | + ODataMessageWriter writer = new ODataMessageWriter(message, settings); |
| 138 | + |
| 139 | + // Act |
| 140 | + serializer.WriteObject(uris, typeof(ODataEntityReferenceLinks), writer, writeContext); |
| 141 | + stream.Seek(0, SeekOrigin.Begin); |
| 142 | + string result = new StreamReader(stream).ReadToEnd(); |
| 143 | + Assert.Equal( |
| 144 | + string.Format("{0},{1},{2}", |
| 145 | + "{\"@odata.context\":\"http://any/$metadata#Collection($ref)\"", |
| 146 | + "\"@odata.count\":1", |
| 147 | + "\"value\":[{\"@odata.id\":\"http://uri1/\"}]}"), result); |
| 148 | + } |
101 | 149 | } |
102 | 150 | } |
0 commit comments