public void ClassWithOneNullInnerClassContentsShouldReturnVariance() { // Arrange var inner = new ImmutableClass(2, "test"); var c1 = new MutableClass { Int1 = 1, String1 = "test", Immutable1 = inner }; var c2 = new MutableClass { Int1 = 1, String1 = "test", Immutable1 = null }; // Act List <ObjectVariance> variances = ObjectComparer.GetObjectVariances(c1, c2).ToList(); // Assert Assert.NotEmpty(variances); Assert.Equal(1, variances.Count); Assert.Equal("Immutable1", variances[0].PropertyName); Assert.Equal(inner, variances[0].PropertyValue1); Assert.Null(variances[0].PropertyValue2); // Parent Assert.NotNull(variances[0].ParentVariance); Assert.Null(variances[0].ParentVariance.PropertyName); Assert.Equal(c1, variances[0].ParentVariance.PropertyValue1); Assert.Equal(c2, variances[0].ParentVariance.PropertyValue2); Assert.Null(variances[0].ParentVariance.ParentVariance); }
public void ClassWithOneNullStringShouldReturnVariance() { // Assert var c1 = new MutableClass { Int1 = 1, String1 = null }; var c2 = new MutableClass { Int1 = 1, String1 = "test" }; // Act List <ObjectVariance> variances = ObjectComparer.GetObjectVariances(c1, c2).ToList(); // Assert Assert.NotEmpty(variances); Assert.Equal(1, variances.Count); Assert.Equal("String1", variances[0].PropertyName); Assert.Null(variances[0].PropertyValue1); Assert.Equal("test", variances[0].PropertyValue2); // Parent Assert.NotNull(variances[0].ParentVariance); Assert.Null(variances[0].ParentVariance.PropertyName); Assert.Equal(c1, variances[0].ParentVariance.PropertyValue1); Assert.Equal(c2, variances[0].ParentVariance.PropertyValue2); Assert.Null(variances[0].ParentVariance.ParentVariance); }
static void Main() { #if InvalidCode // これは許されない。c は readonly なので、c 自体の書き換えはできない c = new MutableClass(); #endif // けども、c の中身までは保証してない // 書き換え放題 c.X = 1; c.Y = 2; c.M(3); }
public void ClassWithTwoDifferencesShouldReturnTwoVariances() { // Arrange var c1 = new MutableClass { Int1 = 1, String1 = "Tast" }; var c2 = new MutableClass { Int1 = 2, String1 = "Test" }; // Act List <ObjectVariance> variances = ObjectComparer.GetObjectVariances(c1, c2).ToList(); // Assert Assert.NotEmpty(variances); Assert.Equal(2, variances.Count); // First variance Assert.Equal("Int1", variances[0].PropertyName); Assert.Equal(1, variances[0].PropertyValue1); Assert.Equal(2, variances[0].PropertyValue2); // First's parent Assert.NotNull(variances[0].ParentVariance); Assert.Null(variances[0].ParentVariance.PropertyName); Assert.Equal(c1, variances[0].ParentVariance.PropertyValue1); Assert.Equal(c2, variances[0].ParentVariance.PropertyValue2); // Second variance Assert.Equal("String1", variances[1].PropertyName); Assert.Equal("Tast", variances[1].PropertyValue1); Assert.Equal("Test", variances[1].PropertyValue2); // Second's parent Assert.NotNull(variances[1].ParentVariance); Assert.Null(variances[1].ParentVariance.PropertyName); Assert.Equal(c1, variances[1].ParentVariance.PropertyValue1); Assert.Equal(c2, variances[1].ParentVariance.PropertyValue2); Assert.Null(variances[1].ParentVariance.ParentVariance); }
public void ClassWithNullStringsShouldReturnNoVariance() { // Assert var c1 = new MutableClass { Int1 = 1, String1 = null }; var c2 = new MutableClass { Int1 = 1, String1 = null }; // Act List <ObjectVariance> variances = ObjectComparer.GetObjectVariances(c1, c2).ToList(); // Assert Assert.Empty(variances); }
public void ClassWithSameInnerClassContentsShouldReturnNoVariance() { // Arrange var c1 = new MutableClass { Int1 = 1, String1 = "test", Immutable1 = new ImmutableClass(2, "test2") }; var c2 = new MutableClass { Int1 = 1, String1 = "test", Immutable1 = new ImmutableClass(2, "test2") }; // Act List <ObjectVariance> variances = ObjectComparer.GetObjectVariances(c1, c2).ToList(); // Arrange Assert.Empty(variances); }
public void IncrementInstanceField2(MutableClass m) { m.Field++; }
public int PostIncrementInstanceField2(MutableClass m) { return(m.Field++); }
public int PreIncrementInstanceField2(MutableClass m) { return(++m.Field); }