@@ -312,6 +312,50 @@ public void ReadCaseInsensitivePropertiesByDefault()
312
312
} , streamItemMessage . Item ) ;
313
313
}
314
314
315
+ public static IDictionary < string , MessageSizeTestData > MessageSizeData => new [ ]
316
+ {
317
+ new MessageSizeTestData ( "InvocationMessage_WithoutInvocationId" , new InvocationMessage ( "Target" , new object [ ] { 1 } ) , 45 ) ,
318
+ new MessageSizeTestData ( "InvocationMessage_WithInvocationId" , new InvocationMessage ( "1" , "Target" , new object [ ] { 1 } ) , 64 ) ,
319
+ new MessageSizeTestData ( "InvocationMessage_WithInvocationIdAndStreamId" , new InvocationMessage ( "1" , "Target" , new object [ ] { 1 } , new string [ ] { "2" } ) , 82 ) ,
320
+
321
+ new MessageSizeTestData ( "CloseMessage_Empty" , CloseMessage . Empty , 11 ) ,
322
+ new MessageSizeTestData ( "CloseMessage_WithError" , new CloseMessage ( "error" ) , 27 ) ,
323
+
324
+ new MessageSizeTestData ( "StreamItemMessage_WithNullItem" , new StreamItemMessage ( "1" , null ) , 42 ) ,
325
+ new MessageSizeTestData ( "StreamItemMessage_WithItem" , new StreamItemMessage ( "1" , 1 ) , 39 ) ,
326
+
327
+ new MessageSizeTestData ( "CompletionMessage_Empty" , CompletionMessage . Empty ( "1" ) , 30 ) ,
328
+ new MessageSizeTestData ( "CompletionMessage_WithResult" , CompletionMessage . WithResult ( "1" , 1 ) , 41 ) ,
329
+ new MessageSizeTestData ( "CompletionMessage_WithError" , CompletionMessage . WithError ( "1" , "error" ) , 46 ) ,
330
+
331
+ new MessageSizeTestData ( "StreamInvocationMessage" , new StreamInvocationMessage ( "1" , "target" , Array . Empty < object > ( ) ) , 63 ) ,
332
+ new MessageSizeTestData ( "StreamInvocationMessage_WithStreamId" , new StreamInvocationMessage ( "1" , "target" , Array . Empty < object > ( ) , new [ ] { "2" } ) , 81 ) ,
333
+
334
+ new MessageSizeTestData ( "CancelInvocationMessage" , new CancelInvocationMessage ( "1" ) , 30 ) ,
335
+
336
+ new MessageSizeTestData ( "PingMessage" , PingMessage . Instance , 11 ) ,
337
+ } . ToDictionary ( t => t . Name ) ;
338
+
339
+ public static IEnumerable < object [ ] > MessageSizeDataNames => MessageSizeData . Keys . Select ( name => new object [ ] { name } ) ;
340
+
341
+ [ Theory ]
342
+ [ MemberData ( nameof ( MessageSizeDataNames ) ) ]
343
+ public void VerifyMessageSize ( string testDataName )
344
+ {
345
+ var testData = MessageSizeData [ testDataName ] ;
346
+
347
+ var writer = MemoryBufferWriter . Get ( ) ;
348
+ try
349
+ {
350
+ JsonHubProtocol . WriteMessage ( testData . Message , writer ) ;
351
+ Assert . Equal ( testData . Size , writer . Length ) ;
352
+ }
353
+ finally
354
+ {
355
+ MemoryBufferWriter . Return ( writer ) ;
356
+ }
357
+ }
358
+
315
359
public static string Frame ( string input )
316
360
{
317
361
var data = Encoding . UTF8 . GetBytes ( input ) ;
@@ -345,5 +389,21 @@ public JsonProtocolTestData(string name, HubMessage message, bool useCamelCase,
345
389
346
390
public override string ToString ( ) => Name ;
347
391
}
392
+
393
+ public class MessageSizeTestData
394
+ {
395
+ public string Name { get ; }
396
+ public HubMessage Message { get ; }
397
+ public int Size { get ; }
398
+
399
+ public MessageSizeTestData ( string name , HubMessage message , int size )
400
+ {
401
+ Name = name ;
402
+ Message = message ;
403
+ Size = size ;
404
+ }
405
+
406
+ public override string ToString ( ) => Name ;
407
+ }
348
408
}
349
409
}
0 commit comments