Ejemplo n.º 1
0
        public void MapWithOnlyValue()
        {
            // Hand-craft the stream to contain a single entry with just a value.
            var memoryStream = new MemoryStream();
            var output       = new CodedOutputStream(memoryStream);

            output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited);
            var nestedMessage = new ForeignMessage {
                C = 20
            };

            // Size of the entry (tag, size written by WriteMessage, data written by WriteMessage)
            output.WriteLength(2 + nestedMessage.CalculateSize());
            output.WriteTag(2, WireFormat.WireType.LengthDelimited);
            output.WriteMessage(nestedMessage);
            output.Flush();

            MessageParsingHelpers.AssertReadingMessage(
                TestMap.Parser,
                memoryStream.ToArray(),
                parsed =>
            {
                Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]);
            });
        }
Ejemplo n.º 2
0
        public void WriteTo_Message()
        {
            var message1 = new ForeignMessage {
                C = 20
            };
            var message2 = new ForeignMessage {
                C = 25
            };
            uint tag   = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var  field = new RepeatedField <ForeignMessage> {
                message1, message2
            };
            var stream = new MemoryStream();
            var output = new CodedOutputStream(stream);

            field.WriteTo(output, FieldCodec.ForMessage(tag, ForeignMessage.Parser));
            output.Flush();
            stream.Position = 0;

            var input = new CodedInputStream(stream);

            input.AssertNextTag(tag);
            Assert.AreEqual(message1, input.ReadMessage(ForeignMessage.Parser));
            input.AssertNextTag(tag);
            Assert.AreEqual(message2, input.ReadMessage(ForeignMessage.Parser));
            Assert.IsTrue(input.IsAtEnd);
        }
Ejemplo n.º 3
0
        public void AddEntriesFrom_Message()
        {
            var message1 = new ForeignMessage {
                C = 2000
            };
            var message2 = new ForeignMessage {
                C = -250
            };

            uint tag    = WireFormat.MakeTag(10, WireFormat.WireType.LengthDelimited);
            var  stream = new MemoryStream();
            var  output = new CodedOutputStream(stream);

            output.WriteTag(tag);
            output.WriteMessage(message1);
            output.WriteTag(tag);
            output.WriteMessage(message2);
            output.Flush();
            stream.Position = 0;

            var field = new RepeatedField <ForeignMessage>();
            var input = new CodedInputStream(stream);

            input.AssertNextTag(tag);
            field.AddEntriesFrom(input, FieldCodec.ForMessage(tag, ForeignMessage.Parser));
            CollectionAssert.AreEqual(new[] { message1, message2 }, field);
            Assert.IsTrue(input.IsAtEnd);
        }
Ejemplo n.º 4
0
        public void CustomDiagnosticMessage_DirectToStringCall()
        {
            var message = new ForeignMessage {
                C = 31
            };

            Assert.AreEqual("{ \"c\": 31, \"@cInHex\": \"1f\" }", message.ToString());
            Assert.AreEqual("{ \"c\": 31 }", JsonFormatter.Default.Format(message));
        }
Ejemplo n.º 5
0
        public void CustomDiagnosticMessage_DirectToTextWriterCall()
        {
            var message = new ForeignMessage {
                C = 31
            };
            var writer = new StringWriter();

            JsonFormatter.Default.Format(message, writer);
            Assert.AreEqual("{ \"c\": 31 }", writer.ToString());
        }
Ejemplo n.º 6
0
        public void RepeatedAppendRejectsNull()
        {
            TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();

            ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();

            TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(new[] { foreignMessage, null }));
            TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(null));
            TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignEnum(null));
            TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedString(new[] { "one", null }));
            TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedBytes(new[] { TestUtil.ToBytes("one"), null }));
        }
Ejemplo n.º 7
0
        public void SettingRepeatedForeignMessageUsingBuilder()
        {
            TestAllTypes message = TestAllTypes.CreateBuilder()
                                   // Pass builder for foreign message instance.
                                   .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456))
                                   .Build();
            TestAllTypes expectedMessage = TestAllTypes.CreateBuilder()
                                           // Create expected version passing foreign message instance explicitly.
                                           .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456).Build())
                                           .Build();

            Assert.AreEqual(expectedMessage, message);
        }
        public void Clone_ClonesMessages()
        {
            var message = new ForeignMessage {
                C = 20
            };
            var map = new MapField <string, ForeignMessage> {
                { "x", message }
            };
            var clone = map.Clone();

            map["x"].C = 30;
            Assert.AreEqual(20, clone["x"].C);
        }
Ejemplo n.º 9
0
        public void RepeatedAppend()
        {
            TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();

            builder.AddRangeRepeatedInt32(new int[] { 1, 2, 3, 4 });
            builder.AddRangeRepeatedForeignEnum((new ForeignEnum[] { ForeignEnum.FOREIGN_BAZ }));

            ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();

            builder.AddRangeRepeatedForeignMessage(new ForeignMessage[] { foreignMessage });

            TestAllTypes message = builder.Build();

            TestUtil.AssertEqual(message.RepeatedInt32List, new int[] { 1, 2, 3, 4 });
            TestUtil.AssertEqual(message.RepeatedForeignEnumList, new ForeignEnum[] { ForeignEnum.FOREIGN_BAZ });
            Assert.AreEqual(1, message.RepeatedForeignMessageCount);
            Assert.AreEqual(12, message.GetRepeatedForeignMessage(0).C);
        }
Ejemplo n.º 10
0
        public void MapWithOnlyValue()
        {
            // Hand-craft the stream to contain a single entry with just a value.
            var memoryStream = new MemoryStream();
            var output       = CodedOutputStream.CreateInstance(memoryStream);

            output.WriteTag(TestMap.MapInt32ForeignMessageFieldNumber, WireFormat.WireType.LengthDelimited);
            var nestedMessage = new ForeignMessage {
                C = 20
            };

            // Size of the entry (tag, size written by WriteMessage, data written by WriteMessage)
            output.WriteRawVarint32((uint)(nestedMessage.CalculateSize() + 3));
            output.WriteTag(2, WireFormat.WireType.LengthDelimited);
            output.WriteMessage(nestedMessage);
            output.Flush();

            var parsed = TestMap.Parser.ParseFrom(memoryStream.ToArray());

            Assert.AreEqual(nestedMessage, parsed.MapInt32ForeignMessage[0]);
        }
        public void Indexer_ForbidsNullKeys()
        {
            var map = new MapField <string, ForeignMessage>();

            Assert.Throws <ArgumentNullException>(() => map[null] = new ForeignMessage());
        }