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);
        }
        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);
        }
コード例 #3
0
        public T DeserializeAs <T>()
        {
            if (_value != null && typeof(T) == _value.GetType())
            {
                return((T)_value);
            }

            _data.Position = 0;
            var value = _serializer.Deserialize <T>(_data);

            _value = value;

            return(value);
        }
コード例 #4
0
        public object GetMessage(Type type)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }

            if (_message == null || _message.GetType() != type)
            {
                _message = _serializer.Deserialize(type, _bagMessage.Message.Data);
            }

            return(_message);
        }
        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");
        }