I have a class which contains several structs:

public class NavigationMenu
{
    public struct NavigationMenuItem
    {
        public bool Enabled { get; set; }
        public int NumberOfPendingOperations { get; set; }
    }

    public NavigationMenuItem SubmitExpenses { get; set; }
    public NavigationMenuItem ManageExpenses { get; set; }
    public NavigationMenuItem SubmitBudgets { get; set; }
    public NavigationMenuItem ManageBudgets { get; set; }
    public NavigationMenuItem AuthorizeExpenses { get; set; }
    public NavigationMenuItem ApproveExpenses { get; set; }
    public NavigationMenuItem PayExpenses { get; set; }
    public NavigationMenuItem BillExpenses { get; set; }
    public NavigationMenuItem ManageReturnedExpenses { get; set; }
    public NavigationMenuItem ManageIncompleteExpenses { get; set; }
    public NavigationMenuItem ManageOrders { get; set; }
    public NavigationMenuItem ApproveBudgets { get; set; }
    public NavigationMenuItem AdministrateSystem { get; set; }
}

In a unit test I make a function call and compare the results:

NavigationMenu expected = new NavigationMenu();
        expected.SubmitExpenses = new NavigationMenu.NavigationMenuItem { Enabled = true };
        expected.ManageExpenses = new NavigationMenu.NavigationMenuItem { Enabled = true };

        NavigationMenu actual = HomeControllerHelper.GetNavigationMenuByUserRole(userRole);

        Assert.AreEqual(expected, actual);

But the Assert.AreEqual always throws AssertFailedException. The objects are identical, I've verified this using debugger. Please share any ideas. Thanks.

Edit
Report