diff --git a/src/System.Text.Json/tests/Serialization/CyclicTests.cs b/src/System.Text.Json/tests/Serialization/CyclicTests.cs index 58eb152e41ac..19f38562db3b 100644 --- a/src/System.Text.Json/tests/Serialization/CyclicTests.cs +++ b/src/System.Text.Json/tests/Serialization/CyclicTests.cs @@ -17,5 +17,16 @@ public static void WriteCyclicFail() // We don't allow cycles; we throw InvalidOperation instead of an unrecoverable StackOverflow. Assert.Throws(() => JsonSerializer.ToString(obj)); } + + [Fact] + [ActiveIssue(37313)] + public static void WriteTestClassWithArrayOfElementsOfTheSameClassWithoutCyclesDoesNotFail() + { + TestClassWithArrayOfElementsOfTheSameClass obj = new TestClassWithArrayOfElementsOfTheSameClass(); + + //It shouldn't throw when there is no real cycle reference, and just empty object is created + string json = JsonSerializer.ToString(obj); + Assert.Equal(@"{}", json); + } } } diff --git a/src/System.Text.Json/tests/Serialization/TestClasses.cs b/src/System.Text.Json/tests/Serialization/TestClasses.cs index 380fbab122ba..7fac2f2638b1 100644 --- a/src/System.Text.Json/tests/Serialization/TestClasses.cs +++ b/src/System.Text.Json/tests/Serialization/TestClasses.cs @@ -396,6 +396,11 @@ public void Initialize() } } + public class TestClassWithArrayOfElementsOfTheSameClass + { + public TestClassWithArrayOfElementsOfTheSameClass[] Array { get; set; } + } + public class TestClassWithGenericList : ITestClass { public List MyData { get; set; }