-
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathMessageHeaderUnitTest.cs
139 lines (137 loc) · 5.59 KB
/
MessageHeaderUnitTest.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using UAOOI.Networking.SemanticData.MessageHandling;
using System.IO;
using System.Linq;
using UAOOI.Configuration.Networking.Serialization;
namespace UAOOI.Networking.SemanticData.UnitTest
{
[TestClass]
public class MessageHeaderUnitTest
{
[TestMethod]
[TestCategory("DataManagement_MessageHeaderUnitTest")]
public void ProducerMessageHeaderTestMethod1()
{
byte[] _output = null;
using (MemoryStream _outputStream = new MemoryStream())
using (HeaderBinaryWriter _writer = new HeaderBinaryWriter(_outputStream))
{
MessageHeader _header = MessageHeader.GetProducerMessageHeader
(_writer, FieldEncodingEnum.VariantFieldEncoding, MessageLengthFieldTypeEnum.TwoBytes, MessageTypeEnum.DataDeltaFrame, new ConfigurationVersionDataType() { MajorVersion = 7, MinorVersion = 8 });
Assert.IsNotNull(_header);
//Default values
Assert.AreEqual<ushort>(1, _header.EncodingFlags);
Assert.AreEqual<MessageTypeEnum>(MessageTypeEnum.DataDeltaFrame, _header.MessageType);
Assert.AreEqual<ushort>(0, _header.MessageSequenceNumber);
Assert.AreEqual<ushort>(7, _header.ConfigurationVersion.MajorVersion);
Assert.AreEqual<ushort>(8, _header.ConfigurationVersion.MinorVersion);
SetupProducerHeaderFields(_header);
_header.Synchronize();
_writer.Flush();
_output = _outputStream.ToArray();
}
Assert.AreEqual<int>(18, _output.Length);
byte[] _expected = new byte[] {
0x02, //MessageType
0x01, //EncodingFlags
0x12, 0x00, // MessageLength
0x08, 0x00, //MessageSequenceNumber
0x06, 0x07, //ConfigurationVersion
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //TimeStamp
0x10, 0x00 // FieldCount
};
CollectionAssert.AreEqual(_expected, _output);
}
[TestMethod]
[TestCategory("DataManagement_MessageHeaderUnitTest")]
public void ProducerMessageLengthTestMethod1()
{
string m_Date = System.DateTime.Today.ToShortDateString();
byte[] _output = null;
using (MemoryStream _outputStream = new MemoryStream())
using (HeaderBinaryWriter _writer = new HeaderBinaryWriter(_outputStream))
{
MessageHeader _header = MessageHeader.GetProducerMessageHeader
(_writer, FieldEncodingEnum.VariantFieldEncoding, MessageLengthFieldTypeEnum.TwoBytes, MessageTypeEnum.DataDeltaFrame, new ConfigurationVersionDataType() { MajorVersion = 7, MinorVersion = 8 });
Assert.IsNotNull(_header);
SetupProducerHeaderFields(_header);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_writer.Write(UInt32.MaxValue);
_header.Synchronize();
_writer.Flush();
_output = _outputStream.ToArray();
}
Assert.AreEqual<int>(58, _output.Length);
byte[] _expected = new byte[] {
0x02, //MessageType
0x01, //EncodingFlags
0x3A, 0x00, // MessageLength
0x08, 0x00, // MessageSequenceNumber
0x06, 0x07, // ConfigurationVersion
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //TimeStamp
0x10, 0x00, // FieldCount
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF
};
CollectionAssert.AreEqual(_expected, _output);
}
[TestMethod]
[TestCategory("DataManagement_MessageHeaderUnitTest")]
public void ConsumerMessageHeaderTestMethod()
{
HeaderReaderTest _reader = new HeaderReaderTest();
MessageHeader _header = MessageHeader.GetConsumerMessageHeader(_reader);
Assert.IsNotNull(_header);
_header.Synchronize();
Assert.AreEqual<ushort>(0, (byte)_header.MessageType);
Assert.AreEqual<ushort>(1, _header.EncodingFlags);
Assert.AreEqual<UInt32>(2, _header.MessageLength);
Assert.AreEqual<ushort>(4, _header.MessageSequenceNumber);
Assert.AreEqual<ushort>(6, _header.ConfigurationVersion.MajorVersion);
Assert.AreEqual<ushort>(7, _header.ConfigurationVersion.MinorVersion);
//Assert.AreEqual<ushort>(16, _header.FieldCount);
//Assert.AreEqual<DateTime>(CommonDefinitions.TestMinimalDateTime, _header.TimeStamp);
Assert.AreEqual<long>(8, _reader.m_Position);
Assert.AreEqual<FieldEncodingEnum>(FieldEncodingEnum.VariantFieldEncoding, _header.FieldsEncoding);
}
#region instrumentation
private class HeaderBinaryWriter : BinaryWriter, IBinaryHeaderEncoder
{
public HeaderBinaryWriter(Stream output) : base(output) { }
public void Write(DateTime value)
{
Write(Encoding.CommonDefinitions.GetUADataTimeTicks(value));
}
public void Write(Guid value)
{
Write(value.ToByteArray());
}
}
private static void SetupProducerHeaderFields(MessageHeader _header)
{
_header.MessageSequenceNumber = 8;
_header.ConfigurationVersion = new ConfigurationVersionDataType() { MajorVersion = 6, MinorVersion = 7 };
_header.TimeStamp = CommonDefinitions.TestMinimalDateTime;
_header.FieldCount = 16;
}
#endregion
}
}