summaryrefslogtreecommitdiff
path: root/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs
diff options
context:
space:
mode:
Diffstat (limited to 'ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs')
-rw-r--r--ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs98
1 files changed, 98 insertions, 0 deletions
diff --git a/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs b/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs
new file mode 100644
index 0000000..0ae94e7
--- /dev/null
+++ b/ThirdParty/CsvHelper-master/tests/CsvHelper.Tests/AutoMapping/CircularReferenceTests.cs
@@ -0,0 +1,98 @@
+// Copyright 2009-2022 Josh Close
+// This file is a part of CsvHelper and is dual licensed under MS-PL and Apache 2.0.
+// See LICENSE.txt for details or visit http://www.opensource.org/licenses/ms-pl.html for MS-PL and http://opensource.org/licenses/Apache-2.0 for Apache 2.0.
+// https://github.com/JoshClose/CsvHelper
+using Xunit;
+using System.Globalization;
+
+namespace CsvHelper.Tests.AutoMapping
+{
+
+ public class CircularReferenceTests
+ {
+ [Fact]
+ public void SelfCircularDependencyTest()
+ {
+ var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture);
+ var context = new CsvContext(config);
+ var map = context.AutoMap<SelfCircularA>();
+ }
+
+ [Fact]
+ public void CircularDependencyTest()
+ {
+ var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture);
+ var context = new CsvContext(config);
+ var map = context.AutoMap<ACircular>();
+ Assert.NotNull(map);
+ Assert.Single(map.MemberMaps);
+ Assert.Single(map.ReferenceMaps);
+ Assert.Single(map.ReferenceMaps[0].Data.Mapping.MemberMaps);
+ Assert.Empty(map.ReferenceMaps[0].Data.Mapping.ReferenceMaps);
+ }
+
+ [Fact]
+ public void CircularDependencyWithMultiplePropertiesTest()
+ {
+ var config = new CsvHelper.Configuration.CsvConfiguration(CultureInfo.InvariantCulture);
+ var context = new CsvContext(config);
+ var map = context.AutoMap<A>();
+ Assert.Single(map.MemberMaps);
+ Assert.Equal(3, map.ReferenceMaps.Count);
+ }
+
+ private class SelfCircularA
+ {
+ public SelfCircularB Circular { get; set; }
+ }
+
+ private class SelfCircularB
+ {
+ public SelfCircularB Self { get; set; }
+
+ public SelfCircularC C { get; set; }
+ }
+
+ private class SelfCircularC
+ {
+ public string Id { get; set; }
+ }
+
+ private class ACircular
+ {
+ public string Id { get; set; }
+
+ public BCircular B { get; set; }
+ }
+
+ private class BCircular
+ {
+ public string Id { get; set; }
+
+ public ACircular A { get; set; }
+ }
+
+ private class A
+ {
+ public string Id { get; set; }
+
+ public B B1 { get; set; }
+
+ public B B2 { get; set; }
+
+ public B B3 { get; set; }
+ }
+
+ private class B
+ {
+ public string Id { get; set; }
+
+ public C C { get; set; }
+ }
+
+ private class C
+ {
+ public string Id { get; set; }
+ }
+ }
+}