예제 #1
0
        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());
        }
예제 #2
0
        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 }));
        }
예제 #3
0
 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());
     }
 }
예제 #4
0
        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
        }