Browse Source

finished test

c6burns 6 years ago
parent
commit
3e7010cc8c
3 changed files with 89 additions and 44 deletions
  1. 1 0
      Directory.Build.props
  2. 4 2
      MSBuild/CMake/CMake.Build.targets
  3. 84 42
      MSBuild/ENetTests/UnitTests.cs

+ 1 - 0
Directory.Build.props

@@ -30,6 +30,7 @@
 
     <PropertyGroup>
         <PluginDir>$(SlnDir)build_cmake_enet\</PluginDir>
+        <PluginDir Condition="'$(OSPlatformWindows)' == 'true'">$(PluginDir)$(Configuration)\</PluginDir>
         <PluginArchDir></PluginArchDir>
         <PluginBaseName>enet</PluginBaseName>
         

+ 4 - 2
MSBuild/CMake/CMake.Build.targets

@@ -14,10 +14,11 @@
 
     <PropertyGroup Condition="'$(OSPlatformWindows)' == 'true'">
         <CMakeVSArch></CMakeVSArch>
-        <CMakeVSArch Condition="'$(Configuration)' == 'x86'">-A WIN32</CMakeVSArch>
+        <CMakeVSArch Condition="'$(Platform)' == 'x64'">Win64</CMakeVSArch>
+		<CMakeVSArch Condition="'$(Platform)' == 'AnyCPU'">Win64</CMakeVSArch>
         <CMakeVSToolset></CMakeVSToolset>
         <!--<CMakeVSToolset>-T v141</CMakeVSToolset>-->
-        <CMakeGenerator>-G"Visual Studio 15 2017" $(CMakeVSArch) $(CMakeVSToolset)</CMakeGenerator>
+        <CMakeGenerator>-G"Visual Studio 15 2017 $(CMakeVSArch)" $(CMakeVSToolset)</CMakeGenerator>
     </PropertyGroup>
     <PropertyGroup Condition="'$(OSPlatformWindows)' != 'true'">
         <CMakeConfigBuildType>-DCMAKE_BUILD_TYPE=$(CMakeBuildType)</CMakeConfigBuildType>
@@ -33,6 +34,7 @@
     <Target Name="CMakeConfigTarget" BeforeTargets="Build;VSTest">
         <Message Text="CMake -- configuring $(CMakeBuildType) $(Platform): $(CMakeProjName)" Importance="high" />
         <MakeDir Directories="$(CMakeBinaryDir)" />
+		<Message Text="cmake $(Configuration)" Importance="high" />
         <Message Text="cmake $(CMakeGenerator) $(CMakeConfigBuildType) $(CMakeOpts) $(CMakeSourceDir)" Importance="high" />
         <Exec Command="cmake $(CMakeGenerator) $(CMakeConfigBuildType) $(CMakeOpts) $(CMakeSourceDir)" WorkingDirectory="$(CMakeBinaryDir)" StandardOutputImportance="low" StandardErrorImportance="high" />
         <OnError ExecuteTargets="CMakeBuildFailed" />

+ 84 - 42
MSBuild/ENetTests/UnitTests.cs

