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]); }); }
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); }
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); }
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)); }
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()); }
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 })); }
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); }
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); }
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()); }