Skip to content

Commit 3a9ba8e

Browse files
committed
test: 更新单元测试
1 parent bedca79 commit 3a9ba8e

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

test/UnitTest/Services/TcpSocketFactoryTest.cs

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,40 @@ public async Task DelimiterDataPackageHandler_Ok()
450450
Assert.NotNull(ex);
451451
}
452452

453+
[Fact]
454+
public async Task TryConvertTo_Ok()
455+
{
456+
var port = 8886;
457+
var server = StartTcpServer(port, MockSplitPackageAsync);
458+
var client = CreateClient();
459+
var tcs = new TaskCompletionSource();
460+
MockEntity? entity = null;
461+
462+
// 设置数据适配器
463+
var adapter = new MockEntityDataPackageAdapter
464+
{
465+
DataPackageHandler = new FixLengthDataPackageHandler(7),
466+
};
467+
client.SetDataPackageAdapter<MockEntity>(adapter, t =>
468+
{
469+
entity = t;
470+
tcs.SetResult();
471+
return Task.CompletedTask;
472+
});
473+
474+
// 连接 TCP Server
475+
var connect = await client.ConnectAsync("localhost", port);
476+
477+
// 发送数据
478+
var data = new ReadOnlyMemory<byte>([1, 2, 3, 4, 5]);
479+
await client.SendAsync(data);
480+
await tcs.Task;
481+
482+
Assert.NotNull(entity);
483+
Assert.Equal(entity.Header, [1, 2, 3, 4, 5]);
484+
Assert.Equal(entity.Body, [3, 4]);
485+
}
486+
453487
private static TcpListener StartTcpServer(int port, Func<TcpClient, Task> handler)
454488
{
455489
var server = new TcpListener(IPAddress.Loopback, port);
@@ -653,4 +687,24 @@ public async ValueTask<bool> SendAsync(ReadOnlyMemory<byte> data, CancellationTo
653687
return false;
654688
}
655689
}
690+
691+
class MockEntityDataPackageAdapter : DataPackageAdapter
692+
{
693+
public override bool TryConvertTo(ReadOnlyMemory<byte> data, [NotNullWhen(true)] out object? entity)
694+
{
695+
entity = new MockEntity
696+
{
697+
Header = data[..5].ToArray(),
698+
Body = data[5..].ToArray()
699+
};
700+
return true;
701+
}
702+
}
703+
704+
class MockEntity
705+
{
706+
public byte[]? Header { get; set; }
707+
708+
public byte[]? Body { get; set; }
709+
}
656710
}

0 commit comments

Comments
 (0)