Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
FrameCodecTests.cs
이 파일의 문서화 페이지로 가기
1using System.Buffers.Binary;
2using System.Text;
3using Dreamine.Communication.Core.Framing;
4
6
15public sealed class FrameCodecTests
16{
33 [Fact]
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]
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]
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]
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]
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]
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]
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}