increase MapField test coverage

This commit is contained in:
Jan Tattermusch 2020-04-21 14:44:13 +02:00
parent 7c74e3901b
commit 7f42d7c65b

View File

@ -31,6 +31,7 @@
#endregion
using System;
using System.IO;
using System.Collections.Generic;
using Google.Protobuf.TestProtos;
using NUnit.Framework;
@ -583,6 +584,33 @@ namespace Google.Protobuf.Collections
Assert.False(map.TryGetValue(SampleNaNs.PayloadFlipped, out ignored));
}
[Test]
public void AddEntriesFrom_CodedInputStream()
{
// map will have string key and string value
var keyTag = WireFormat.MakeTag(1, WireFormat.WireType.LengthDelimited);
var valueTag = WireFormat.MakeTag(2, WireFormat.WireType.LengthDelimited);
var memoryStream = new MemoryStream();
var output = new CodedOutputStream(memoryStream);
output.WriteLength(20); // total of keyTag + key + valueTag + value
output.WriteTag(keyTag);
output.WriteString("the_key");
output.WriteTag(valueTag);
output.WriteString("the_value");
output.Flush();
var field = new MapField<string,string>();
var mapCodec = new MapField<string,string>.Codec(FieldCodec.ForString(keyTag, ""), FieldCodec.ForString(valueTag, ""), 10);
var input = new CodedInputStream(memoryStream.ToArray());
// test the legacy overload of AddEntriesFrom that takes a CodedInputStream
field.AddEntriesFrom(input, mapCodec);
CollectionAssert.AreEquivalent(new[] { "the_key" }, field.Keys);
CollectionAssert.AreEquivalent(new[] { "the_value" }, field.Values);
Assert.IsTrue(input.IsAtEnd);
}
#if !NET35
[Test]
public void IDictionaryKeys_Equals_IReadOnlyDictionaryKeys()