浏览代码

Added unit test to repro issue 28

csharptest 14 年之前
父节点
当前提交
8bd88ea807
共有 2 个文件被更改,包括 22 次插入0 次删除
  1. 9 0
      protos/extest/unittest_issues.proto
  2. 13 0
      src/ProtocolBuffers.Test/ReusableBuilderTest.cs

+ 9 - 0
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;
+}

+ 13 - 0
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()
         {