@ -1,4 +1,6 @@
using Google.Protobuf.TestProtos.Proto2 ;
using System ;
using System.Collections ;
using Google.Protobuf.TestProtos.Proto2 ;
using NUnit.Framework ;
using NUnit.Framework ;
using static Google . Protobuf . TestProtos . Proto2 . UnittestExtensions ;
using static Google . Protobuf . TestProtos . Proto2 . UnittestExtensions ;
@ -79,6 +81,63 @@ namespace Google.Protobuf
Assert . AreEqual ( "abcd" , ExtensionSet . Get ( ref extensionSet , OptionalStringExtension ) ) ;
Assert . AreEqual ( "abcd" , ExtensionSet . Get ( ref extensionSet , OptionalStringExtension ) ) ;
}
}
[Test]
public void GetSingle ( )
{
var extensionValue = new TestAllTypes . Types . NestedMessage ( ) { Bb = 4 2 } ;
var untypedExtension = new Extension < TestAllExtensions , object > ( OptionalNestedMessageExtension . FieldNumber , codec : null ) ;
var wrongTypedExtension = new Extension < TestAllExtensions , TestAllTypes > ( OptionalNestedMessageExtension . FieldNumber , codec : null ) ;
var message = new TestAllExtensions ( ) ;
var value1 = message . GetExtension ( untypedExtension ) ;
Assert . IsNull ( value1 ) ;
message . SetExtension ( OptionalNestedMessageExtension , extensionValue ) ;
var value2 = message . GetExtension ( untypedExtension ) ;
Assert . IsNotNull ( value2 ) ;
var valueBytes = ( ( IMessage ) value2 ) . ToByteArray ( ) ;
var parsedValue = TestProtos . Proto2 . TestAllTypes . Types . NestedMessage . Parser . ParseFrom ( valueBytes ) ;
Assert . AreEqual ( extensionValue , parsedValue ) ;
var ex = Assert . Throws < InvalidOperationException > ( ( ) = > message . GetExtension ( wrongTypedExtension ) ) ;
var expectedMessage = "The stored extension value has a type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes+Types+NestedMessage, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'. " +
"This a different from the requested type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'." ;
Assert . AreEqual ( expectedMessage , ex . Message ) ;
}
[Test]
public void GetRepeated ( )
{
var extensionValue = new TestAllTypes . Types . NestedMessage ( ) { Bb = 4 2 } ;
var untypedExtension = new Extension < TestAllExtensions , IList > ( RepeatedNestedMessageExtension . FieldNumber , codec : null ) ;
var wrongTypedExtension = new RepeatedExtension < TestAllExtensions , TestAllTypes > ( RepeatedNestedMessageExtension . FieldNumber , codec : null ) ;
var message = new TestAllExtensions ( ) ;
var value1 = message . GetExtension ( untypedExtension ) ;
Assert . IsNull ( value1 ) ;
var repeatedField = message . GetOrInitializeExtension < TestAllTypes . Types . NestedMessage > ( RepeatedNestedMessageExtension ) ;
repeatedField . Add ( extensionValue ) ;
var value2 = message . GetExtension ( untypedExtension ) ;
Assert . IsNotNull ( value2 ) ;
Assert . AreEqual ( 1 , value2 . Count ) ;
var valueBytes = ( ( IMessage ) value2 [ 0 ] ) . ToByteArray ( ) ;
var parsedValue = TestProtos . Proto2 . TestAllTypes . Types . NestedMessage . Parser . ParseFrom ( valueBytes ) ;
Assert . AreEqual ( extensionValue , parsedValue ) ;
var ex = Assert . Throws < InvalidOperationException > ( ( ) = > message . GetExtension ( wrongTypedExtension ) ) ;
var expectedMessage = "The stored extension value has a type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes+Types+NestedMessage, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'. " +
"This a different from the requested type of 'Google.Protobuf.TestProtos.Proto2.TestAllTypes, Google.Protobuf.Test.TestProtos, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a7d26565bac4d604'." ;
Assert . AreEqual ( expectedMessage , ex . Message ) ;
}
[Test]
[Test]
public void TestEquals ( )
public void TestEquals ( )
{
{