public void TestRawBytesSideChannel() { var str1 = "Test string"; var str2 = "Test string, second"; var strSender = new RawBytesChannel(new Guid("9a5b8954-4f82-11ea-b238-784f4387d1f7")); var strReceiver = new RawBytesChannel(new Guid("9a5b8954-4f82-11ea-b238-784f4387d1f7")); var dictSender = new Dictionary <Guid, SideChannel> { { strSender.ChannelId, strSender } }; var dictReceiver = new Dictionary <Guid, SideChannel> { { strReceiver.ChannelId, strReceiver } }; strSender.SendRawBytes(Encoding.ASCII.GetBytes(str1)); strSender.SendRawBytes(Encoding.ASCII.GetBytes(str2)); byte[] fakeData = SideChannelManager.GetSideChannelMessage(dictSender); SideChannelManager.ProcessSideChannelData(dictReceiver, fakeData); var messages = strReceiver.GetAndClearReceivedMessages(); Assert.AreEqual(messages.Count, 2); Assert.AreEqual(Encoding.ASCII.GetString(messages[0]), str1); Assert.AreEqual(Encoding.ASCII.GetString(messages[1]), str2); }
public void TestFloatPropertiesSideChannel() { var k1 = "gravity"; var k2 = "length"; int wasCalled = 0; var propA = new FloatPropertiesChannel(); var propB = new FloatPropertiesChannel(); var dictReceiver = new Dictionary <Guid, SideChannel> { { propA.ChannelId, propA } }; var dictSender = new Dictionary <Guid, SideChannel> { { propB.ChannelId, propB } }; propA.RegisterCallback(k1, f => { wasCalled++; }); var tmp = propB.GetWithDefault(k2, 3.0f); Assert.AreEqual(tmp, 3.0f); propB.Set(k2, 1.0f); tmp = propB.GetWithDefault(k2, 3.0f); Assert.AreEqual(tmp, 1.0f); byte[] fakeData = SideChannelManager.GetSideChannelMessage(dictSender); SideChannelManager.ProcessSideChannelData(dictReceiver, fakeData); tmp = propA.GetWithDefault(k2, 3.0f); Assert.AreEqual(tmp, 1.0f); Assert.AreEqual(wasCalled, 0); propB.Set(k1, 1.0f); Assert.AreEqual(wasCalled, 0); fakeData = SideChannelManager.GetSideChannelMessage(dictSender); SideChannelManager.ProcessSideChannelData(dictReceiver, fakeData); Assert.AreEqual(wasCalled, 1); var keysA = propA.Keys(); Assert.AreEqual(2, keysA.Count); Assert.IsTrue(keysA.Contains(k1)); Assert.IsTrue(keysA.Contains(k2)); var keysB = propA.Keys(); Assert.AreEqual(2, keysB.Count); Assert.IsTrue(keysB.Contains(k1)); Assert.IsTrue(keysB.Contains(k2)); }
public void GaussianSamplerTest() { float mean = 3.0f; float stddev = 0.2f; string parameter = "parameter2"; using (var outgoingMsg = new OutgoingMessage()) { outgoingMsg.WriteString(parameter); // 1 indicates this meessage is a Sampler outgoingMsg.WriteInt32(1); outgoingMsg.WriteInt32(k_Seed); outgoingMsg.WriteInt32((int)SamplerType.Gaussian); outgoingMsg.WriteFloat32(mean); outgoingMsg.WriteFloat32(stddev); byte[] message = GetByteMessage(m_Channel, outgoingMsg); SideChannelManager.ProcessSideChannelData(message); } Assert.AreEqual(2.936162f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); Assert.AreEqual(2.951348f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); }
public void UniformSamplerTest() { float min_value = 1.0f; float max_value = 2.0f; string parameter = "parameter1"; using (var outgoingMsg = new OutgoingMessage()) { outgoingMsg.WriteString(parameter); // 1 indicates this meessage is a Sampler outgoingMsg.WriteInt32(1); outgoingMsg.WriteInt32(k_Seed); outgoingMsg.WriteInt32((int)SamplerType.Uniform); outgoingMsg.WriteFloat32(min_value); outgoingMsg.WriteFloat32(max_value); byte[] message = GetByteMessage(m_Channel, outgoingMsg); SideChannelManager.ProcessSideChannelData(message); } Assert.AreEqual(1.208888f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); Assert.AreEqual(1.118017f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); }
public void TestIntegerSideChannel() { var intSender = new TestSideChannel(); var intReceiver = new TestSideChannel(); var dictSender = new Dictionary <Guid, SideChannel> { { intSender.ChannelId, intSender } }; var dictReceiver = new Dictionary <Guid, SideChannel> { { intReceiver.ChannelId, intReceiver } }; intSender.SendInt(4); intSender.SendInt(5); intSender.SendInt(6); byte[] fakeData = SideChannelManager.GetSideChannelMessage(dictSender); SideChannelManager.ProcessSideChannelData(dictReceiver, fakeData); Assert.AreEqual(intReceiver.messagesReceived[0], 4); Assert.AreEqual(intReceiver.messagesReceived[1], 5); Assert.AreEqual(intReceiver.messagesReceived[2], 6); }
public void MultiRangeUniformSamplerTest() { float[] intervals = new float[4]; intervals[0] = 1.2f; intervals[1] = 2f; intervals[2] = 3.2f; intervals[3] = 4.1f; string parameter = "parameter3"; using (var outgoingMsg = new OutgoingMessage()) { outgoingMsg.WriteString(parameter); // 1 indicates this meessage is a Sampler outgoingMsg.WriteInt32(1); outgoingMsg.WriteInt32(k_Seed); outgoingMsg.WriteInt32((int)SamplerType.MultiRangeUniform); outgoingMsg.WriteFloatList(intervals); byte[] message = GetByteMessage(m_Channel, outgoingMsg); SideChannelManager.ProcessSideChannelData(message); } Assert.AreEqual(3.387999f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); Assert.AreEqual(1.294413f, m_Channel.GetWithDefault(parameter, 1.0f), k_Epsilon); }
void UpdateEnvironmentWithInput(UnityRLInputProto rlInput) { SideChannelManager.ProcessSideChannelData(rlInput.SideChannel.ToArray()); SendCommandEvent(rlInput.Command); }