@@ -48,20 +48,19 @@ public class UnitTests
     [Test]
     public void SendAndRecv()
     {
-        ushort port = 7777;
-        int maxClients = 1;
+        const ushort port = 7777;
+        const int maxClients = 1;
+        const byte dataVal = 42;
 
         int clientEvents = 0;
         int clientConnected = 0;
         int clientDisconnected = 0;
         int clientTimeout = 0;
         int clientNone = 0;
-        int clientSendData = 0;
         int clientRecvData = 0;
         int serverEvents = 0;
         int serverConnected = 0;
         int serverDisconnected = 0;
-        int serverSendData = 0;
         int serverRecvData = 0;
         int serverTimeout = 0;
         int serverNone = 0;
@@ -75,14 +74,15 @@ public class UnitTests
             address.Port = port;
             server.Create(address, maxClients);
 
-            address.SetHost("0.0.0.0");
+            address.SetIP("127.0.0.1");
             client.Create();
 
-            Peer clientPeer;
+            Peer clientPeer = default;
             Stopwatch sw = Stopwatch.StartNew();
-            while (sw.ElapsedMilliseconds < 10000)
+            while (clientState != ClientState.Disconnected && sw.ElapsedMilliseconds < 10000)
             {
-                while (server.Service(15, out Event netEvent) > 0) {
+                while (server.Service(15, out Event netEvent) > 0)
+                {
                     serverEvents++;
                     switch (netEvent.Type)
                     {
@@ -94,59 +94,101 @@ public class UnitTests
                             break;
                         case EventType.Disconnect:
                             serverDisconnected++;
+                            clientState = ClientState.Disconnected;
                             break;
                         case EventType.Timeout:
                             serverTimeout++;
                             break;
                         case EventType.Receive:
                             serverRecvData++;
+                            Packet packet = default(Packet);
+                            byte[] data = new byte[64];
+                            netEvent.Packet.CopyTo(data);
+
+                            for (int i = 0; i < data.Length; i++) Assert.True(data[i] == dataVal);
+
+                            packet.Create(data);
+                            netEvent.Peer.Send(0, ref packet);
                             netEvent.Packet.Dispose();
                             break;
                     }
                 }
-            }
-            server.Flush();
+                server.Flush();
 
-            while (client.Service(15, out Event netEvent) > 0)
-            {
-                clientEvents++;
-                switch (netEvent.Type)
+                while (client.Service(15, out Event netEvent) > 0)
                 {
-                    case EventType.None:
-                        clientNone++;
-                        break;
-                    case EventType.Connect:
-                        clientConnected++;
-                        break;
-                    case EventType.Disconnect:
-                        clientDisconnected++;
-                        break;
-                    case EventType.Timeout:
-                        clientTimeout++;
-                        break;
-                    case EventType.Receive:
-                        clientRecvData++;
-                        netEvent.Packet.Dispose();
-                        break;
+                    clientEvents++;
+                    switch (netEvent.Type)
+                    {
+                        case EventType.None:
+                            clientNone++;
+                            break;
+                        case EventType.Connect:
+                            clientConnected++;
+                            clientState = ClientState.Connected;
+                            break;
+                        case EventType.Disconnect:
+                            clientDisconnected++;
+                            clientState = ClientState.Disconnected;
+                            break;
+                        case EventType.Timeout:
+                            clientTimeout++;
+                            break;
+                        case EventType.Receive:
+                            clientRecvData++;
+                            byte[] data = new byte[64];
+                            Packet packet = netEvent.Packet;
+                            packet.CopyTo(data);
+                            for (int i = 0; i < data.Length; i++) Assert.True(data[i] == dataVal);
+                            netEvent.Packet.Dispose();
+
+                            clientState = ClientState.RecvData;
+                            break;
+                    }
                 }
-            }
-            client.Flush();
+                client.Flush();
 
-            if (clientState == ClientState.None)
-            {
-                clientState = ClientState.Connecting;
-                clientPeer = client.Connect(address);
-            }
-            else if (clientState == ClientState.Connected)
-            {
+                if (clientState == ClientState.None)
+                {
+                    clientState = ClientState.Connecting;
+                    clientPeer = client.Connect(address);
+                }
+                else if (clientState == ClientState.Connected)
+                {
+                    Packet packet = default(Packet);
+                    byte[] data = new byte[64];
+                    for (int i = 0; i < data.Length; i++) data[i] = dataVal;
+
+                    packet.Create(data);
+                    clientPeer.Send(0, ref packet);
 
+                    clientState = ClientState.SendData;
+                }
+                else if (clientState == ClientState.RecvData)
+                {
+                    clientPeer.DisconnectNow(0);
+                    clientState = ClientState.Disconnecting;
+                }
             }
         }
 
         Assert.True(clientEvents != 0, "client host never generated an event");
         Assert.True(serverEvents != 0, "server host never generated an event");
-        Assert.True(clientState != ClientState.None, "client never changed state");
-        Assert.AreEqual(1, clientConnected, "client did not connect to server");
-        Assert.AreEqual(1, serverConnected, "server did not see client connection");
+
+        Assert.True(clientState == ClientState.Disconnected, "client didn't fully disconnect");
+
+        Assert.AreEqual(1, clientConnected, "client should have connected once");
+        Assert.AreEqual(1, serverConnected, "server should have had one inbound connect");
+
+        Assert.AreEqual(1, clientRecvData, "client should have recvd once");
+        Assert.AreEqual(1, serverRecvData, "server should have recvd once");
+
+        Assert.AreEqual(0, clientTimeout, "client had timeout events");
+        Assert.AreEqual(0, serverTimeout, "server had timeout events");
+
+        Assert.AreEqual(0, clientNone, "client had none events");
+        Assert.AreEqual(0, serverNone, "server had none events");
+
+        Assert.AreEqual(1, serverDisconnected, "server should have had one client disconnect");
     }
 }