public void CanSerializeEnumMessageAndDeserializeWithoutEnum()
        {
            var typeRegistry = new MessageTypeRegistry();
            var serializer   = new RosMessageSerializer(typeRegistry);
            var ms           = new MemoryStream();

            const int    expectedGoalId = 17;
            const byte   expectedStatus = 6;
            const string expectedText   = "test";

            var message = new EnumGoalStatus
            {
                GoalId = expectedGoalId,
                Status = (GoalStatusValue)expectedStatus,
                Text   = expectedText
            };

            serializer.Serialize(message, ms);

            ms.ToArray().Should().NotBeNull();

            ms.Position = 0;
            var deserializedMessage = (GoalStatus)serializer.Deserialize(typeof(GoalStatus), ms);

            deserializedMessage.Should().NotBeNull();

            deserializedMessage.GoalId.Should().Be(expectedGoalId);
            deserializedMessage.Status.Should().Be(expectedStatus);
            deserializedMessage.Text.Should().Be(expectedText);
        }
        public void CanSerializeEquivalentIntMessageReverse()
        {
            var typeRegistry = new MessageTypeRegistry();
            var serializer   = new RosMessageSerializer(typeRegistry);
            var ms           = new MemoryStream();

            const int    expectedValue = 17;
            const string expectedText  = "It could be any string";

            var message = new EquivalentIntMessages.ShortMessage()
            {
                Value = expectedValue,
                Text  = expectedText
            };

            serializer.Serialize(message, ms);

            ms.ToArray().Should().NotBeNull();

            ms.Position = 0;
            var deserializedMessage = (EquivalentIntMessages.IntMessage)serializer.Deserialize(typeof(EquivalentIntMessages.IntMessage), ms);

            deserializedMessage.Should().NotBeNull();
            deserializedMessage.Value.Should().Be(expectedValue);
            deserializedMessage.Text.Should().Be(expectedText);
        }
コード例 #3
0
        public static PartialMessageDeserializer CreateFromStream(Stream stream, RosMessageSerializer serializer)
        {
            var goalMessage = new MemoryStream();

            stream.CopyTo(goalMessage);
            goalMessage.Position = 0;

            return(new PartialMessageDeserializer(goalMessage, serializer));
        }
コード例 #4
0
        // TODO: Avoid default hardcoded initialization
        static RosbagReader()
        {
            var serializer = new RosMessageSerializer(new MessageTypeRegistry());

            serializer.UseUmlRoboticsRos();
            serializer.UseIntegROSActions();

            MessageSerializer = serializer;
            Instance          = new RobSharperRosbagReaderAdapter(serializer);
        }
        public static void UseUmlRoboticsRos(this RosMessageSerializer serializer)
        {
            if (!UmlRoboticsAdapterTypeLoader.AssemblyAvailable)
            {
                return;
            }

            var typeInfoFactory  = UmlRoboticsAdapterTypeLoader.CreateTypeInfoFactory();
            var messageFormatter = UmlRoboticsAdapterTypeLoader.CreateFormatter();

            serializer.MessageTypeRegistry.RosMessageTypeInfoFactories.Add(typeInfoFactory);
            serializer.MessageFormatters.Add(messageFormatter);
        }
        public void CanSerializeEmptyMessage()
        {
            var typeRegistry = new MessageTypeRegistry();
            var serializer   = new RosMessageSerializer(typeRegistry);
            var ms           = new MemoryStream();
            var message      = new Empty();

            serializer.Serialize(message, ms);

            ms.ToArray().Should().NotBeNull();

            ms.Position = 0;
            var deserializedMessage = serializer.Deserialize(message.GetType(), ms);

            deserializedMessage.Should().NotBeNull();
            deserializedMessage.Should().NotBeSameAs(message);
        }
        private void Test <TMessage>(TMessage message) where TMessage : IIntValues
        {
            var serializer = new RosMessageSerializer(new MessageTypeRegistry());
            var ms         = new MemoryStream();

            int[] expectedValues = { 1, 2, 3, 4, 5 };
            int   expectedSum    = 15;

            message.Values = expectedValues;

            serializer.Serialize(message, ms);

            ms.ToArray().Should().NotBeNull();
            ms.Position = 0;

            var deserializedMessage = (TMessage)serializer.Deserialize(typeof(TMessage), ms);

            deserializedMessage.Should().NotBeNull();
            deserializedMessage.Values.All(x => x > 0).Should().BeTrue("all items should be > 0");
            deserializedMessage.Values.Sum().Should().Be(expectedSum, "the sum of all items should be 15");
        }
コード例 #8
0
 public RobSharperRosbagReaderAdapter(RosMessageSerializer serializer)
 {
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
 }
 public static void UseIntegROSActions(this RosMessageSerializer serializer)
 {
     serializer.MessageTypeRegistry.RosMessageTypeInfoFactories.Add(new IntegrosActionTypeInfoFactory());
     serializer.MessageFormatters.Add(new ActionFormatter(serializer));
 }
コード例 #10
0
 private PartialMessageDeserializer(MemoryStream data, RosMessageSerializer serializer)
 {
     _data       = data;
     _serializer = serializer;
 }
コード例 #11
0
        private static object DeserializeActionResult(SerializationContext context, RosBinaryReader reader, IRosMessageTypeInfo messageTypeInfo, RosMessageSerializer serializer)
        {
            var header     = Deserialize <Header>(context, reader);
            var goalStatus = Deserialize <GoalStatus>(context, reader);
            var partialMessageDeserializer = PartialMessageDeserializer.CreateFromStream(context.Stream, serializer);

            return(new ActionResult(header, goalStatus, partialMessageDeserializer));
        }
コード例 #12
0
        private static ActionGoal DeserializeActionGoal(SerializationContext context, RosBinaryReader reader, IRosMessageTypeInfo messageTypeInfo, RosMessageSerializer serializer)
        {
            var header = Deserialize <Header>(context, reader);
            var goalId = Deserialize <GoalID>(context, reader);
            var partialMessageDeserializer = PartialMessageDeserializer.CreateFromStream(context.Stream, serializer);

            return(new ActionGoal(header, goalId, partialMessageDeserializer));
        }
コード例 #13
0
 public ActionFormatter(RosMessageSerializer serializer)
 {
     Serializer = serializer;
 }
コード例 #14
0
 public RobSharperRecordedBagMessage(BagMessage bagMessage, RosMessageSerializer serializer)
 {
     _bagMessage = bagMessage ?? throw new ArgumentNullException(nameof(bagMessage));
     _serializer = serializer ?? throw new ArgumentNullException(nameof(serializer));
 }