diff --git a/protos/extest/unittest_issues.proto b/protos/extest/unittest_issues.proto index 459e58f865..21b5566efd 100644 --- a/protos/extest/unittest_issues.proto +++ b/protos/extest/unittest_issues.proto @@ -86,3 +86,12 @@ message NumberField { optional int32 _01 = 1; } +// Issue 28: Circular message dependencies result in null defaults for DefaultInstance + +message MyMessageAReferenceB { + required MyMessageBReferenceA value = 1; +} + +message MyMessageBReferenceA { + required MyMessageAReferenceB value = 1; +} diff --git a/src/ProtocolBuffers.Test/ReusableBuilderTest.cs b/src/ProtocolBuffers.Test/ReusableBuilderTest.cs index 194313cba3..58d643ede7 100644 --- a/src/ProtocolBuffers.Test/ReusableBuilderTest.cs +++ b/src/ProtocolBuffers.Test/ReusableBuilderTest.cs @@ -1,16 +1,29 @@ using System; using System.Collections.Generic; +using System.ComponentModel; using System.Text; using Google.ProtocolBuffers.Collections; using NUnit.Framework; using Google.ProtocolBuffers.TestProtos; using Google.ProtocolBuffers.Serialization; +using UnitTest.Issues.TestProtos; namespace Google.ProtocolBuffers { [TestFixture] public class ReusableBuilderTest { + [Test, Description("Issue 28: Circular message dependencies result in null defaults for DefaultInstance")] + public void EnsureStaticCicularReference() + { + MyMessageAReferenceB ab = MyMessageAReferenceB.DefaultInstance; + Assert.IsNotNull(ab); + Assert.IsNotNull(ab.Value); + MyMessageBReferenceA ba = MyMessageBReferenceA.DefaultInstance; + Assert.IsNotNull(ba); + Assert.IsNotNull(ba.Value); + } + [Test] public void TestModifyDefaultInstance() {