Dreamine.FullKit.Tests
1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
FrameCodecTests.cs
이 파일의 문서화 페이지로 가기
1
using
System.Buffers.Binary;
2
using
System.Text;
3
using
Dreamine.Communication.Core.Framing;
4
5
namespace
Dreamine.FullKit.Tests.Communication
;
6
15
public
sealed
class
FrameCodecTests
16
{
33
[Fact]
34
public
async Task
LengthPrefixedCodec_RoundTripsPayload
()
35
{
36
var codec =
new
LengthPrefixedMessageFrameCodec();
37
var payload = Encoding.UTF8.GetBytes(
"hello frame"
);
38
using
var stream =
new
MemoryStream();
39
40
await codec.WriteFrameAsync(stream, payload);
41
stream.Position = 0;
42
43
var result = await codec.ReadFrameAsync(stream);
44
45
Assert.Equal(payload, result);
46
}
47
64
[Fact]
65
public
async Task
LengthPrefixedCodec_ReturnsNullWhenStreamEndsBeforePayloadCompletes
()
66
{
67
var header =
new
byte
[4];
68
BinaryPrimitives.WriteInt32BigEndian(header, 5);
69
using
var stream =
new
MemoryStream(header.Concat(
new
byte
[] { 1, 2 }).ToArray());
70
71
var result = await
new
LengthPrefixedMessageFrameCodec().ReadFrameAsync(stream);
72
73
Assert.Null(result);
74
}
75
92
[Fact]
93
public
async Task
LengthPrefixedCodec_RejectsFramesLargerThanLimit
()
94
{
95
using
var stream =
new
MemoryStream();
96
var codec =
new
LengthPrefixedMessageFrameCodec(maxFrameLength: 2);
97
98
await Assert.ThrowsAsync<InvalidDataException>(
99
() => codec.WriteFrameAsync(stream,
new
byte
[] { 1, 2, 3 }));
100
}
101
118
[Fact]
119
public
async Task
DelimiterCodec_RoundTripsPayloadWithoutDelimiter
()
120
{
121
var codec =
new
DelimiterMessageFrameCodec(
"|"
, Encoding.UTF8, maxFrameLength: 32);
122
var payload = Encoding.UTF8.GetBytes(
"one message"
);
123
using
var stream =
new
MemoryStream();
124
125
await codec.WriteFrameAsync(stream, payload);
126
stream.Position = 0;
127
128
var result = await codec.ReadFrameAsync(stream);
129
130
Assert.Equal(payload, result);
131
}
132
149
[Fact]
150
public
async Task
DelimiterCodec_ReturnsBufferedPayloadWhenStreamEndsWithoutDelimiter
()
151
{
152
using
var stream =
new
MemoryStream(Encoding.UTF8.GetBytes(
"partial"
));
153
154
var result = await
new
DelimiterMessageFrameCodec(
"|"
, Encoding.UTF8, 32)
155
.ReadFrameAsync(stream);
156
157
Assert.Equal(
"partial"
, Encoding.UTF8.GetString(result!));
158
}
159
176
[Fact]
177
public
async Task
DelimiterCodec_PreservesBytesAfterDelimiterForNextFrame
()
178
{
179
using
var stream =
new
MemoryStream(Encoding.UTF8.GetBytes(
"first|second|"
));
180
var codec =
new
DelimiterMessageFrameCodec(
"|"
, Encoding.UTF8, 32);
181
182
var first = await codec.ReadFrameAsync(stream);
183
var second = await codec.ReadFrameAsync(stream);
184
185
Assert.Equal(
"first"
, Encoding.UTF8.GetString(first!));
186
Assert.Equal(
"second"
, Encoding.UTF8.GetString(second!));
187
}
188
205
[Fact]
206
public
async Task
DelimiterCodec_RejectsFramesLargerThanLimit
()
207
{
208
using
var stream =
new
MemoryStream(Encoding.UTF8.GetBytes(
"abcd"
));
209
var codec =
new
DelimiterMessageFrameCodec(
"|"
, Encoding.UTF8, maxFrameLength: 3);
210
211
await Assert.ThrowsAsync<InvalidDataException>(() => codec.ReadFrameAsync(stream));
212
}
213
}
Dreamine.FullKit.Tests.Communication
Definition
CommunicationAbstractionsTests.cs:5
Dreamine.FullKit.Tests.Communication.FrameCodecTests
Definition
FrameCodecTests.cs:16
Dreamine.FullKit.Tests.Communication.FrameCodecTests.DelimiterCodec_PreservesBytesAfterDelimiterForNextFrame
async Task DelimiterCodec_PreservesBytesAfterDelimiterForNextFrame()
Definition
FrameCodecTests.cs:177
Dreamine.FullKit.Tests.Communication.FrameCodecTests.LengthPrefixedCodec_ReturnsNullWhenStreamEndsBeforePayloadCompletes
async Task LengthPrefixedCodec_ReturnsNullWhenStreamEndsBeforePayloadCompletes()
Definition
FrameCodecTests.cs:65
Dreamine.FullKit.Tests.Communication.FrameCodecTests.DelimiterCodec_RejectsFramesLargerThanLimit
async Task DelimiterCodec_RejectsFramesLargerThanLimit()
Definition
FrameCodecTests.cs:206
Dreamine.FullKit.Tests.Communication.FrameCodecTests.DelimiterCodec_RoundTripsPayloadWithoutDelimiter
async Task DelimiterCodec_RoundTripsPayloadWithoutDelimiter()
Definition
FrameCodecTests.cs:119
Dreamine.FullKit.Tests.Communication.FrameCodecTests.DelimiterCodec_ReturnsBufferedPayloadWhenStreamEndsWithoutDelimiter
async Task DelimiterCodec_ReturnsBufferedPayloadWhenStreamEndsWithoutDelimiter()
Definition
FrameCodecTests.cs:150
Dreamine.FullKit.Tests.Communication.FrameCodecTests.LengthPrefixedCodec_RoundTripsPayload
async Task LengthPrefixedCodec_RoundTripsPayload()
Definition
FrameCodecTests.cs:34
Dreamine.FullKit.Tests.Communication.FrameCodecTests.LengthPrefixedCodec_RejectsFramesLargerThanLimit
async Task LengthPrefixedCodec_RejectsFramesLargerThanLimit()
Definition
FrameCodecTests.cs:93
Communication
FrameCodecTests.cs
다음에 의해 생성됨 :
1.17.0