|
- using DryIoc;
- using Microsoft.EntityFrameworkCore;
- using ModbusDemo.Device;
- using ModbusDemo.Model;
- using Moq;
- using Prism.Ioc;
- using System;
- using System.Collections.Generic;
- using System.IO.Ports;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace ModbusTest
- {
- public class ModbusRTUTest
- {
- //设计缺陷,应该使用适配器模式重写SerialPort
- private SerialPort _serialport;
- private Mock<ModbusDbContext> _mockDbContext;
- private ModbusRTU _modbusRtu;
- [SetUp]
- public void Setup()
- {
- _serialport = new SerialPort();
- _serialport.PortName = "COM3";
- _serialport.DataBits = 8;
- _serialport.BaudRate = 9600;
- _serialport.Parity = Parity.Even;
- _serialport.StopBits = StopBits.One;
- _serialport.ReadTimeout = 500;
- _serialport.WriteTimeout = 500;
- _serialport.Open();
- _mockDbContext = new Mock<ModbusDbContext>();
- _modbusRtu = new ModbusRTU(_serialport, _mockDbContext.Object);
- }
- [TearDown]
- public void TearDown()
- {
- // 确保在测试结束后释放资源
- _serialport.Dispose();
- }
- /// <summary>
- /// 测试线圈读取
- /// </summary>
- [Test]
- public void ReadCoil1()
- {
-
- var result = _modbusRtu.ReadCoil(1, 300, 5);
- // 创建包含5个true的预期数组
- var expected = new bool[5];
- Array.Fill(expected, false);
- CollectionAssert.AreEqual(expected, result);
- }
-
- [Test]
- public void ReadCoil2()
- {
- var result = _modbusRtu.ReadCoil(1, 305, 5);
- // 创建包含5个flase的预期数组
- var expected = new bool[5];
- Array.Fill(expected, true);
- CollectionAssert.AreEqual(expected, result);
-
- }
-
-
- [Test]
- public void WriteCoil1()
- {
- var data = new bool[5];
- Array.Fill(data, true);
- _modbusRtu.WriteCoil(1, 310, data);
- // 创建包含5个true的预期数组
- var expected = _modbusRtu.ReadCoil(1, 310, 5);
- CollectionAssert.AreEqual(data, expected);
-
- }
-
-
-
- [Test]
- public void WriteCoil2()
- {
- var data = new bool[5];
- Array.Fill(data, false);
- _modbusRtu.WriteCoil(1, 315, data);
- // 创建包含5个flase的预期数组
- var expected = _modbusRtu.ReadCoil(1, 315, 5);
- CollectionAssert.AreEqual(data, expected);
-
- }
-
-
- [Test]
- public void ReadRegister1()
- {
- ushort[] data = new ushort[5];
- Array.Fill(data, (ushort)0);
- var expected = _modbusRtu.ReadRegisters(1, 300, 5);
- CollectionAssert.AreEqual(data, expected);
- }
-
-
-
- [Test]
- public void ReadRegister2()
- {
- ushort[] data = new ushort[5];
- Array.Fill(data, (ushort)1);
-
- var expected = _modbusRtu.ReadRegisters(1, 305, 5);
- CollectionAssert.AreEqual(data, expected);
- }
-
-
-
- [Test]
- public void WriteRegister1()
- {
- ushort[] data = new ushort[5];
- Array.Fill(data, (ushort)1);
-
- _modbusRtu.WriteRegisters(1, 310, data);
- var expected = _modbusRtu.ReadRegisters(1, 310, 5);
- CollectionAssert.AreEqual(data, expected);
- }
-
-
- [Test]
- public void WriteRegister2()
- {
- ushort[] data = new ushort[5];
- Array.Fill(data, (ushort)2);
-
- _modbusRtu.WriteRegisters(1, 315, data);
- var expected = _modbusRtu.ReadRegisters(1, 315, 5);
- CollectionAssert.AreEqual(data, expected);
- }
- }
- }
|