blob: b1ee0df36f7969b68bee77f916dc28552318bac8 [file] [log] [blame]
Jens Geyeraa0c8b32019-01-28 23:27:45 +01001// Licensed to the Apache Software Foundation(ASF) under one
2// or more contributor license agreements.See the NOTICE file
3// distributed with this work for additional information
4// regarding copyright ownership.The ASF licenses this file
5// to you under the Apache License, Version 2.0 (the
6// "License"); you may not use this file except in compliance
7// with the License. You may obtain a copy of the License at
8//
9// http://www.apache.org/licenses/LICENSE-2.0
10//
11// Unless required by applicable law or agreed to in writing,
12// software distributed under the License is distributed on an
13// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14// KIND, either express or implied. See the License for the
15// specific language governing permissions and limitations
16// under the License.
17
18using System;
19using System.IO;
20using System.Text;
21using System.Threading.Tasks;
22using KellermanSoftware.CompareNetObjects;
23using Microsoft.VisualStudio.TestTools.UnitTesting;
24using Thrift.Protocol;
25using Thrift.Protocol.Entities;
Jens Geyer7eec2272025-02-12 00:36:44 +010026using Thrift.Transport;
Jens Geyeraa0c8b32019-01-28 23:27:45 +010027using Thrift.Transport.Client;
28
Jens Geyer98a23252022-01-09 16:50:52 +010029#pragma warning disable IDE0063 // using
30
Jens Geyeraa0c8b32019-01-28 23:27:45 +010031namespace Thrift.IntegrationTests.Protocols
32{
33 [TestClass]
Jens Geyer3e6be732025-06-04 22:31:55 +020034 public class ProtocolsOperationsTests : TestBase
Jens Geyeraa0c8b32019-01-28 23:27:45 +010035 {
Jens Geyerd6fc7912025-11-19 22:04:39 +010036 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +010037 [DataRow(typeof(TBinaryProtocol), TMessageType.Call)]
38 [DataRow(typeof(TBinaryProtocol), TMessageType.Exception)]
39 [DataRow(typeof(TBinaryProtocol), TMessageType.Oneway)]
40 [DataRow(typeof(TBinaryProtocol), TMessageType.Reply)]
41 [DataRow(typeof(TCompactProtocol), TMessageType.Call)]
42 [DataRow(typeof(TCompactProtocol), TMessageType.Exception)]
43 [DataRow(typeof(TCompactProtocol), TMessageType.Oneway)]
44 [DataRow(typeof(TCompactProtocol), TMessageType.Reply)]
45 [DataRow(typeof(TJsonProtocol), TMessageType.Call)]
46 [DataRow(typeof(TJsonProtocol), TMessageType.Exception)]
47 [DataRow(typeof(TJsonProtocol), TMessageType.Oneway)]
48 [DataRow(typeof(TJsonProtocol), TMessageType.Reply)]
49 public async Task WriteReadMessage_Test(Type protocolType, TMessageType messageType)
50 {
51 var expected = new TMessage(nameof(TMessage), messageType, 1);
52
53 try
54 {
55 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +010056 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +010057 {
Jens Geyer7eec2272025-02-12 00:36:44 +010058 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +010059
Jens Geyerdce22992020-05-16 23:02:27 +020060 await protocol.WriteMessageBeginAsync(expected, default);
61 await protocol.WriteMessageEndAsync(default);
Jens Geyer7eec2272025-02-12 00:36:44 +010062 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +010063
64 stream.Seek(0, SeekOrigin.Begin);
65
Jens Geyerdce22992020-05-16 23:02:27 +020066 var actualMessage = await protocol.ReadMessageBeginAsync(default);
67 await protocol.ReadMessageEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +010068
69 var result = _compareLogic.Compare(expected, actualMessage);
70 Assert.IsTrue(result.AreEqual, result.DifferencesString);
71 }
72 }
73 catch (Exception e)
74 {
75 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
76 }
77 }
78
Jens Geyerd6fc7912025-11-19 22:04:39 +010079 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +010080 [DataRow(typeof(TBinaryProtocol))]
81 [DataRow(typeof(TCompactProtocol))]
82 [DataRow(typeof(TJsonProtocol))]
Jens Geyeraa0c8b32019-01-28 23:27:45 +010083 public async Task WriteReadStruct_Test(Type protocolType)
84 {
85 var expected = new TStruct(nameof(TStruct));
86
Jens Geyerd6fc7912025-11-19 22:04:39 +010087 await Assert.ThrowsAsync<Exception>(async () =>
Jens Geyeraa0c8b32019-01-28 23:27:45 +010088 {
Jens Geyerd6fc7912025-11-19 22:04:39 +010089 try
Jens Geyeraa0c8b32019-01-28 23:27:45 +010090 {
Jens Geyerd6fc7912025-11-19 22:04:39 +010091 var tuple = GetProtocolInstance(protocolType);
92 using (var stream = tuple.Stream)
93 {
94 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +010095
Jens Geyerd6fc7912025-11-19 22:04:39 +010096 await protocol.WriteStructBeginAsync(expected, default);
97 await protocol.WriteStructEndAsync(default);
98 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +010099
Jens Geyerd6fc7912025-11-19 22:04:39 +0100100 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100101
Jens Geyerd6fc7912025-11-19 22:04:39 +0100102 var actual = await protocol.ReadStructBeginAsync(default);
103 await protocol.ReadStructEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100104
Jens Geyerd6fc7912025-11-19 22:04:39 +0100105 var result = _compareLogic.Compare(expected, actual);
106 Assert.IsTrue(result.AreEqual, result.DifferencesString);
107 }
108
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100109 }
Jens Geyerd6fc7912025-11-19 22:04:39 +0100110 catch (Exception e)
111 {
112 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
113 }
114 });
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100115 }
116
Jens Geyerd6fc7912025-11-19 22:04:39 +0100117 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100118 [DataRow(typeof(TBinaryProtocol))]
119 [DataRow(typeof(TCompactProtocol))]
120 [DataRow(typeof(TJsonProtocol))]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100121 public async Task WriteReadField_Test(Type protocolType)
122 {
123 var expected = new TField(nameof(TField), TType.String, 1);
124
Jens Geyerd6fc7912025-11-19 22:04:39 +0100125 await Assert.ThrowsAsync<Exception>(async() =>
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100126 {
Jens Geyerd6fc7912025-11-19 22:04:39 +0100127 try
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100128 {
Jens Geyerd6fc7912025-11-19 22:04:39 +0100129 var tuple = GetProtocolInstance(protocolType);
130 using (var stream = tuple.Stream)
131 {
132 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100133
Jens Geyerd6fc7912025-11-19 22:04:39 +0100134 await protocol.WriteFieldBeginAsync(expected, default);
135 await protocol.WriteFieldEndAsync(default);
136 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100137
Jens Geyerd6fc7912025-11-19 22:04:39 +0100138 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100139
Jens Geyerd6fc7912025-11-19 22:04:39 +0100140 var actual = await protocol.ReadFieldBeginAsync(default);
141 await protocol.ReadFieldEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100142
Jens Geyerd6fc7912025-11-19 22:04:39 +0100143 var result = _compareLogic.Compare(expected, actual);
144 Assert.IsTrue(result.AreEqual, result.DifferencesString);
145 }
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100146 }
Jens Geyerd6fc7912025-11-19 22:04:39 +0100147 catch (Exception e)
148 {
149 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
150 }
151 });
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100152 }
153
Jens Geyerd6fc7912025-11-19 22:04:39 +0100154 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100155 [DataRow(typeof(TBinaryProtocol))]
156 [DataRow(typeof(TCompactProtocol))]
157 [DataRow(typeof(TJsonProtocol))]
158 public async Task WriteReadMap_Test(Type protocolType)
159 {
160 var expected = new TMap(TType.String, TType.String, 1);
161
162 try
163 {
164 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100165 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100166 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100167 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100168
Jens Geyerdce22992020-05-16 23:02:27 +0200169 await protocol.WriteMapBeginAsync(expected, default);
170 await protocol.WriteMapEndAsync(default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100171 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100172
Jens Geyer3e6be732025-06-04 22:31:55 +0200173 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100174
Jens Geyerdce22992020-05-16 23:02:27 +0200175 var actual = await protocol.ReadMapBeginAsync(default);
176 await protocol.ReadMapEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100177
178 var result = _compareLogic.Compare(expected, actual);
179 Assert.IsTrue(result.AreEqual, result.DifferencesString);
180 }
181 }
182 catch (Exception e)
183 {
184 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
185 }
186
187 }
188
Jens Geyerd6fc7912025-11-19 22:04:39 +0100189 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100190 [DataRow(typeof(TBinaryProtocol))]
191 [DataRow(typeof(TCompactProtocol))]
192 [DataRow(typeof(TJsonProtocol))]
193 public async Task WriteReadList_Test(Type protocolType)
194 {
195 var expected = new TList(TType.String, 1);
196
197 try
198 {
199 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100200 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100201 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100202 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100203
Jens Geyerdce22992020-05-16 23:02:27 +0200204 await protocol.WriteListBeginAsync(expected, default);
205 await protocol.WriteListEndAsync(default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100206 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100207
Jens Geyer3e6be732025-06-04 22:31:55 +0200208 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100209
Jens Geyerdce22992020-05-16 23:02:27 +0200210 var actual = await protocol.ReadListBeginAsync(default);
211 await protocol.ReadListEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100212
213 var result = _compareLogic.Compare(expected, actual);
214 Assert.IsTrue(result.AreEqual, result.DifferencesString);
215 }
216 }
217 catch (Exception e)
218 {
219 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
220 }
221 }
222
Jens Geyerd6fc7912025-11-19 22:04:39 +0100223 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100224 [DataRow(typeof(TBinaryProtocol))]
225 [DataRow(typeof(TCompactProtocol))]
226 [DataRow(typeof(TJsonProtocol))]
227 public async Task WriteReadSet_Test(Type protocolType)
228 {
229 var expected = new TSet(TType.String, 1);
230
231 try
232 {
233 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100234 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100235 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100236 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100237
Jens Geyerdce22992020-05-16 23:02:27 +0200238 await protocol.WriteSetBeginAsync(expected, default);
239 await protocol.WriteSetEndAsync(default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100240 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100241
Jens Geyer3e6be732025-06-04 22:31:55 +0200242 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100243
Jens Geyerdce22992020-05-16 23:02:27 +0200244 var actual = await protocol.ReadSetBeginAsync(default);
245 await protocol.ReadSetEndAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100246
247 var result = _compareLogic.Compare(expected, actual);
248 Assert.IsTrue(result.AreEqual, result.DifferencesString);
249 }
250 }
251 catch (Exception e)
252 {
253 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
254 }
255 }
256
Jens Geyerd6fc7912025-11-19 22:04:39 +0100257 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100258 [DataRow(typeof(TBinaryProtocol))]
259 [DataRow(typeof(TCompactProtocol))]
260 [DataRow(typeof(TJsonProtocol))]
261 public async Task WriteReadBool_Test(Type protocolType)
262 {
263 var expected = true;
264
265 try
266 {
267 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100268 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100269 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100270 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100271
Jens Geyerdce22992020-05-16 23:02:27 +0200272 await protocol.WriteBoolAsync(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100273 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100274
Jens Geyer3e6be732025-06-04 22:31:55 +0200275 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100276
Jens Geyerdce22992020-05-16 23:02:27 +0200277 var actual = await protocol.ReadBoolAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100278
279 var result = _compareLogic.Compare(expected, actual);
280 Assert.IsTrue(result.AreEqual, result.DifferencesString);
281 }
282 }
283 catch (Exception e)
284 {
285 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
286 }
287 }
288
Jens Geyerd6fc7912025-11-19 22:04:39 +0100289 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100290 [DataRow(typeof(TBinaryProtocol))]
291 [DataRow(typeof(TCompactProtocol))]
292 [DataRow(typeof(TJsonProtocol))]
293 public async Task WriteReadByte_Test(Type protocolType)
294 {
295 var expected = sbyte.MaxValue;
296
297 try
298 {
299 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100300 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100301 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100302 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100303
Jens Geyerdce22992020-05-16 23:02:27 +0200304 await protocol.WriteByteAsync(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100305 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100306
Jens Geyer3e6be732025-06-04 22:31:55 +0200307 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100308
Jens Geyerdce22992020-05-16 23:02:27 +0200309 var actual = await protocol.ReadByteAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100310
311 var result = _compareLogic.Compare(expected, actual);
312 Assert.IsTrue(result.AreEqual, result.DifferencesString);
313 }
314 }
315 catch (Exception e)
316 {
317 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
318 }
319 }
320
Jens Geyerd6fc7912025-11-19 22:04:39 +0100321 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100322 [DataRow(typeof(TBinaryProtocol))]
323 [DataRow(typeof(TCompactProtocol))]
324 [DataRow(typeof(TJsonProtocol))]
325 public async Task WriteReadI16_Test(Type protocolType)
326 {
327 var expected = short.MaxValue;
328
329 try
330 {
331 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100332 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100333 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100334 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100335
Jens Geyerdce22992020-05-16 23:02:27 +0200336 await protocol.WriteI16Async(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100337 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100338
Jens Geyer3e6be732025-06-04 22:31:55 +0200339 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100340
Jens Geyerdce22992020-05-16 23:02:27 +0200341 var actual = await protocol.ReadI16Async(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100342
343 var result = _compareLogic.Compare(expected, actual);
344 Assert.IsTrue(result.AreEqual, result.DifferencesString);
345 }
346 }
347 catch (Exception e)
348 {
349 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
350 }
351 }
352
Jens Geyerd6fc7912025-11-19 22:04:39 +0100353 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100354 [DataRow(typeof(TBinaryProtocol))]
355 [DataRow(typeof(TCompactProtocol))]
356 [DataRow(typeof(TJsonProtocol))]
357 public async Task WriteReadI32_Test(Type protocolType)
358 {
359 var expected = int.MaxValue;
360
361 try
362 {
363 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100364 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100365 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100366 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100367
Jens Geyerdce22992020-05-16 23:02:27 +0200368 await protocol.WriteI32Async(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100369 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100370
Jens Geyer3e6be732025-06-04 22:31:55 +0200371 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100372
Jens Geyerdce22992020-05-16 23:02:27 +0200373 var actual = await protocol.ReadI32Async(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100374
375 var result = _compareLogic.Compare(expected, actual);
376 Assert.IsTrue(result.AreEqual, result.DifferencesString);
377 }
378 }
379 catch (Exception e)
380 {
381 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
382 }
383 }
384
Jens Geyerd6fc7912025-11-19 22:04:39 +0100385 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100386 [DataRow(typeof(TBinaryProtocol))]
387 [DataRow(typeof(TCompactProtocol))]
388 [DataRow(typeof(TJsonProtocol))]
389 public async Task WriteReadI64_Test(Type protocolType)
390 {
391 var expected = long.MaxValue;
392
393 try
394 {
395 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100396 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100397 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100398 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100399
Jens Geyerdce22992020-05-16 23:02:27 +0200400 await protocol.WriteI64Async(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100401 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100402
Jens Geyer3e6be732025-06-04 22:31:55 +0200403 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100404
Jens Geyerdce22992020-05-16 23:02:27 +0200405 var actual = await protocol.ReadI64Async(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100406
407 var result = _compareLogic.Compare(expected, actual);
408 Assert.IsTrue(result.AreEqual, result.DifferencesString);
409 }
410 }
411 catch (Exception e)
412 {
413 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
414 }
415 }
416
Jens Geyerd6fc7912025-11-19 22:04:39 +0100417 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100418 [DataRow(typeof(TBinaryProtocol))]
419 [DataRow(typeof(TCompactProtocol))]
420 [DataRow(typeof(TJsonProtocol))]
421 public async Task WriteReadDouble_Test(Type protocolType)
422 {
423 var expected = double.MaxValue;
424
425 try
426 {
427 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100428 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100429 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100430 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100431
Jens Geyerdce22992020-05-16 23:02:27 +0200432 await protocol.WriteDoubleAsync(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100433 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100434
Jens Geyer3e6be732025-06-04 22:31:55 +0200435 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100436
Jens Geyerdce22992020-05-16 23:02:27 +0200437 var actual = await protocol.ReadDoubleAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100438
439 var result = _compareLogic.Compare(expected, actual);
440 Assert.IsTrue(result.AreEqual, result.DifferencesString);
441 }
442 }
443 catch (Exception e)
444 {
445 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
446 }
447 }
448
Jens Geyerd6fc7912025-11-19 22:04:39 +0100449 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100450 [DataRow(typeof(TBinaryProtocol))]
451 [DataRow(typeof(TCompactProtocol))]
452 [DataRow(typeof(TJsonProtocol))]
Jens Geyer3e6be732025-06-04 22:31:55 +0200453 public async Task WriteReadUuid_Test(Type protocolType)
454 {
455 var expected = new Guid("{00112233-4455-6677-8899-aabbccddeeff}");
456
457 try
458 {
459 var tuple = GetProtocolInstance(protocolType);
460 using (var stream = tuple.Stream)
461 {
462 var protocol = tuple.Protocol;
463
464 await protocol.WriteUuidAsync(expected, default);
465 await tuple.Transport.FlushAsync(default);
466
467 stream.Seek(0, SeekOrigin.Begin);
468
469 var actual = await protocol.ReadUuidAsync(default);
470
471 var result = _compareLogic.Compare(expected, actual);
472 Assert.IsTrue(result.AreEqual, result.DifferencesString);
473 }
474 }
475 catch (Exception e)
476 {
477 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
478 }
479 }
480
Jens Geyerd6fc7912025-11-19 22:04:39 +0100481 [TestMethod]
Jens Geyer3e6be732025-06-04 22:31:55 +0200482 [DataRow(typeof(TBinaryProtocol))]
483 [DataRow(typeof(TCompactProtocol))]
484 [DataRow(typeof(TJsonProtocol))]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100485 public async Task WriteReadString_Test(Type protocolType)
486 {
487 var expected = nameof(String);
488
489 try
490 {
491 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100492 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100493 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100494 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100495
Jens Geyerdce22992020-05-16 23:02:27 +0200496 await protocol.WriteStringAsync(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100497 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100498
Jens Geyer3e6be732025-06-04 22:31:55 +0200499 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100500
Jens Geyerdce22992020-05-16 23:02:27 +0200501 var actual = await protocol.ReadStringAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100502
503 var result = _compareLogic.Compare(expected, actual);
504 Assert.IsTrue(result.AreEqual, result.DifferencesString);
505 }
506 }
507 catch (Exception e)
508 {
509 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
510 }
511 }
512
Jens Geyerd6fc7912025-11-19 22:04:39 +0100513 [TestMethod]
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100514 [DataRow(typeof(TBinaryProtocol))]
515 [DataRow(typeof(TCompactProtocol))]
516 [DataRow(typeof(TJsonProtocol))]
517 public async Task WriteReadBinary_Test(Type protocolType)
518 {
519 var expected = Encoding.UTF8.GetBytes(nameof(String));
520
521 try
522 {
523 var tuple = GetProtocolInstance(protocolType);
Jens Geyer7eec2272025-02-12 00:36:44 +0100524 using (var stream = tuple.Stream)
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100525 {
Jens Geyer7eec2272025-02-12 00:36:44 +0100526 var protocol = tuple.Protocol;
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100527
Jens Geyerdce22992020-05-16 23:02:27 +0200528 await protocol.WriteBinaryAsync(expected, default);
Jens Geyer7eec2272025-02-12 00:36:44 +0100529 await tuple.Transport.FlushAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100530
Jens Geyer3e6be732025-06-04 22:31:55 +0200531 stream.Seek(0, SeekOrigin.Begin);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100532
Jens Geyerdce22992020-05-16 23:02:27 +0200533 var actual = await protocol.ReadBinaryAsync(default);
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100534
535 var result = _compareLogic.Compare(expected, actual);
536 Assert.IsTrue(result.AreEqual, result.DifferencesString);
537 }
538 }
539 catch (Exception e)
540 {
541 throw new Exception($"Exception during testing of protocol: {protocolType.FullName}", e);
542 }
543 }
Jens Geyeraa0c8b32019-01-28 23:27:45 +0100544 }
545}