Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
OmronFinsProtocolTests.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.PLC.Abstractions.Devices;
2using Dreamine.PLC.Omron.Fins.Devices;
3using Dreamine.PLC.Omron.Fins.Options;
4using Dreamine.PLC.Omron.Fins.Protocol;
5
7
16public sealed class OmronFinsProtocolTests
17{
26 [Fact]
28 {
29 var dmWord = OmronFinsMemoryAreaMapper.Map(new PlcAddress(PlcDeviceType.D, 0), bitAccess: false);
30 var dmBit = OmronFinsMemoryAreaMapper.Map(new PlcAddress(PlcDeviceType.D, 0), bitAccess: true);
31
32 Assert.Equal(OmronFinsMemoryAreaCode.DmWord, dmWord);
33 Assert.Equal(OmronFinsMemoryAreaCode.DmBit, dmBit);
34 Assert.Equal(PlcDeviceType.D, OmronFinsMemoryAreaMapper.ToDeviceType(dmWord));
35 Assert.True(OmronFinsMemoryAreaMapper.IsBitArea(dmBit));
36 }
37
46 [Fact]
48 {
49 var options = new OmronFinsConnectionOptions { DestinationNode = 2, SourceNode = 1 };
50 var frame = new OmronFinsFrameBuilder()
51 .BuildMemoryAreaRead(options, new PlcAddress(PlcDeviceType.D, 100), 2, bitAccess: false);
52
53 Assert.Equal(0x80, frame[0]);
54 Assert.Equal(2, frame[4]);
55 Assert.Equal(1, frame[7]);
56 Assert.Equal((byte)((ushort)OmronFinsCommand.MemoryAreaRead >> 8), frame[10]);
57 Assert.Equal(OmronFinsMemoryAreaCode.DmWord, frame[12]);
58 }
59
68 [Fact]
70 {
71 var options = new OmronFinsConnectionOptions();
72 var builder = new OmronFinsFrameBuilder();
73
74 var ex = Assert.Throws<ArgumentOutOfRangeException>(() =>
75 builder.BuildMemoryAreaRead(
76 options,
77 new PlcAddress(PlcDeviceType.D, 65536),
78 1,
79 bitAccess: false));
80
81 Assert.Contains("between 0 and 65535", ex.Message);
82 }
83
92 [Fact]
94 {
95 var options = new OmronFinsConnectionOptions();
96 var builder = new OmronFinsFrameBuilder();
97
98 var sids = Enumerable.Range(0, 64)
99 .AsParallel()
100 .Select(_ => builder.BuildMemoryAreaRead(options, new PlcAddress(PlcDeviceType.D, 0), 1, false)[9])
101 .ToArray();
102
103 Assert.Equal(64, sids.Distinct().Count());
104 }
105
114 [Fact]
116 {
117 var parser = new OmronFinsResponseParser();
118 var frame = new byte[18];
119 frame[14] = 0x12;
120 frame[15] = 0x34;
121 frame[16] = 0x00;
122 frame[17] = 0x01;
123
124 var payload = parser.ExtractPayload(frame).Value!;
125
126 Assert.Equal(new short[] { 0x1234, 1 }, parser.ParseWords(payload, 2).Value);
127 Assert.Equal(new[] { true, true }, parser.ParseBits(new byte[] { 1, 2 }, 2).Value);
128 }
129
138 [Fact]
140 {
141 var frame = new byte[] { 1, 2, 3 };
142 var packet = OmronFinsTcpPacket.Wrap(frame);
143
144 Assert.Equal((byte)'F', packet[0]);
145 Assert.Equal(frame, OmronFinsTcpPacket.Extract(packet));
146 Assert.Throws<InvalidOperationException>(() => OmronFinsTcpPacket.Extract(new byte[] { 1, 2 }));
147 }
148}