diff --git a/EchoTspServer/EchoServer.csproj b/EchoTcpServer/EchoServer.csproj
similarity index 100%
rename from EchoTspServer/EchoServer.csproj
rename to EchoTcpServer/EchoServer.csproj
diff --git a/EchoTspServer/Program.cs b/EchoTcpServer/Program.cs
similarity index 100%
rename from EchoTspServer/Program.cs
rename to EchoTcpServer/Program.cs
diff --git a/NetSdrClient.sln b/NetSdrClient.sln
index d8ca20f7..42431fb3 100644
--- a/NetSdrClient.sln
+++ b/NetSdrClient.sln
@@ -7,7 +7,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetSdrClientApp", "NetSdrCl
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetSdrClientAppTests", "NetSdrClientAppTests\NetSdrClientAppTests.csproj", "{D0155366-89B4-4BA4-90E2-2ECC8C1EB915}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EchoServer", "EchoTspServer\EchoServer.csproj", "{9179F2F7-EBEE-4A5D-9FD9-F6E3C18DD263}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EchoServer", "EchoTcpServer\EchoServer.csproj", "{9179F2F7-EBEE-4A5D-9FD9-F6E3C18DD263}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
diff --git a/NetSdrClientAppTests/ArchitectureTests.cs b/NetSdrClientAppTests/ArchitectureTests.cs
new file mode 100644
index 00000000..b9846649
--- /dev/null
+++ b/NetSdrClientAppTests/ArchitectureTests.cs
@@ -0,0 +1,54 @@
+using NetArchTest.Rules;
+using NUnit.Framework;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+
+namespace NetSdrClientAppTests
+{
+ public class ArchitectureTests
+ {
+ [Test]
+ public void App_Should_Not_Depend_On_EchoServer()
+ {
+ var result = Types.InAssembly(typeof(NetSdrClientApp.NetSdrClient).Assembly)
+ .That()
+ .ResideInNamespace("NetSdrClientApp")
+ .ShouldNot()
+ .HaveDependencyOn("EchoServer")
+ .GetResult();
+
+ Assert.That(result.IsSuccessful, Is.True);
+ }
+
+ [Test]
+ public void Messages_Should_Not_Depend_On_Networking()
+ {
+ // Arrange
+ var result = Types.InAssembly(typeof(NetSdrClientApp.Messages.NetSdrMessageHelper).Assembly)
+ .That()
+ .ResideInNamespace("NetSdrClientApp.Messages")
+ .ShouldNot()
+ .HaveDependencyOn("NetSdrClientApp.Networking")
+ .GetResult();
+
+ // Assert
+ Assert.That(result.IsSuccessful, Is.True);
+ }
+
+ [Test]
+ public void Networking_Should_Not_Depend_On_Messages()
+ {
+ // Arrange
+ var result = Types.InAssembly(typeof(NetSdrClientApp.Networking.ITcpClient).Assembly)
+ .That()
+ .ResideInNamespace("NetSdrClientApp.Networking")
+ .ShouldNot()
+ .HaveDependencyOn("NetSdrClientApp.Messages")
+ .GetResult();
+
+ // Assert
+ Assert.That(result.IsSuccessful, Is.True);
+ }
+ }
+}
\ No newline at end of file
diff --git a/NetSdrClientAppTests/NetSdrClientAppTests.csproj b/NetSdrClientAppTests/NetSdrClientAppTests.csproj
index 457aa1e2..9213cef5 100644
--- a/NetSdrClientAppTests/NetSdrClientAppTests.csproj
+++ b/NetSdrClientAppTests/NetSdrClientAppTests.csproj
@@ -15,6 +15,7 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
all
+