diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 3d36d5c..9c04672 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,134 +1,131 @@
-image: mcr.microsoft.com/dotnet/sdk:8.0
-
-variables:
- TZ: "Europe/Berlin"
- LANG: "de"
-
-stages:
- - build
- - test
- - deploy
-
-
-
-build-debug:
- stage: build
- tags:
- - docker
- - lnx
- - 64bit
- rules:
- - if: $CI_COMMIT_TAG == null
- script:
- - shopt -s globstar
- - mkdir ./artifacts
- - dotnet restore --no-cache --force
- - dotnet build -c Debug --nologo --no-restore --no-incremental
- - mv ./**/*.nupkg ./artifacts/
- - mv ./**/*.snupkg ./artifacts/
- artifacts:
- paths:
- - artifacts/*.nupkg
- - artifacts/*.snupkg
- expire_in: 1 days
-
-test-debug:
- stage: test
- dependencies:
- - build-debug
- tags:
- - docker
- - lnx
- - 64bit
- rules:
- - if: $CI_COMMIT_TAG == null
- coverage: /Branch coverage[\s\S].+%/
- before_script:
- - dotnet tool install dotnet-reportgenerator-globaltool --tool-path /dotnet-tools
- script:
- - dotnet test -c Debug --nologo /p:CoverletOutputFormat=Cobertura
- - /dotnet-tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/coverage.cobertura.xml" "-targetdir:/reports" -reportType:TextSummary
- after_script:
- - cat /reports/Summary.txt
- artifacts:
- when: always
- reports:
- coverage_report:
- coverage_format: cobertura
- path: ./**/coverage.cobertura.xml
-
-deploy-debug:
- stage: deploy
- dependencies:
- - build-debug
- - test-debug
- tags:
- - docker
- - lnx
- - 64bit
- rules:
- - if: $CI_COMMIT_TAG == null
- script:
- - dotnet nuget push -k $BAGET_APIKEY -s https://nuget.am-wd.de/v3/index.json --skip-duplicate artifacts/*.nupkg
-
-
-
-build-release:
- stage: build
- tags:
- - docker
- - lnx
- - amd64
- rules:
- - if: $CI_COMMIT_TAG != null
- script:
- - shopt -s globstar
- - mkdir ./artifacts
- - dotnet restore --no-cache --force
- - dotnet build -c Release --nologo --no-restore --no-incremental
- - mv ./**/*.nupkg ./artifacts/
- - mv ./**/*.snupkg ./artifacts/
- artifacts:
- paths:
- - artifacts/*.nupkg
- - artifacts/*.snupkg
- expire_in: 7 days
-
-test-release:
- stage: test
- dependencies:
- - build-release
- tags:
- - docker
- - lnx
- - amd64
- rules:
- - if: $CI_COMMIT_TAG != null
- coverage: /Branch coverage[\s\S].+%/
- before_script:
- - dotnet tool install dotnet-reportgenerator-globaltool --tool-path /dotnet-tools
- script:
- - dotnet test -c Release --nologo /p:CoverletOutputFormat=Cobertura
- - /dotnet-tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/coverage.cobertura.xml" "-targetdir:/reports" -reportType:TextSummary
- after_script:
- - cat /reports/Summary.txt
- artifacts:
- when: always
- reports:
- coverage_report:
- coverage_format: cobertura
- path: ./**/coverage.cobertura.xml
-
-deploy-release:
- stage: deploy
- dependencies:
- - build-release
- - test-release
- tags:
- - docker
- - lnx
- - 64bit
- rules:
- - if: $CI_COMMIT_TAG != null
- script:
- - dotnet nuget push -k $NUGET_APIKEY -s https://api.nuget.org/v3/index.json --skip-duplicate artifacts/*.nupkg
+image: mcr.microsoft.com/dotnet/sdk:8.0
+
+variables:
+ TZ: "Europe/Berlin"
+ LANG: "de"
+
+stages:
+ - build
+ - test
+ - deploy
+
+
+
+build-debug:
+ stage: build
+ tags:
+ - docker
+ - lnx
+ - 64bit
+ rules:
+ - if: $CI_COMMIT_TAG == null
+ script:
+ - shopt -s globstar
+ - mkdir ./artifacts
+ - dotnet build -c Debug --nologo
+ - mv ./**/*.nupkg ./artifacts/
+ - mv ./**/*.snupkg ./artifacts/
+ artifacts:
+ paths:
+ - artifacts/*.nupkg
+ - artifacts/*.snupkg
+ expire_in: 1 days
+
+test-debug:
+ stage: test
+ dependencies:
+ - build-debug
+ tags:
+ - docker
+ - lnx
+ - 64bit
+ rules:
+ - if: $CI_COMMIT_TAG == null
+ coverage: /Branch coverage[\s\S].+%/
+ before_script:
+ - dotnet tool install dotnet-reportgenerator-globaltool --tool-path /dotnet-tools
+ script:
+ - dotnet test -c Debug --nologo /p:CoverletOutputFormat=Cobertura
+ - /dotnet-tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/coverage.cobertura.xml" "-targetdir:/reports" -reportType:TextSummary
+ after_script:
+ - cat /reports/Summary.txt
+ artifacts:
+ when: always
+ reports:
+ coverage_report:
+ coverage_format: cobertura
+ path: ./**/coverage.cobertura.xml
+
+deploy-debug:
+ stage: deploy
+ dependencies:
+ - build-debug
+ - test-debug
+ tags:
+ - docker
+ - lnx
+ - server
+ rules:
+ - if: $CI_COMMIT_TAG == null
+ script:
+ - dotnet nuget push -k $BAGET_APIKEY -s https://nuget.am-wd.de/v3/index.json --skip-duplicate artifacts/*.nupkg
+
+
+
+build-release:
+ stage: build
+ tags:
+ - docker
+ - lnx
+ - amd64
+ rules:
+ - if: $CI_COMMIT_TAG != null
+ script:
+ - shopt -s globstar
+ - mkdir ./artifacts
+ - dotnet build -c Release --nologo
+ - mv ./**/*.nupkg ./artifacts/
+ - mv ./**/*.snupkg ./artifacts/
+ artifacts:
+ paths:
+ - artifacts/*.nupkg
+ - artifacts/*.snupkg
+ expire_in: 7 days
+
+test-release:
+ stage: test
+ dependencies:
+ - build-release
+ tags:
+ - docker
+ - lnx
+ - amd64
+ rules:
+ - if: $CI_COMMIT_TAG != null
+ before_script:
+ - dotnet tool install dotnet-reportgenerator-globaltool --tool-path /dotnet-tools
+ script:
+ - dotnet test -c Release --nologo /p:CoverletOutputFormat=Cobertura
+ - /dotnet-tools/reportgenerator "-reports:${CI_PROJECT_DIR}/**/coverage.cobertura.xml" "-targetdir:/reports" -reportType:TextSummary
+ after_script:
+ - cat /reports/Summary.txt
+ artifacts:
+ when: always
+ reports:
+ coverage_report:
+ coverage_format: cobertura
+ path: ./**/coverage.cobertura.xml
+
+deploy-release:
+ stage: deploy
+ dependencies:
+ - build-release
+ - test-release
+ tags:
+ - docker
+ - lnx
+ - server
+ rules:
+ - if: $CI_COMMIT_TAG != null
+ script:
+ - dotnet nuget push -k $NUGET_APIKEY -s https://api.nuget.org/v3/index.json --skip-duplicate artifacts/*.nupkg
diff --git a/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj b/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj
deleted file mode 100644
index 805fe17..0000000
--- a/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj
+++ /dev/null
@@ -1,30 +0,0 @@
-
-
-
- netstandard2.0;net6.0;net8.0
-
- AMWD.Protocols.Modbus.Tcp
- amwd-modbus-tcp
- AMWD.Protocols.Modbus.Tcp
-
- Modbus TCP Protocol
- Implementation of the Modbus protocol communicating via TCP.
- Modbus Protocol Network TCP LAN
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj b/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj
deleted file mode 100644
index 5d85284..0000000
--- a/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
- net8.0
-
- false
- true
- true
- Cobertura
-
- false
- false
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/AMWD.Protocols.Modbus.Tests/GlobalUsings.cs b/AMWD.Protocols.Modbus.Tests/GlobalUsings.cs
deleted file mode 100644
index 606f9a6..0000000
--- a/AMWD.Protocols.Modbus.Tests/GlobalUsings.cs
+++ /dev/null
@@ -1,5 +0,0 @@
-global using System;
-global using System.Linq;
-global using AMWD.Protocols.Modbus.Common;
-global using AMWD.Protocols.Modbus.Common.Contracts;
-global using Microsoft.VisualStudio.TestTools.UnitTesting;
diff --git a/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusRtuProxyTest/ShouldReadDeviceIdentification.snap.bin b/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusRtuProxyTest/ShouldReadDeviceIdentification.snap.bin
deleted file mode 100644
index 76fddc0..0000000
--- a/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusRtuProxyTest/ShouldReadDeviceIdentification.snap.bin
+++ /dev/null
@@ -1,9 +0,0 @@
-DeviceIdentification
- VendorName: VendorName
- ProductCode: ProductCode
- MajorMinorRevision: MajorMinorRevision
- VendorUrl:
- ProductName:
- ModelName:
- UserApplicationName:
- IsIndividualAccessAllowed: False
diff --git a/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusSerialClientTest/ShouldPrintCleanString.snap.bin b/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusSerialClientTest/ShouldPrintCleanString.snap.bin
deleted file mode 100644
index f1bbcab..0000000
--- a/AMWD.Protocols.Modbus.Tests/Serial/Snapshots/ModbusSerialClientTest/ShouldPrintCleanString.snap.bin
+++ /dev/null
@@ -1,8 +0,0 @@
-Serial Client COM-42
- BaudRate: 2400
- DataBits: 7
- StopBits: 1.5
- Parity: space
- Handshake: xonxoff
- RtsEnable: true
- DriverEnabledRS485: true
diff --git a/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpClientTest/ShouldPrintCleanString.snap.bin b/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpClientTest/ShouldPrintCleanString.snap.bin
deleted file mode 100644
index 85ab124..0000000
--- a/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpClientTest/ShouldPrintCleanString.snap.bin
+++ /dev/null
@@ -1,2 +0,0 @@
-TCP Client 127.0.0.1
- Port: 502
diff --git a/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpProxyTest/ShouldReadDeviceIdentification.snap.bin b/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpProxyTest/ShouldReadDeviceIdentification.snap.bin
deleted file mode 100644
index 76fddc0..0000000
--- a/AMWD.Protocols.Modbus.Tests/Tcp/Snapshots/ModbusTcpProxyTest/ShouldReadDeviceIdentification.snap.bin
+++ /dev/null
@@ -1,9 +0,0 @@
-DeviceIdentification
- VendorName: VendorName
- ProductCode: ProductCode
- MajorMinorRevision: MajorMinorRevision
- VendorUrl:
- ProductName:
- ModelName:
- UserApplicationName:
- IsIndividualAccessAllowed: False
diff --git a/AMWD.Protocols.Modbus.sln b/AMWD.Protocols.Modbus.sln
index 999f0bf..c993213 100644
--- a/AMWD.Protocols.Modbus.sln
+++ b/AMWD.Protocols.Modbus.sln
@@ -3,7 +3,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.8.34525.116
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Common", "AMWD.Protocols.Modbus.Common\AMWD.Protocols.Modbus.Common.csproj", "{2B7689D8-9E56-4DEB-B40E-F70DB4A6F250}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Common", "src\AMWD.Protocols.Modbus.Common\AMWD.Protocols.Modbus.Common.csproj", "{2B7689D8-9E56-4DEB-B40E-F70DB4A6F250}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{0C43172F-63F3-455A-A5FC-CAE7492A969B}"
EndProject
@@ -29,15 +29,30 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "build", "build", "{C8065AE3
Directory.Build.props = Directory.Build.props
EndProjectSection
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Tests", "AMWD.Protocols.Modbus.Tests\AMWD.Protocols.Modbus.Tests.csproj", "{146070C4-E922-4F5A-AD6F-9A899186E26E}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Tests", "test\AMWD.Protocols.Modbus.Tests\AMWD.Protocols.Modbus.Tests.csproj", "{146070C4-E922-4F5A-AD6F-9A899186E26E}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Tcp", "AMWD.Protocols.Modbus.Tcp\AMWD.Protocols.Modbus.Tcp.csproj", "{8C888A84-CD09-4087-B5DA-67708ABBABA2}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Tcp", "src\AMWD.Protocols.Modbus.Tcp\AMWD.Protocols.Modbus.Tcp.csproj", "{8C888A84-CD09-4087-B5DA-67708ABBABA2}"
EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Serial", "AMWD.Protocols.Modbus.Serial\AMWD.Protocols.Modbus.Serial.csproj", "{D966826F-EE6C-4BC0-9185-C2A9A50FD586}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AMWD.Protocols.Modbus.Serial", "src\AMWD.Protocols.Modbus.Serial\AMWD.Protocols.Modbus.Serial.csproj", "{D966826F-EE6C-4BC0-9185-C2A9A50FD586}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CliClient", "CliClient\CliClient.csproj", "{B0E53462-B0ED-4685-8AA5-948DC160EE27}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CliClient", "tool\CliClient\CliClient.csproj", "{B0E53462-B0ED-4685-8AA5-948DC160EE27}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CliProxy", "CliProxy\CliProxy.csproj", "{AC922E80-E9B6-493D-B1D1-752527E883ED}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CliProxy", "tool\CliProxy\CliProxy.csproj", "{AC922E80-E9B6-493D-B1D1-752527E883ED}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{02EA681E-C7D8-13C7-8484-4AC65E1B71E8}"
+ ProjectSection(SolutionItems) = preProject
+ src\Directory.Build.props = src\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{0C2CC421-9808-4CA2-BEA8-11493467DBCE}"
+ ProjectSection(SolutionItems) = preProject
+ test\Directory.Build.props = test\Directory.Build.props
+ EndProjectSection
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tool", "tool", "{3429CE19-211E-4AFA-9629-D7E1A360B7AC}"
+ ProjectSection(SolutionItems) = preProject
+ tool\Directory.Build.props = tool\Directory.Build.props
+ EndProjectSection
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -74,9 +89,15 @@ Global
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
+ {2B7689D8-9E56-4DEB-B40E-F70DB4A6F250} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
{A5A9AEA2-3AFF-4536-9FF9-34663DA4D0AD} = {0C43172F-63F3-455A-A5FC-CAE7492A969B}
{2ED08B2B-1F72-4E1E-9586-1DC6BEFD7BA7} = {0C43172F-63F3-455A-A5FC-CAE7492A969B}
{C8065AE3-BA87-49AC-8100-C85D6DF7E436} = {0C43172F-63F3-455A-A5FC-CAE7492A969B}
+ {146070C4-E922-4F5A-AD6F-9A899186E26E} = {0C2CC421-9808-4CA2-BEA8-11493467DBCE}
+ {8C888A84-CD09-4087-B5DA-67708ABBABA2} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {D966826F-EE6C-4BC0-9185-C2A9A50FD586} = {02EA681E-C7D8-13C7-8484-4AC65E1B71E8}
+ {B0E53462-B0ED-4685-8AA5-948DC160EE27} = {3429CE19-211E-4AFA-9629-D7E1A360B7AC}
+ {AC922E80-E9B6-493D-B1D1-752527E883ED} = {3429CE19-211E-4AFA-9629-D7E1A360B7AC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E4FD8EF0-3594-4994-BE80-5FADA5EE17B4}
diff --git a/CliClient/CliClient.csproj b/CliClient/CliClient.csproj
deleted file mode 100644
index cab868e..0000000
--- a/CliClient/CliClient.csproj
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
- Exe
- net8.0
-
- modbus-client
- AMWD.Protocols.Modbus.CliClient
-
- Modbus CLI client
- Small CLI client for Modbus communication.
-
- false
- false
- false
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/CliProxy/CliProxy.csproj b/CliProxy/CliProxy.csproj
deleted file mode 100644
index 16a77f3..0000000
--- a/CliProxy/CliProxy.csproj
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
- Exe
- net8.0
-
- modbus-proxy
- AMWD.Protocols.Modbus.CliProxy
-
- Modbus CLI proxy
- Small CLI proxy to forward messages.
-
- false
- false
- false
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Directory.Build.props b/Directory.Build.props
index e177723..e728983 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -3,60 +3,18 @@
12.0
{semvertag:main}{!:-dev}
- true
- false
- true
-
- git
- https://github.com/AM-WD/AMWD.Protocols.Modbus.git
- true
-
- true
- true
- snupkg
- false
-
- package-icon.png
- README.md
- LICENSE.txt
-
Modbus Protocol for .NET
AM.WD
Andreas Müller
© {copyright:2018-} AM.WD
true
- $(SolutionDir)/AMWD.Protocols.Modbus.snk
+ 0024000004800000940000000602000000240000525341310004000001000100adcc4f9f5bb3ac73cb30661f6f35772b8f90a74412925764a960af06ef125bdcec05ed1d139503d5203fb72aa3fa74bab58e82ac2a6cd4b650f8cbf7086a71bc2dfc67e95b8d26d776d60856acf3121f831529b1a4dee91b34ac84f95f71a1165b7783edb591929ba2a684100c92bbed8859c7266fb507f6f55bb6f7fcac80b4
+ 0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7
-
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- all
- runtime; build; native; contentfiles; analyzers; buildtransitive
-
-
-
-
-
-
-
-
-
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj b/src/AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj
similarity index 69%
rename from AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj
rename to src/AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj
index fc77f51..39351ee 100644
--- a/AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj
+++ b/src/AMWD.Protocols.Modbus.Common/AMWD.Protocols.Modbus.Common.csproj
@@ -1,8 +1,6 @@
- netstandard2.0;net6.0;net8.0
-
AMWD.Protocols.Modbus.Common
amwd-modbus-common
AMWD.Protocols.Modbus.Common
@@ -12,8 +10,4 @@
Modbus Protocol
-
-
-
-
diff --git a/AMWD.Protocols.Modbus.Common/Contracts/IModbusConnection.cs b/src/AMWD.Protocols.Modbus.Common/Contracts/IModbusConnection.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Contracts/IModbusConnection.cs
rename to src/AMWD.Protocols.Modbus.Common/Contracts/IModbusConnection.cs
diff --git a/AMWD.Protocols.Modbus.Common/Contracts/IModbusProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Contracts/IModbusProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Contracts/IModbusProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Contracts/IModbusProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/Contracts/IModbusProxy.cs b/src/AMWD.Protocols.Modbus.Common/Contracts/IModbusProxy.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Contracts/IModbusProxy.cs
rename to src/AMWD.Protocols.Modbus.Common/Contracts/IModbusProxy.cs
diff --git a/AMWD.Protocols.Modbus.Common/Contracts/ModbusClientBase.cs b/src/AMWD.Protocols.Modbus.Common/Contracts/ModbusClientBase.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Contracts/ModbusClientBase.cs
rename to src/AMWD.Protocols.Modbus.Common/Contracts/ModbusClientBase.cs
diff --git a/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationCategory.cs b/src/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationCategory.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationCategory.cs
rename to src/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationCategory.cs
diff --git a/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationObject.cs b/src/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationObject.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationObject.cs
rename to src/AMWD.Protocols.Modbus.Common/Enums/ModbusDeviceIdentificationObject.cs
diff --git a/AMWD.Protocols.Modbus.Common/Enums/ModbusErrorCode.cs b/src/AMWD.Protocols.Modbus.Common/Enums/ModbusErrorCode.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Enums/ModbusErrorCode.cs
rename to src/AMWD.Protocols.Modbus.Common/Enums/ModbusErrorCode.cs
diff --git a/AMWD.Protocols.Modbus.Common/Enums/ModbusFunctionCode.cs b/src/AMWD.Protocols.Modbus.Common/Enums/ModbusFunctionCode.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Enums/ModbusFunctionCode.cs
rename to src/AMWD.Protocols.Modbus.Common/Enums/ModbusFunctionCode.cs
diff --git a/AMWD.Protocols.Modbus.Common/Enums/ModbusObjectType.cs b/src/AMWD.Protocols.Modbus.Common/Enums/ModbusObjectType.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Enums/ModbusObjectType.cs
rename to src/AMWD.Protocols.Modbus.Common/Enums/ModbusObjectType.cs
diff --git a/AMWD.Protocols.Modbus.Common/Events/CoilWrittenEventArgs.cs b/src/AMWD.Protocols.Modbus.Common/Events/CoilWrittenEventArgs.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Events/CoilWrittenEventArgs.cs
rename to src/AMWD.Protocols.Modbus.Common/Events/CoilWrittenEventArgs.cs
diff --git a/AMWD.Protocols.Modbus.Common/Events/RegisterWrittenEventArgs.cs b/src/AMWD.Protocols.Modbus.Common/Events/RegisterWrittenEventArgs.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Events/RegisterWrittenEventArgs.cs
rename to src/AMWD.Protocols.Modbus.Common/Events/RegisterWrittenEventArgs.cs
diff --git a/AMWD.Protocols.Modbus.Common/Exceptions/ModbusException.cs b/src/AMWD.Protocols.Modbus.Common/Exceptions/ModbusException.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Exceptions/ModbusException.cs
rename to src/AMWD.Protocols.Modbus.Common/Exceptions/ModbusException.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ArrayExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ArrayExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ArrayExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ArrayExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/EnumExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/EnumExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/EnumExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/EnumExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ModbusDecimalExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ModbusDecimalExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ModbusDecimalExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ModbusDecimalExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ModbusExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ModbusExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ModbusExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ModbusExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ModbusSignedExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ModbusSignedExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ModbusSignedExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ModbusSignedExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ModbusUnsignedExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ModbusUnsignedExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ModbusUnsignedExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ModbusUnsignedExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Extensions/ReaderWriterLockSlimExtensions.cs b/src/AMWD.Protocols.Modbus.Common/Extensions/ReaderWriterLockSlimExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Extensions/ReaderWriterLockSlimExtensions.cs
rename to src/AMWD.Protocols.Modbus.Common/Extensions/ReaderWriterLockSlimExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/Coil.cs b/src/AMWD.Protocols.Modbus.Common/Models/Coil.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/Coil.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/Coil.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/DeviceIdentification.cs b/src/AMWD.Protocols.Modbus.Common/Models/DeviceIdentification.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/DeviceIdentification.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/DeviceIdentification.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/DeviceIdentificationRaw.cs b/src/AMWD.Protocols.Modbus.Common/Models/DeviceIdentificationRaw.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/DeviceIdentificationRaw.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/DeviceIdentificationRaw.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/DiscreteInput.cs b/src/AMWD.Protocols.Modbus.Common/Models/DiscreteInput.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/DiscreteInput.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/DiscreteInput.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/HoldingRegister.cs b/src/AMWD.Protocols.Modbus.Common/Models/HoldingRegister.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/HoldingRegister.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/HoldingRegister.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/InputRegister.cs b/src/AMWD.Protocols.Modbus.Common/Models/InputRegister.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/InputRegister.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/InputRegister.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/ModbusDevice.cs b/src/AMWD.Protocols.Modbus.Common/Models/ModbusDevice.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/ModbusDevice.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/ModbusDevice.cs
diff --git a/AMWD.Protocols.Modbus.Common/Models/ModbusObject.cs b/src/AMWD.Protocols.Modbus.Common/Models/ModbusObject.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Models/ModbusObject.cs
rename to src/AMWD.Protocols.Modbus.Common/Models/ModbusObject.cs
diff --git a/AMWD.Protocols.Modbus.Common/Protocols/AsciiProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Protocols/AsciiProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Protocols/AsciiProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Protocols/AsciiProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/Protocols/RtuOverTcpProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Protocols/RtuOverTcpProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Protocols/RtuOverTcpProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Protocols/RtuOverTcpProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/Protocols/RtuProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Protocols/RtuProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Protocols/RtuProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Protocols/RtuProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/Protocols/TcpProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Protocols/TcpProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Protocols/TcpProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Protocols/TcpProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/Protocols/VirtualProtocol.cs b/src/AMWD.Protocols.Modbus.Common/Protocols/VirtualProtocol.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Protocols/VirtualProtocol.cs
rename to src/AMWD.Protocols.Modbus.Common/Protocols/VirtualProtocol.cs
diff --git a/AMWD.Protocols.Modbus.Common/README.md b/src/AMWD.Protocols.Modbus.Common/README.md
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/README.md
rename to src/AMWD.Protocols.Modbus.Common/README.md
diff --git a/AMWD.Protocols.Modbus.Common/Utils/AsyncQueue.cs b/src/AMWD.Protocols.Modbus.Common/Utils/AsyncQueue.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Utils/AsyncQueue.cs
rename to src/AMWD.Protocols.Modbus.Common/Utils/AsyncQueue.cs
diff --git a/AMWD.Protocols.Modbus.Common/Utils/RequestQueueItem.cs b/src/AMWD.Protocols.Modbus.Common/Utils/RequestQueueItem.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Utils/RequestQueueItem.cs
rename to src/AMWD.Protocols.Modbus.Common/Utils/RequestQueueItem.cs
diff --git a/AMWD.Protocols.Modbus.Common/Utils/VirtualModbusClient.cs b/src/AMWD.Protocols.Modbus.Common/Utils/VirtualModbusClient.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Common/Utils/VirtualModbusClient.cs
rename to src/AMWD.Protocols.Modbus.Common/Utils/VirtualModbusClient.cs
diff --git a/AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj b/src/AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj
similarity index 53%
rename from AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj
rename to src/AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj
index 2e5bb32..2db25bd 100644
--- a/AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj
+++ b/src/AMWD.Protocols.Modbus.Serial/AMWD.Protocols.Modbus.Serial.csproj
@@ -1,8 +1,6 @@
- netstandard2.0;net6.0;net8.0
-
AMWD.Protocols.Modbus.Serial
amwd-modbus-serial
AMWD.Protocols.Modbus.Serial
@@ -13,14 +11,10 @@
-
-
-
-
-
-
-
-
+
+
+
+
@@ -36,7 +30,7 @@
-
+
diff --git a/AMWD.Protocols.Modbus.Serial/Enums/BaudRate.cs b/src/AMWD.Protocols.Modbus.Serial/Enums/BaudRate.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Enums/BaudRate.cs
rename to src/AMWD.Protocols.Modbus.Serial/Enums/BaudRate.cs
diff --git a/AMWD.Protocols.Modbus.Serial/Enums/RS485Flags.cs b/src/AMWD.Protocols.Modbus.Serial/Enums/RS485Flags.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Enums/RS485Flags.cs
rename to src/AMWD.Protocols.Modbus.Serial/Enums/RS485Flags.cs
diff --git a/AMWD.Protocols.Modbus.Serial/Exceptions/UnixIOException.cs b/src/AMWD.Protocols.Modbus.Serial/Exceptions/UnixIOException.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Exceptions/UnixIOException.cs
rename to src/AMWD.Protocols.Modbus.Serial/Exceptions/UnixIOException.cs
diff --git a/AMWD.Protocols.Modbus.Serial/ModbusRtuProxy.cs b/src/AMWD.Protocols.Modbus.Serial/ModbusRtuProxy.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/ModbusRtuProxy.cs
rename to src/AMWD.Protocols.Modbus.Serial/ModbusRtuProxy.cs
diff --git a/AMWD.Protocols.Modbus.Serial/ModbusRtuServer.cs b/src/AMWD.Protocols.Modbus.Serial/ModbusRtuServer.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/ModbusRtuServer.cs
rename to src/AMWD.Protocols.Modbus.Serial/ModbusRtuServer.cs
diff --git a/AMWD.Protocols.Modbus.Serial/ModbusSerialClient.cs b/src/AMWD.Protocols.Modbus.Serial/ModbusSerialClient.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/ModbusSerialClient.cs
rename to src/AMWD.Protocols.Modbus.Serial/ModbusSerialClient.cs
diff --git a/AMWD.Protocols.Modbus.Serial/ModbusSerialConnection.cs b/src/AMWD.Protocols.Modbus.Serial/ModbusSerialConnection.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/ModbusSerialConnection.cs
rename to src/AMWD.Protocols.Modbus.Serial/ModbusSerialConnection.cs
diff --git a/AMWD.Protocols.Modbus.Serial/README.md b/src/AMWD.Protocols.Modbus.Serial/README.md
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/README.md
rename to src/AMWD.Protocols.Modbus.Serial/README.md
diff --git a/AMWD.Protocols.Modbus.Serial/Utils/SafeUnixHandle.cs b/src/AMWD.Protocols.Modbus.Serial/Utils/SafeUnixHandle.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Utils/SafeUnixHandle.cs
rename to src/AMWD.Protocols.Modbus.Serial/Utils/SafeUnixHandle.cs
diff --git a/AMWD.Protocols.Modbus.Serial/Utils/SerialPortWrapper.cs b/src/AMWD.Protocols.Modbus.Serial/Utils/SerialPortWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Utils/SerialPortWrapper.cs
rename to src/AMWD.Protocols.Modbus.Serial/Utils/SerialPortWrapper.cs
diff --git a/AMWD.Protocols.Modbus.Serial/Utils/SerialRS485.cs b/src/AMWD.Protocols.Modbus.Serial/Utils/SerialRS485.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Utils/SerialRS485.cs
rename to src/AMWD.Protocols.Modbus.Serial/Utils/SerialRS485.cs
diff --git a/AMWD.Protocols.Modbus.Serial/Utils/UnsafeNativeMethods.cs b/src/AMWD.Protocols.Modbus.Serial/Utils/UnsafeNativeMethods.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Serial/Utils/UnsafeNativeMethods.cs
rename to src/AMWD.Protocols.Modbus.Serial/Utils/UnsafeNativeMethods.cs
diff --git a/src/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj b/src/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj
new file mode 100644
index 0000000..697bb2c
--- /dev/null
+++ b/src/AMWD.Protocols.Modbus.Tcp/AMWD.Protocols.Modbus.Tcp.csproj
@@ -0,0 +1,24 @@
+
+
+
+ AMWD.Protocols.Modbus.Tcp
+ amwd-modbus-tcp
+ AMWD.Protocols.Modbus.Tcp
+
+ Modbus TCP Protocol
+ Implementation of the Modbus protocol communicating via TCP.
+ Modbus Protocol Network TCP LAN
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/AMWD.Protocols.Modbus.Tcp/Extensions/StreamExtensions.cs b/src/AMWD.Protocols.Modbus.Tcp/Extensions/StreamExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Extensions/StreamExtensions.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Extensions/StreamExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Extensions/TaskExtensions.cs b/src/AMWD.Protocols.Modbus.Tcp/Extensions/TaskExtensions.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Extensions/TaskExtensions.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Extensions/TaskExtensions.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/ModbusTcpClient.cs b/src/AMWD.Protocols.Modbus.Tcp/ModbusTcpClient.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/ModbusTcpClient.cs
rename to src/AMWD.Protocols.Modbus.Tcp/ModbusTcpClient.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/ModbusTcpConnection.cs b/src/AMWD.Protocols.Modbus.Tcp/ModbusTcpConnection.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/ModbusTcpConnection.cs
rename to src/AMWD.Protocols.Modbus.Tcp/ModbusTcpConnection.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/ModbusTcpProxy.cs b/src/AMWD.Protocols.Modbus.Tcp/ModbusTcpProxy.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/ModbusTcpProxy.cs
rename to src/AMWD.Protocols.Modbus.Tcp/ModbusTcpProxy.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/ModbusTcpServer.cs b/src/AMWD.Protocols.Modbus.Tcp/ModbusTcpServer.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/ModbusTcpServer.cs
rename to src/AMWD.Protocols.Modbus.Tcp/ModbusTcpServer.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/README.md b/src/AMWD.Protocols.Modbus.Tcp/README.md
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/README.md
rename to src/AMWD.Protocols.Modbus.Tcp/README.md
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/IPEndPointWrapper.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/IPEndPointWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/IPEndPointWrapper.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/IPEndPointWrapper.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/NetworkStreamWrapper.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/NetworkStreamWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/NetworkStreamWrapper.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/NetworkStreamWrapper.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/SocketWrapper.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/SocketWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/SocketWrapper.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/SocketWrapper.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapper.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapper.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapper.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapperFactory.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapperFactory.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapperFactory.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/TcpClientWrapperFactory.cs
diff --git a/AMWD.Protocols.Modbus.Tcp/Utils/TcpListenerWrapper.cs b/src/AMWD.Protocols.Modbus.Tcp/Utils/TcpListenerWrapper.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tcp/Utils/TcpListenerWrapper.cs
rename to src/AMWD.Protocols.Modbus.Tcp/Utils/TcpListenerWrapper.cs
diff --git a/src/Directory.Build.props b/src/Directory.Build.props
new file mode 100644
index 0000000..25297f9
--- /dev/null
+++ b/src/Directory.Build.props
@@ -0,0 +1,50 @@
+
+
+ netstandard2.0;net6.0;net8.0
+
+ true
+ false
+ true
+
+ git
+ https://github.com/AM-WD/AMWD.Protocols.Modbus.git
+ true
+
+ true
+ true
+ snupkg
+ false
+
+ package-icon.png
+ README.md
+ LICENSE.txt
+ https://modbus.org/tech.php
+
+ ../../AMWD.Protocols.Modbus.snk
+
+
+
+ true
+
+
+
+
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj b/test/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj
new file mode 100644
index 0000000..90de841
--- /dev/null
+++ b/test/AMWD.Protocols.Modbus.Tests/AMWD.Protocols.Modbus.Tests.csproj
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs
similarity index 95%
rename from AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs
index 75396fe..7569670 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Contracts/ModbusClientBaseTest.cs
@@ -1,8 +1,7 @@
-using System.Collections.Generic;
-using System.Text;
+using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using Moq;
+using AMWD.Protocols.Modbus.Common.Contracts;
namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
{
@@ -111,10 +110,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
IModbusConnection connection = null;
// Act + Assert
- Assert.ThrowsException(() => new ModbusClientBaseWrapper(connection));
+ Assert.ThrowsExactly(() => new ModbusClientBaseWrapper(connection));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(true)]
[DataRow(false)]
public void ShouldAlsoDisposeConnection(bool disposeConnection)
@@ -159,7 +158,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
client.Dispose();
// Act + Assert
- await Assert.ThrowsExceptionAsync(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
+ await Assert.ThrowsExactlyAsync(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
}
[TestMethod]
@@ -170,7 +169,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Contracts
client.Protocol = null;
// Act + Assert
- await Assert.ThrowsExceptionAsync(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
+ await Assert.ThrowsExactlyAsync(() => client.ReadCoilsAsync(UNIT_ID, START_ADDRESS, READ_COUNT));
}
#endregion Common/Connection/Assertions
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs
similarity index 87%
rename from AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs
index 1968069..e4b3c13 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusDecimalExtensionsTest.cs
@@ -47,7 +47,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetSingle(0));
+ Assert.ThrowsExactly(() => registers.GetSingle(0));
}
[TestMethod]
@@ -60,10 +60,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetSingle(0));
+ Assert.ThrowsExactly(() => registers.GetSingle(0));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetSingle(int startIndex)
@@ -76,7 +76,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetSingle(startIndex));
+ Assert.ThrowsExactly(() => registers.GetSingle(startIndex));
}
[TestMethod]
@@ -90,7 +90,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetSingle(0));
+ Assert.ThrowsExactly(() => registers.GetSingle(0));
}
[TestMethod]
@@ -139,7 +139,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetDouble(0));
+ Assert.ThrowsExactly(() => registers.GetDouble(0));
}
[TestMethod]
@@ -154,10 +154,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetDouble(0));
+ Assert.ThrowsExactly(() => registers.GetDouble(0));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetDouble(int startIndex)
@@ -172,7 +172,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetDouble(startIndex));
+ Assert.ThrowsExactly(() => registers.GetDouble(startIndex));
}
[TestMethod]
@@ -188,7 +188,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetDouble(0));
+ Assert.ThrowsExactly(() => registers.GetDouble(0));
}
#endregion Modbus to value
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs
similarity index 88%
rename from AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs
index 210b44a..68aa05b 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusExtensionsTest.cs
@@ -36,7 +36,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
Coil coil = null;
// Act + Assert
- Assert.ThrowsException(() => coil.GetBoolean());
+ Assert.ThrowsExactly(() => coil.GetBoolean());
}
[TestMethod]
@@ -98,7 +98,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
HoldingRegister[] list = null;
// Act + Assert
- Assert.ThrowsException(() => list.GetString(2));
+ Assert.ThrowsExactly(() => list.GetString(2));
}
[TestMethod]
@@ -108,10 +108,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
var registers = Array.Empty();
// Act + Assert
- Assert.ThrowsException(() => registers.GetString(2));
+ Assert.ThrowsExactly(() => registers.GetString(2));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnString(int startIndex)
@@ -124,7 +124,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetString(2, startIndex));
+ Assert.ThrowsExactly(() => registers.GetString(2, startIndex));
}
[TestMethod]
@@ -138,7 +138,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetString(2));
+ Assert.ThrowsExactly(() => registers.GetString(2));
}
#endregion Modbus to value
@@ -263,7 +263,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Extensions
string str = null;
// Act + Assert
- Assert.ThrowsException(() => str.ToRegisters(100).ToArray());
+ Assert.ThrowsExactly(() => str.ToRegisters(100).ToArray());
}
#endregion Value to Modbus
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs
similarity index 87%
rename from AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs
index f360228..857f0d8 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusSignedExtensionsTest.cs
@@ -38,7 +38,7 @@
HoldingRegister register = null;
// Act + Assert
- Assert.ThrowsException(() => register.GetSByte());
+ Assert.ThrowsExactly(() => register.GetSByte());
}
[TestMethod]
@@ -48,7 +48,7 @@
var obj = new Coil();
// Act + Assert
- Assert.ThrowsException(() => obj.GetSByte());
+ Assert.ThrowsExactly(() => obj.GetSByte());
}
[TestMethod]
@@ -84,7 +84,7 @@
HoldingRegister register = null;
// Act + Assert
- Assert.ThrowsException(() => register.GetInt16());
+ Assert.ThrowsExactly(() => register.GetInt16());
}
[TestMethod]
@@ -94,7 +94,7 @@
var obj = new Coil();
// Act + Assert
- Assert.ThrowsException(() => obj.GetInt16());
+ Assert.ThrowsExactly(() => obj.GetInt16());
}
[TestMethod]
@@ -139,7 +139,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt32(0));
+ Assert.ThrowsExactly(() => registers.GetInt32(0));
}
[TestMethod]
@@ -152,10 +152,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt32(0));
+ Assert.ThrowsExactly(() => registers.GetInt32(0));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetInt32(int startIndex)
@@ -168,7 +168,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt32(startIndex));
+ Assert.ThrowsExactly(() => registers.GetInt32(startIndex));
}
[TestMethod]
@@ -182,7 +182,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt32(0));
+ Assert.ThrowsExactly(() => registers.GetInt32(0));
}
[TestMethod]
@@ -231,7 +231,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt64(0));
+ Assert.ThrowsExactly(() => registers.GetInt64(0));
}
[TestMethod]
@@ -246,10 +246,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt64(0));
+ Assert.ThrowsExactly(() => registers.GetInt64(0));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetInt64(int startIndex)
@@ -264,7 +264,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt64(startIndex));
+ Assert.ThrowsExactly(() => registers.GetInt64(startIndex));
}
[TestMethod]
@@ -280,7 +280,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetInt64(0));
+ Assert.ThrowsExactly(() => registers.GetInt64(0));
}
#endregion Modbus to value
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs
similarity index 86%
rename from AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs
index f068de2..9ff10a5 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Extensions/ModbusUnsignedExtensionsTest.cs
@@ -38,7 +38,7 @@
HoldingRegister register = null;
// Act + Assert
- Assert.ThrowsException(() => register.GetByte());
+ Assert.ThrowsExactly(() => register.GetByte());
}
[TestMethod]
@@ -48,7 +48,7 @@
var obj = new Coil();
// Act + Assert
- Assert.ThrowsException(() => obj.GetByte());
+ Assert.ThrowsExactly(() => obj.GetByte());
}
[TestMethod]
@@ -84,7 +84,7 @@
HoldingRegister register = null;
// Act + Assert
- Assert.ThrowsException(() => register.GetUInt16());
+ Assert.ThrowsExactly(() => register.GetUInt16());
}
[TestMethod]
@@ -94,7 +94,7 @@
var obj = new Coil();
// Act + Assert
- Assert.ThrowsException(() => obj.GetUInt16());
+ Assert.ThrowsExactly(() => obj.GetUInt16());
}
[TestMethod]
@@ -139,7 +139,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt32(0));
+ Assert.ThrowsExactly(() => registers.GetUInt32(0));
}
[TestMethod]
@@ -152,10 +152,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt32(1));
+ Assert.ThrowsExactly(() => registers.GetUInt32(1));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetUInt32(int startIndex)
@@ -168,7 +168,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt32(startIndex));
+ Assert.ThrowsExactly(() => registers.GetUInt32(startIndex));
}
[TestMethod]
@@ -182,7 +182,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt32(0));
+ Assert.ThrowsExactly(() => registers.GetUInt32(0));
}
[TestMethod]
@@ -231,7 +231,7 @@
HoldingRegister[] registers = null;
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt64(0));
+ Assert.ThrowsExactly(() => registers.GetUInt64(0));
}
[TestMethod]
@@ -246,10 +246,10 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt64(0));
+ Assert.ThrowsExactly(() => registers.GetUInt64(0));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(1)]
[DataRow(-1)]
public void ShouldThrowArgumentOutOfRangeOnGetUInt64(int startIndex)
@@ -264,7 +264,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt64(startIndex));
+ Assert.ThrowsExactly(() => registers.GetUInt64(startIndex));
}
[TestMethod]
@@ -280,7 +280,7 @@
};
// Act + Assert
- Assert.ThrowsException(() => registers.GetUInt64(0));
+ Assert.ThrowsExactly(() => registers.GetUInt64(0));
}
#endregion Modbus to value
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs
similarity index 94%
rename from AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs
index 37e7bcb..1c6234e 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Models/CoilTest.cs
@@ -87,7 +87,7 @@
Assert.IsFalse(success);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0xFF)]
[DataRow(0x00)]
public void ShouldPrintPrettyString(int highByte)
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs
similarity index 95%
rename from AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs
index e41fffc..edbe580 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Models/DiscreteInputTest.cs
@@ -87,7 +87,7 @@
Assert.IsFalse(success);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0xFF)]
[DataRow(0x00)]
public void ShouldPrintPrettyString(int highByte)
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Models/HoldingRegisterTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Models/HoldingRegisterTest.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tests/Common/Models/HoldingRegisterTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Models/HoldingRegisterTest.cs
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Models/InputRegisterTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Models/InputRegisterTest.cs
similarity index 100%
rename from AMWD.Protocols.Modbus.Tests/Common/Models/InputRegisterTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Models/InputRegisterTest.cs
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs
similarity index 95%
rename from AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs
index d01ace4..226b3ce 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Models/ModbusDeviceTest.cs
@@ -1,6 +1,5 @@
-using System.Collections.Generic;
+using AMWD.Protocols.Modbus.Common.Models;
using System.Reflection;
-using AMWD.Protocols.Modbus.Common.Models;
namespace AMWD.Protocols.Modbus.Tests.Common.Models
{
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs
similarity index 79%
rename from AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs
index 87d8096..1deedd4 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/AsciiProtocolTest.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Text;
+using System.Text;
using AMWD.Protocols.Modbus.Common.Protocols;
namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
@@ -29,7 +28,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
CollectionAssert.AreEqual(expectedBytes, bytes.ToArray());
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
@@ -38,7 +37,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -48,7 +47,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -92,7 +91,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadCoils(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadCoils(responseBytes));
}
#endregion Read Coils
@@ -117,7 +116,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
CollectionAssert.AreEqual(expectedBytes, bytes.ToArray());
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
@@ -126,7 +125,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -136,7 +135,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -180,7 +179,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDiscreteInputs(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDiscreteInputs(responseBytes));
}
#endregion Read Discrete Inputs
@@ -205,7 +204,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
CollectionAssert.AreEqual(expectedBytes, bytes.ToArray());
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
@@ -214,7 +213,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -224,7 +223,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -262,7 +261,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadHoldingRegisters(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadHoldingRegisters(responseBytes));
}
#endregion Read Holding Registers
@@ -287,7 +286,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
CollectionAssert.AreEqual(expectedBytes, bytes.ToArray());
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
@@ -296,7 +295,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -306,7 +305,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -344,14 +343,14 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadInputRegisters(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadInputRegisters(responseBytes));
}
#endregion Read Input Registers
#region Read Device Identification
- [DataTestMethod]
+ [TestMethod]
[DataRow(ModbusDeviceIdentificationCategory.Basic)]
[DataRow(ModbusDeviceIdentificationCategory.Regular)]
[DataRow(ModbusDeviceIdentificationCategory.Extended)]
@@ -380,10 +379,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public void ShouldDeserializeReadDeviceIdentification(bool moreAndIndividual)
@@ -420,7 +419,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
}
[TestMethod]
@@ -434,7 +433,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(responseBytes));
}
#endregion Read Device Identification
@@ -467,7 +466,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
}
[TestMethod]
@@ -519,7 +518,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
}
[TestMethod]
@@ -578,10 +577,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(1969)]
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
@@ -594,7 +593,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -609,7 +608,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -624,7 +623,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -679,10 +678,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(124)]
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
@@ -695,7 +694,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -710,7 +709,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -725,7 +724,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -792,7 +791,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
Assert.IsFalse(complete);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x01)]
[DataRow(0x02)]
[DataRow(0x03)]
@@ -809,7 +808,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x05)]
[DataRow(0x06)]
[DataRow(0x0F)]
@@ -836,7 +835,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -848,7 +847,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -861,7 +860,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -873,7 +872,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -886,7 +885,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -899,10 +898,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x01)]
[DataRow(0x02)]
[DataRow(0x03)]
@@ -916,10 +915,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x05)]
[DataRow(0x06)]
[DataRow(0x0F)]
@@ -933,7 +932,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new AsciiProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(Encoding.ASCII.GetBytes(request), Encoding.ASCII.GetBytes(response)));
}
[TestMethod]
@@ -949,7 +948,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
Assert.AreEqual("F7", lrc);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(null)]
[DataRow("")]
[DataRow(" ")]
@@ -959,10 +958,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// Arrange
// Act + Assert
- Assert.ThrowsException(() => AsciiProtocol.LRC(msg));
+ Assert.ThrowsExactly(() => AsciiProtocol.LRC(msg));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(-1)]
[DataRow(4)]
public void ShouldThrowArgumentOutOfRangeExceptionForStartOnLrc(int start)
@@ -971,10 +970,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
string msg = "0207";
// Act + Assert
- Assert.ThrowsException(() => AsciiProtocol.LRC(msg, start));
+ Assert.ThrowsExactly(() => AsciiProtocol.LRC(msg, start));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(5)]
public void ShouldThrowArgumentOutOfRangeExceptionForLengthOnLrc(int length)
@@ -983,7 +982,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
string msg = "0207";
// Act + Assert
- Assert.ThrowsException(() => AsciiProtocol.LRC(msg, 0, length));
+ Assert.ThrowsExactly(() => AsciiProtocol.LRC(msg, 0, length));
}
[TestMethod]
@@ -993,7 +992,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
string msg = "0207";
// Act + Assert
- Assert.ThrowsException(() => AsciiProtocol.LRC(msg));
+ Assert.ThrowsExactly(() => AsciiProtocol.LRC(msg));
}
#endregion Validation
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs
similarity index 83%
rename from AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs
index 1c163ac..e01ae6c 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuOverTcpProtocolTest.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Reflection;
+using System.Reflection;
using AMWD.Protocols.Modbus.Common.Protocols;
namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
@@ -52,7 +51,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
@@ -61,7 +60,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -71,7 +70,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -106,7 +105,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadCoils([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
}
#endregion Read Coils
@@ -154,7 +153,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
@@ -163,7 +162,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -173,7 +172,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -208,7 +207,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDiscreteInputs([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
}
#endregion Read Discrete Inputs
@@ -256,7 +255,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(126)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
@@ -265,7 +264,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -275,7 +274,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -305,7 +304,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadHoldingRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
}
#endregion Read Holding Registers
@@ -353,7 +352,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(126)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
@@ -362,7 +361,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -372,7 +371,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -402,14 +401,14 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadInputRegisters([0x00, 0x01, 0x00, 0x00, 0x00, 0x08, UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
}
#endregion Read Input Registers
#region Read Device Identification
- [DataTestMethod]
+ [TestMethod]
[DataRow(ModbusDeviceIdentificationCategory.Basic)]
[DataRow(ModbusDeviceIdentificationCategory.Regular)]
[DataRow(ModbusDeviceIdentificationCategory.Extended)]
@@ -463,10 +462,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public void ShouldDeserializeReadDeviceIdentification(bool moreAndIndividual)
@@ -497,7 +496,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(response));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(response));
}
[TestMethod]
@@ -508,7 +507,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(response));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(response));
}
#endregion Read Device Identification
@@ -565,7 +564,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteSingleCoil(UNIT_ID, null));
}
[TestMethod]
@@ -638,7 +637,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteSingleHoldingRegister(UNIT_ID, null));
}
[TestMethod]
@@ -724,10 +723,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, null));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(1969)]
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleCoils(int count)
@@ -740,7 +739,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -755,7 +754,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -770,7 +769,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleCoils(UNIT_ID, coils));
}
[TestMethod]
@@ -855,10 +854,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, null));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(124)]
public void ShouldThrowOutOfRangeForCountOnSerializeWriteMultipleHoldingRegisters(int count)
@@ -871,7 +870,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -886,7 +885,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -901,7 +900,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
+ Assert.ThrowsExactly(() => protocol.SerializeWriteMultipleHoldingRegisters(UNIT_ID, registers));
}
[TestMethod]
@@ -991,7 +990,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
protocol.ValidateResponse(request, response);
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x00, 0x00)]
[DataRow(0x01, 0x01)]
public void ShouldThrowForTransactionIdOnValidateResponse(int hi, int lo)
@@ -1003,10 +1002,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x00, 0x01)]
[DataRow(0x01, 0x00)]
public void ShouldThrowForProtocolIdOnValidateResponse(int hi, int lo)
@@ -1018,7 +1017,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
[TestMethod]
@@ -1031,7 +1030,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
[TestMethod]
@@ -1044,7 +1043,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
[TestMethod]
@@ -1057,7 +1056,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
[TestMethod]
@@ -1070,10 +1069,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0x59, 0x6C)]
[DataRow(0x58, 0x6B)]
public void ShouldThrowForCrcOnValidateResponse(int hi, int lo)
@@ -1084,7 +1083,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuOverTcpProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.ValidateResponse(request, response));
+ Assert.ThrowsExactly(() => protocol.ValidateResponse(request, response));
}
#endregion Validation
diff --git a/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs
similarity index 82%
rename from AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs
rename to test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs
index ca376b9..acd2665 100644
--- a/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs
+++ b/test/AMWD.Protocols.Modbus.Tests/Common/Protocols/RtuProtocolTest.cs
@@ -1,5 +1,4 @@
-using System.Collections.Generic;
-using System.Text;
+using System.Text;
using AMWD.Protocols.Modbus.Common.Protocols;
namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
@@ -40,7 +39,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadCoils(int count)
@@ -49,7 +48,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -59,7 +58,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadCoils(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -94,7 +93,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadCoils([UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadCoils([UNIT_ID, 0x01, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
}
#endregion Read Coils
@@ -130,7 +129,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(2001)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadDiscreteInputs(int count)
@@ -139,7 +138,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -149,7 +148,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDiscreteInputs(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -184,7 +183,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDiscreteInputs([UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDiscreteInputs([UNIT_ID, 0x02, 0x02, 0xCD, 0x6B, 0x05, 0x00, 0x00]));
}
#endregion Read Discrete Inputs
@@ -220,7 +219,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(126)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadHoldingRegisters(int count)
@@ -229,7 +228,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -239,7 +238,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadHoldingRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -269,7 +268,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadHoldingRegisters([UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadHoldingRegisters([UNIT_ID, 0x03, 0x04, 0x02, 0x2B, 0x00, 0x00]));
}
#endregion Read Holding Registers
@@ -305,7 +304,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
// CRC check will be ignored
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(0)]
[DataRow(126)]
public void ShouldThrowOutOfRangeForCountOnSerializeReadInputRegisters(int count)
@@ -314,7 +313,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, 19, (ushort)count));
}
[TestMethod]
@@ -324,7 +323,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
+ Assert.ThrowsExactly(() => protocol.SerializeReadInputRegisters(UNIT_ID, ushort.MaxValue, 2));
}
[TestMethod]
@@ -354,14 +353,14 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadInputRegisters([UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadInputRegisters([UNIT_ID, 0x04, 0x04, 0x02, 0x2B, 0x00, 0x00]));
}
#endregion Read Input Registers
#region Read Device Identification
- [DataTestMethod]
+ [TestMethod]
[DataRow(ModbusDeviceIdentificationCategory.Basic)]
[DataRow(ModbusDeviceIdentificationCategory.Regular)]
[DataRow(ModbusDeviceIdentificationCategory.Extended)]
@@ -403,10 +402,10 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
+ Assert.ThrowsExactly(() => protocol.SerializeReadDeviceIdentification(UNIT_ID, (ModbusDeviceIdentificationCategory)10, ModbusDeviceIdentificationObject.ProductCode));
}
- [DataTestMethod]
+ [TestMethod]
[DataRow(false)]
[DataRow(true)]
public void ShouldDeserializeReadDeviceIdentification(bool moreAndIndividual)
@@ -437,7 +436,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(response));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(response));
}
[TestMethod]
@@ -448,7 +447,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException(() => protocol.DeserializeReadDeviceIdentification(response));
+ Assert.ThrowsExactly(() => protocol.DeserializeReadDeviceIdentification(response));
}
#endregion Read Device Identification
@@ -493,7 +492,7 @@ namespace AMWD.Protocols.Modbus.Tests.Common.Protocols
var protocol = new RtuProtocol();
// Act + Assert
- Assert.ThrowsException