@@ -13,7 +13,7 @@ namespace NUnit.Engine.Communication.Protocols
1313{
1414 public class BinarySerializationProtocolTests
1515 {
16- private BinarySerializationProtocol wireProtocol = new BinarySerializationProtocol ( ) ;
16+ private BinarySerializationProtocol _wireProtocol = new BinarySerializationProtocol ( ) ;
1717
1818 [ Test ]
1919 public void WriteAndReadBytes ( )
@@ -35,83 +35,83 @@ public void WriteAndReadBytes()
3535 Assert . That ( copy , Is . EqualTo ( bytes ) ) ;
3636 }
3737
38- // [Test]
39- // public void DecodeSingleMessage()
40- // {
41- // var originalPackage = new TestPackage("mock-assembly.dll", "notest-assembly.dll");
42- // var originalMessage = new TestEngineMessage(MessageCode.CommandResult, originalPackage.ToXml());
43-
44- // var bytes = wireProtocol .Encode(originalMessage);
45- // Console.WriteLine($"Serialized {bytes.Length} bytes.");
46-
47- // var messages = new List<TestEngineMessage>(wireProtocol .Decode(bytes));
48- // Assert.That(messages.Count, Is.EqualTo(1));
49- // var message = messages[0];
50-
51- // Assert.That(message.Code, Is.EqualTo(MessageCode.CommandResult));
52- // Assert.That(message.Data, Is.EqualTo(originalPackage.ToXml()));
53- // var newPackage = DeserializePackage(message.Data);
54- // ComparePackages(newPackage, originalPackage);
55- // }
56-
57- // [TestCase(1)]
58- // [TestCase(2)]
59- // [TestCase(5)]
60- // public void DecodeSplitMessages(int numMessages)
61- // {
62- // const int SPLIT_SIZE = 1000;
63-
64- // var originalPackage = new TestPackage("mock-assembly.dll", "notest-assembly.dll");
65- // var originalMessage = new TestEngineMessage(MessageCode.CommandResult, originalPackage.ToXml());
66-
67- // var msgBytes = wireProtocol .Encode(originalMessage);
68- // var msgLength = msgBytes.Length;
69- // var allBytes = new byte[msgLength * numMessages];
70- // for (int i = 0; i < numMessages; i++)
71- // Array.Copy(msgBytes, 0, allBytes, i * msgLength, msgLength);
72-
73- // Console.WriteLine($"Serialized {numMessages} messages in {allBytes.Length} bytes.");
74-
75- // var messages = new List<TestEngineMessage>();
76-
77- // for (int index = 0; index < allBytes.Length; index += SPLIT_SIZE)
78- // {
79- // var bytesToSend = Math.Min(allBytes.Length - index, SPLIT_SIZE);
80- // var buffer = new byte[bytesToSend];
81- // Array.Copy(allBytes, index, buffer, 0, bytesToSend);
82- // messages.AddRange(wireProtocol .Decode(buffer));
83- // Console.WriteLine($"Decoded {bytesToSend} bytes, message count is now {messages.Count}");
84- // var expectedCount = (index + bytesToSend) / msgLength;
85- // Assert.That(messages.Count, Is.EqualTo(expectedCount));
86- // }
87-
88- // foreach (TestEngineMessage message in messages)
89- // {
90- // Assert.That(message.Code, Is.EqualTo(MessageCode.CommandResult));
91- // var newPackage = DeserializePackage(message.Data);
92- // ComparePackages(newPackage, originalPackage);
93- // }
94- // }
95-
96- //// [Test]
97- // public void DecodeMultipleMessages()
98- // {
99- // var commands = new string[] { "CMD1", "CMD2", "CMD3", "CMD4", "CMD5", "CMD6" };
100-
101- // var stream = new MemoryStream();
102-
103- // foreach (var command in commands)
104- // {
105- // var buffer = wireProtocol .Encode(new TestEngineMessage(command, null));
106- // stream.Write(buffer, 0, buffer.Length);
107- // }
108-
109- // var received = new List<TestEngineMessage>(wireProtocol .Decode(stream.ToArray()));
110- // Assert.That(received.Count, Is.EqualTo(commands.Length));
111-
112- // for (int i = 0; i < commands.Length; i++)
113- // Assert.That(received[i].CommandName , Is.EqualTo(commands[i]));
114- // }
38+ [ Test ]
39+ public void DecodeSingleMessage ( )
40+ {
41+ var originalPackage = new TestPackage ( new [ ] { "mock-assembly.dll" , "notest-assembly.dll" } ) ;
42+ var originalMessage = new TestEngineMessage ( MessageCode . CommandResult , originalPackage . ToXml ( ) ) ;
43+
44+ var bytes = _wireProtocol . Encode ( originalMessage ) ;
45+ Console . WriteLine ( $ "Serialized { bytes . Length } bytes.") ;
46+
47+ var messages = new List < TestEngineMessage > ( _wireProtocol . Decode ( bytes ) ) ;
48+ Assert . That ( messages . Count , Is . EqualTo ( 1 ) ) ;
49+ var message = messages [ 0 ] ;
50+
51+ Assert . That ( message . Code , Is . EqualTo ( MessageCode . CommandResult ) ) ;
52+ Assert . That ( message . Data , Is . EqualTo ( originalPackage . ToXml ( ) ) ) ;
53+ // var newPackage = DeserializePackage(message.Data);
54+ // ComparePackages(newPackage, originalPackage);
55+ }
56+
57+ [ TestCase ( 1 ) ]
58+ [ TestCase ( 2 ) ]
59+ [ TestCase ( 5 ) ]
60+ public void DecodeSplitMessages ( int numMessages )
61+ {
62+ const int SPLIT_SIZE = 1000 ;
63+
64+ var originalPackage = new TestPackage ( new [ ] { "mock-assembly.dll" , "notest-assembly.dll" } ) ;
65+ var originalMessage = new TestEngineMessage ( MessageCode . CommandResult , originalPackage . ToXml ( ) ) ;
66+
67+ var msgBytes = _wireProtocol . Encode ( originalMessage ) ;
68+ var msgLength = msgBytes . Length ;
69+ var allBytes = new byte [ msgLength * numMessages ] ;
70+ for ( int i = 0 ; i < numMessages ; i ++ )
71+ Array . Copy ( msgBytes , 0 , allBytes , i * msgLength , msgLength ) ;
72+
73+ Console . WriteLine ( $ "Serialized { numMessages } messages in { allBytes . Length } bytes.") ;
74+
75+ var messages = new List < TestEngineMessage > ( ) ;
76+
77+ for ( int index = 0 ; index < allBytes . Length ; index += SPLIT_SIZE )
78+ {
79+ var bytesToSend = Math . Min ( allBytes . Length - index , SPLIT_SIZE ) ;
80+ var buffer = new byte [ bytesToSend ] ;
81+ Array . Copy ( allBytes , index , buffer , 0 , bytesToSend ) ;
82+ messages . AddRange ( _wireProtocol . Decode ( buffer ) ) ;
83+ Console . WriteLine ( $ "Decoded { bytesToSend } bytes, message count is now { messages . Count } ") ;
84+ var expectedCount = ( index + bytesToSend ) / msgLength ;
85+ Assert . That ( messages . Count , Is . EqualTo ( expectedCount ) ) ;
86+ }
87+
88+ foreach ( TestEngineMessage message in messages )
89+ {
90+ Assert . That ( message . Code , Is . EqualTo ( MessageCode . CommandResult ) ) ;
91+ // var newPackage = DeserializePackage(message.Data);
92+ // ComparePackages(newPackage, originalPackage);
93+ }
94+ }
95+
96+ [ Test ]
97+ public void DecodeMultipleMessages ( )
98+ {
99+ var commands = new string [ ] { "CMD1" , "CMD2" , "CMD3" , "CMD4" , "CMD5" , "CMD6" } ;
100+
101+ var stream = new MemoryStream ( ) ;
102+
103+ foreach ( var command in commands )
104+ {
105+ var buffer = _wireProtocol . Encode ( new TestEngineMessage ( command , null ) ) ;
106+ stream . Write ( buffer , 0 , buffer . Length ) ;
107+ }
108+
109+ var received = new List < TestEngineMessage > ( _wireProtocol . Decode ( stream . ToArray ( ) ) ) ;
110+ Assert . That ( received . Count , Is . EqualTo ( commands . Length ) ) ;
111+
112+ for ( int i = 0 ; i < commands . Length ; i ++ )
113+ Assert . That ( received [ i ] . Code , Is . EqualTo ( commands [ i ] ) ) ;
114+ }
115115
116116 }
117117}
0 commit comments