public void AddDependency_PrivateFieldsInDependencyPath_Supported() { var random = new Random(); var expectedPrice = random.Next(1, 100); var expectedQuantity = random.Next(100, 200); var expectedCost = expectedPrice * expectedQuantity; var mapItems = PathBuildingTestClassWithPrivatePropertiesAndFields.FieldsDependenciesMap.MapItems; Assert.Equal(2, mapItems.Count); var priceFieldPathItemWithRoot = mapItems.Single(mi => mi.PathStrings.Skip(1).Single() == "_priceField"); var quantityFieldPathItemWithRoot = mapItems.Single(mi => mi.PathStrings.Skip(1).Single() == "_quantityField"); var priceFieldPathItem = priceFieldPathItemWithRoot.Ancestor; var quantityFieldPathItem = quantityFieldPathItemWithRoot.Ancestor; Assert.Equal("root", priceFieldPathItemWithRoot.PathStrings.First()); Assert.Equal("root", quantityFieldPathItemWithRoot.PathStrings.First()); //Test compiled getters var obj = PathBuildingTestClassWithPrivatePropertiesAndFields.CreateWithPrivateFields(expectedPrice, expectedQuantity); var actualPrice = (int)((PropertyPathItem <PathBuildingTestClassWithPrivatePropertiesAndFields>)priceFieldPathItem).PropertyOrFieldGetter(obj); var actualQuantity = (int)((PropertyPathItem <PathBuildingTestClassWithPrivatePropertiesAndFields>)quantityFieldPathItem).PropertyOrFieldGetter(obj); Assert.Equal(expectedPrice, actualPrice); Assert.Equal(expectedQuantity, actualQuantity); //Test compiled setter Assert.Equal(0, obj.GetCostField()); priceFieldPathItem.UpdateDependentPropertyOrFieldAction(obj); Assert.Equal(expectedCost, obj.GetCostField()); obj = PathBuildingTestClassWithPrivatePropertiesAndFields.CreateWithPrivateFields(expectedPrice, expectedQuantity); Assert.Equal(0, obj.GetCostField()); quantityFieldPathItem.UpdateDependentPropertyOrFieldAction(obj); Assert.Equal(expectedCost, obj.GetCostField()); }