-
Notifications
You must be signed in to change notification settings - Fork 732
Exception 'StackOverflowException' has been raised while comparing to complex objects #78
Copy link
Copy link
Closed
Milestone
Description
I am getting this exception in 2.2.0 version. Given example in version 2.1.0 works fine.
To reproduce 'StackOverflowException' exception, such code has to be executed:
public class MyCompany
{
public string Name { get; set; }
public MyCompanyLogo Logo { get; set; }
public List<MyUser> Users { get; set; }
}
public class MyUser
{
public string Name { get; set; }
public MyCompany Company { get; set; }
}
public class MyCompanyLogo
{
public string Url { get; set; }
public MyCompany Company { get; set; }
public MyUser CreatedBy { get; set; }
}
[Test]
public void Test2()
{
var company1 = new MyCompany { Name = "Company" };
var user1 = new MyUser { Name = "User", Company = company1 };
company1.Users = new List<MyUser> { user1 };
var logo1 = new MyCompanyLogo { Url = "blank", Company = company1, CreatedBy = user1 };
company1.Logo = logo1;
var company2 = new MyCompany { Name = "Company" };
var user2 = new MyUser { Name = "User", Company = company2 };
company2.Users = new List<MyUser> { user2 };
var logo2 = new MyCompanyLogo { Url = "blank", Company = company2, CreatedBy = user2 };
company2.Logo = logo2;
company1.ShouldBeEquivalentTo(company2, o => o.IgnoringCyclicReferences());
}
This exception occurs then cycle reference is in the list and the problem is in the method ObjectReference.Equals.
For example, I am getting such property path:
Logo.Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0].Company.Users[0]
Fluent Assertions framework can't not detect that Logo.Company.Users[0] and Logo.Company.Users[0].Company.Users[0] is the same.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels