//Check instance methods and constructors public static void TestInstanceConstructorsAndMethods(Assert assert) { assert.Expect(26); //Check parameterless constructor var a = new ClassA(); // TEST assert.DeepEqual(a.NumberA, 10, "NumberA 10"); assert.DeepEqual(a.StringA, "Str", "StringA Str"); assert.DeepEqual(a.BoolA, true, "BoolA true"); assert.Ok(a.DoubleA == Double.PositiveInfinity, "DoubleA Double.PositiveInfinity"); assert.DeepEqual(a.DecimalA, -1, "DecimalA Decimal.MinusOne"); assert.Ok(a.Data != null, "Data not null"); assert.DeepEqual(a.Data.Number, 700, "Data.Number 700"); // TEST //Check constructor with parameter assert.Throws(TestSet1FailureHelper.TestConstructor1Failure, "Related should not be null", "Related should not be null"); // TEST //Check constructor with parameter assert.Throws(TestSet1FailureHelper.TestConstructor2Failure, "Should pass six parameters", "Should pass six parameters"); a = new ClassA(150, "151", true, 1.53d, 1.54m, new ClassA.Aux1() { Number = 155 }); assert.DeepEqual(a.NumberA, 150, "NumberA 150"); assert.DeepEqual(a.StringA, "151", "StringA 151"); assert.DeepEqual(a.BoolA, true, "BoolA true"); assert.DeepEqual(a.DoubleA, 1.53, "DoubleA Double.PositiveInfinity"); assert.DeepEqual(a.DecimalA, 1.54, "DecimalA 154"); assert.Ok(a.Data != null, "Data not null"); assert.DeepEqual(a.Data.Number, 155, "Data.Number 155"); // TEST //Check instance methods var b = a.Method1(); assert.Ok(b != null, "b not null"); assert.DeepEqual(b.Number, 2, "b Number 2"); assert.Ok(b.Related != null, "b.Related not null"); assert.DeepEqual(b.Related.Number, 1, "b.Related Number 1"); a.Data = b; assert.DeepEqual(a.Method3(), "2 Has related 1", "Method3 2 Has related 1"); a.Data = null; assert.DeepEqual(a.Method3(), "no data", "Method3 no data"); // TEST //Check [#68] var c68 = new Class68(); assert.DeepEqual(c68.x, 0, "c68.x 0"); assert.DeepEqual(c68.y, 1, "c68.y 1"); // TEST //Check local vars do not get overridden by fields c68.Test(); assert.DeepEqual(c68.x, 0, "c68.x 0"); assert.DeepEqual(c68.y, 1, "c68.y 1"); }