private static void AssertAccess <T>() where T : new() { var intersect = Intersect <T> .Create(); T source = new T(); T dest = new T(); // Make sure all public and private field/props // are initialized. foreach (var i in intersect) { var randValue = RandGen.GenerateString(10); var setter = i.Setter.GetDelegate <object>(); var getter = i.Getter.GetDelegate <object>(); setter(ref source, randValue); var actual = getter(ref source); Assert.Equal(randValue, actual); } foreach (var i in intersect) { var getter = i.Getter.GetDelegate <object>(); var setter = i.Setter.GetDelegate <object>(); setter(ref dest, getter(ref source)); } foreach (var i in intersect) { var getter = i.Getter.GetDelegate <object>(); Assert.Same(getter(ref source), getter(ref dest)); } }
private static void AssertGettersSetters <T>( int getterCount, int setterCount, int intersectCount) { var getters = ModelAccess <T> .Getters .Values .ToList(); var setters = ModelAccess <T> .Setters .Values .ToList(); var intersect = Intersect <T> .Create(); Assert.Equal(getterCount, getters.Count); Assert.Equal(setterCount, setters.Count); Assert.Equal(intersectCount, intersect.Count); }