mirror of
https://github.com/MirrorNetworking/Mirror.git
synced 2024-11-18 02:50:32 +00:00
CommandTests: don't rely on host mode anymore
This commit is contained in:
parent
83049d71f7
commit
bc941a1b9e
@ -62,23 +62,42 @@ class CommandOverloads : NetworkBehaviour
|
||||
public void TheCommand(string _) => ++secondCalled;
|
||||
}
|
||||
|
||||
public class CommandTest : RemoteTestBase
|
||||
public class CommandTest : MirrorTest
|
||||
{
|
||||
NetworkConnectionToClient connectionToClient;
|
||||
|
||||
[SetUp]
|
||||
public override void SetUp()
|
||||
{
|
||||
base.SetUp();
|
||||
// start server/client
|
||||
NetworkServer.Listen(1);
|
||||
ConnectClientBlockingAuthenticatedAndReady(out connectionToClient);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public override void TearDown()
|
||||
{
|
||||
base.TearDown();
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CommandIsSentWithAuthority()
|
||||
{
|
||||
// spawn with owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out AuthorityBehaviour hostBehaviour, NetworkServer.localConnection);
|
||||
CreateNetworkedAndSpawn(out _, out _, out AuthorityBehaviour serverComponent,
|
||||
out _, out _, out AuthorityBehaviour clientComponent,
|
||||
connectionToClient);
|
||||
|
||||
const int someInt = 20;
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += incomingInt =>
|
||||
serverComponent.onSendInt += incomingInt =>
|
||||
{
|
||||
callCount++;
|
||||
Assert.That(incomingInt, Is.EqualTo(someInt));
|
||||
};
|
||||
hostBehaviour.SendInt(someInt);
|
||||
clientComponent.SendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.EqualTo(1));
|
||||
}
|
||||
@ -87,17 +106,18 @@ public void CommandIsSentWithAuthority()
|
||||
public void WarningForCommandSentWithoutAuthority()
|
||||
{
|
||||
// spawn without owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out AuthorityBehaviour hostBehaviour);
|
||||
CreateNetworkedAndSpawn(out _, out _, out AuthorityBehaviour serverComponent,
|
||||
out _, out _, out AuthorityBehaviour clientComponent);
|
||||
|
||||
const int someInt = 20;
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += incomingInt =>
|
||||
serverComponent.onSendInt += incomingInt =>
|
||||
{
|
||||
callCount++;
|
||||
};
|
||||
LogAssert.Expect(LogType.Warning, $"Trying to send command for object without authority. System.Void Mirror.Tests.RemoteAttrributeTest.AuthorityBehaviour::SendInt(System.Int32)");
|
||||
hostBehaviour.SendInt(someInt);
|
||||
clientComponent.SendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.Zero);
|
||||
}
|
||||
@ -107,17 +127,19 @@ public void WarningForCommandSentWithoutAuthority()
|
||||
public void CommandIsSentWithAuthorityWhenIgnoringAuthority()
|
||||
{
|
||||
// spawn with owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour hostBehaviour, NetworkServer.localConnection);
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour serverComponent,
|
||||
out _, out _, out IgnoreAuthorityBehaviour clientComponent,
|
||||
connectionToClient);
|
||||
|
||||
const int someInt = 20;
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += incomingInt =>
|
||||
serverComponent.onSendInt += incomingInt =>
|
||||
{
|
||||
callCount++;
|
||||
Assert.That(incomingInt, Is.EqualTo(someInt));
|
||||
};
|
||||
hostBehaviour.CmdSendInt(someInt);
|
||||
clientComponent.CmdSendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.EqualTo(1));
|
||||
}
|
||||
@ -126,17 +148,18 @@ public void CommandIsSentWithAuthorityWhenIgnoringAuthority()
|
||||
public void CommandIsSentWithoutAuthorityWhenIgnoringAuthority()
|
||||
{
|
||||
// spawn without owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour hostBehaviour);
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour serverComponent,
|
||||
out _, out _, out IgnoreAuthorityBehaviour clientComponent);
|
||||
|
||||
const int someInt = 20;
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += incomingInt =>
|
||||
serverComponent.onSendInt += incomingInt =>
|
||||
{
|
||||
callCount++;
|
||||
Assert.That(incomingInt, Is.EqualTo(someInt));
|
||||
};
|
||||
hostBehaviour.CmdSendInt(someInt);
|
||||
clientComponent.CmdSendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.EqualTo(1));
|
||||
}
|
||||
@ -147,20 +170,21 @@ public void CommandIsSentWithoutAuthorityWhenIgnoringAuthority()
|
||||
// -> those objects don't have a .connectionToServer
|
||||
// -> we broke it when using .connectionToServer instead of
|
||||
// NetworkClient.connection in SendCommandInternal.
|
||||
[Test]
|
||||
[Test, Ignore("TODO")]
|
||||
public void Command_RequiresAuthorityFalse_ForOtherObjectWithoutConnectionToServer()
|
||||
{
|
||||
// spawn without owner (= without connectionToClient)
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour comp);
|
||||
CreateNetworkedAndSpawn(out _, out _, out IgnoreAuthorityBehaviour serverComponent,
|
||||
out _, out _, out IgnoreAuthorityBehaviour clientComponent);
|
||||
|
||||
// setup callback
|
||||
int called = 0;
|
||||
comp.onSendInt += _ => { ++called; };
|
||||
serverComponent.onSendInt += _ => { ++called; };
|
||||
|
||||
// call command. don't require authority.
|
||||
// the object doesn't have a .connectionToServer (like a scene object)
|
||||
Assert.That(comp.connectionToServer, Is.Null);
|
||||
comp.CmdSendInt(0);
|
||||
Assert.That(serverComponent.connectionToServer, Is.Null);
|
||||
clientComponent.CmdSendInt(0);
|
||||
Assert.That(called, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
@ -168,21 +192,19 @@ public void Command_RequiresAuthorityFalse_ForOtherObjectWithoutConnectionToServ
|
||||
public void SenderConnectionIsSetWhenCommandIsRecieved()
|
||||
{
|
||||
// spawn with owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out SenderConnectionBehaviour hostBehaviour, NetworkServer.localConnection);
|
||||
CreateNetworkedAndSpawn(out _, out _, out SenderConnectionBehaviour serverComponent,
|
||||
out _, out _, out SenderConnectionBehaviour clientComponent,
|
||||
connectionToClient);
|
||||
|
||||
const int someInt = 20;
|
||||
NetworkConnectionToClient connectionToClient = NetworkServer.connections[0];
|
||||
Debug.Assert(connectionToClient != null, $"connectionToClient was null, This means that the test is broken and will give the wrong results");
|
||||
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += (incomingInt, incomingConn) =>
|
||||
serverComponent.onSendInt += (incomingInt, incomingConn) =>
|
||||
{
|
||||
callCount++;
|
||||
Assert.That(incomingInt, Is.EqualTo(someInt));
|
||||
Assert.That(incomingConn, Is.EqualTo(connectionToClient));
|
||||
};
|
||||
hostBehaviour.CmdSendInt(someInt);
|
||||
clientComponent.CmdSendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.EqualTo(1));
|
||||
}
|
||||
@ -191,20 +213,18 @@ public void SenderConnectionIsSetWhenCommandIsRecieved()
|
||||
public void SenderConnectionIsSetWhenCommandIsRecievedWithIgnoreAuthority()
|
||||
{
|
||||
// spawn without owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out SenderConnectionIgnoreAuthorityBehaviour hostBehaviour);
|
||||
CreateNetworkedAndSpawn(out _, out _, out SenderConnectionIgnoreAuthorityBehaviour serverComponent,
|
||||
out _, out _, out SenderConnectionIgnoreAuthorityBehaviour clientComponent);
|
||||
|
||||
const int someInt = 20;
|
||||
NetworkConnectionToClient connectionToClient = NetworkServer.connections[0];
|
||||
Debug.Assert(connectionToClient != null, $"connectionToClient was null, This means that the test is broken and will give the wrong results");
|
||||
|
||||
int callCount = 0;
|
||||
hostBehaviour.onSendInt += (incomingInt, incomingConn) =>
|
||||
serverComponent.onSendInt += (incomingInt, incomingConn) =>
|
||||
{
|
||||
callCount++;
|
||||
Assert.That(incomingInt, Is.EqualTo(someInt));
|
||||
Assert.That(incomingConn, Is.EqualTo(connectionToClient));
|
||||
};
|
||||
hostBehaviour.CmdSendInt(someInt);
|
||||
clientComponent.CmdSendInt(someInt);
|
||||
ProcessMessages();
|
||||
Assert.That(callCount, Is.EqualTo(1));
|
||||
}
|
||||
@ -213,16 +233,15 @@ public void SenderConnectionIsSetWhenCommandIsRecievedWithIgnoreAuthority()
|
||||
public void CommandThatThrowsShouldBeCaught()
|
||||
{
|
||||
// spawn with owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out ThrowBehaviour hostBehaviour, NetworkServer.localConnection);
|
||||
CreateNetworkedAndSpawn(out _, out _, out ThrowBehaviour serverComponent,
|
||||
out _, out _, out ThrowBehaviour clientComponent,
|
||||
connectionToClient);
|
||||
|
||||
const int someInt = 20;
|
||||
NetworkConnectionToClient connectionToClient = NetworkServer.connections[0];
|
||||
Debug.Assert(connectionToClient != null, $"connectionToClient was null, This means that the test is broken and will give the wrong results");
|
||||
|
||||
LogAssert.Expect(LogType.Error, new Regex($".*{ThrowBehaviour.ErrorMessage}.*"));
|
||||
Assert.DoesNotThrow(() =>
|
||||
{
|
||||
hostBehaviour.SendThrow(someInt);
|
||||
clientComponent.SendThrow(someInt);
|
||||
ProcessMessages();
|
||||
}, "Processing new message should not throw, the exception from SendThrow should be caught");
|
||||
}
|
||||
@ -234,14 +253,16 @@ public void CommandThatThrowsShouldBeCaught()
|
||||
public void CommandOverloads()
|
||||
{
|
||||
// spawn with owner
|
||||
CreateNetworkedAndSpawn(out _, out _, out CommandOverloads comp, NetworkServer.localConnection);
|
||||
CreateNetworkedAndSpawn(out _, out _, out CommandOverloads serverComponent,
|
||||
out _, out _, out CommandOverloads clientComponent,
|
||||
connectionToClient);
|
||||
|
||||
// call both overloads once
|
||||
comp.TheCommand(42);
|
||||
comp.TheCommand("A");
|
||||
clientComponent.TheCommand(42);
|
||||
clientComponent.TheCommand("A");
|
||||
ProcessMessages();
|
||||
Assert.That(comp.firstCalled, Is.EqualTo(1));
|
||||
Assert.That(comp.secondCalled, Is.EqualTo(1));
|
||||
Assert.That(serverComponent.firstCalled, Is.EqualTo(1));
|
||||
Assert.That(serverComponent.secondCalled, Is.EqualTo(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user