public void TestMessageReadWrites() { var boolVal = true; var intVal = 1337; var floatVal = 4.2f; var floatListVal = new float[] { 1001, 1002 }; var stringVal = "mlagents!"; IncomingMessage incomingMsg; using (var outgoingMsg = new OutgoingMessage()) { outgoingMsg.WriteBoolean(boolVal); outgoingMsg.WriteInt32(intVal); outgoingMsg.WriteFloat32(floatVal); outgoingMsg.WriteString(stringVal); outgoingMsg.WriteFloatList(floatListVal); incomingMsg = new IncomingMessage(outgoingMsg.ToByteArray()); } Assert.AreEqual(boolVal, incomingMsg.ReadBoolean()); Assert.AreEqual(intVal, incomingMsg.ReadInt32()); Assert.AreEqual(floatVal, incomingMsg.ReadFloat32()); Assert.AreEqual(stringVal, incomingMsg.ReadString()); Assert.AreEqual(floatListVal, incomingMsg.ReadFloatList()); }
public void TestMessageReadDefaults() { // Make sure reading past the end of a message will apply defaults. IncomingMessage incomingMsg; using (var outgoingMsg = new OutgoingMessage()) { incomingMsg = new IncomingMessage(outgoingMsg.ToByteArray()); } Assert.AreEqual(false, incomingMsg.ReadBoolean()); Assert.AreEqual(true, incomingMsg.ReadBoolean(defaultValue: true)); Assert.AreEqual(0, incomingMsg.ReadInt32()); Assert.AreEqual(42, incomingMsg.ReadInt32(defaultValue: 42)); Assert.AreEqual(0.0f, incomingMsg.ReadFloat32()); Assert.AreEqual(1337.0f, incomingMsg.ReadFloat32(defaultValue: 1337.0f)); Assert.AreEqual(default(string), incomingMsg.ReadString()); Assert.AreEqual("foo", incomingMsg.ReadString(defaultValue: "foo")); Assert.AreEqual(default(float[]), incomingMsg.ReadFloatList()); Assert.AreEqual(new float[] { 1001, 1002 }, incomingMsg.ReadFloatList(new float[] { 1001, 1002 })); }
internal static byte[] GetByteMessage(SideChannel sideChannel, OutgoingMessage msg) { byte[] message = msg.ToByteArray(); using (var memStream = new MemoryStream()) { using (var binaryWriter = new BinaryWriter(memStream)) { binaryWriter.Write(sideChannel.ChannelId.ToByteArray()); binaryWriter.Write(message.Length); binaryWriter.Write(message); } return(memStream.ToArray()); } }
public void TestOutgoingMessageRawBytes() { // Make sure that SetRawBytes resets the buffer correctly. // Write 8 bytes (an int and float) then call SetRawBytes with 4 bytes var msg = new OutgoingMessage(); msg.WriteInt32(42); msg.WriteFloat32(1.0f); var data = new byte[] { 1, 2, 3, 4 }; msg.SetRawBytes(data); var result = msg.ToByteArray(); Assert.AreEqual(data, result); }
public void TestTimeScaleClamping() { OutgoingMessage pythonMsg = new OutgoingMessage(); pythonMsg.WriteInt32((int)EngineConfigurationChannel.ConfigurationType.TimeScale); pythonMsg.WriteFloat32(1000f); var sideChannel = new EngineConfigurationChannel(); sideChannel.ProcessMessage(pythonMsg.ToByteArray()); #if UNITY_EDITOR // Should be clamped Assert.AreEqual(100.0f, Time.timeScale); #else // Not sure we can run this test from a player, but just in case, shouldn't clamp. Assert.AreEqual(1000.0f, Time.timeScale); #endif }