Example #1
0
    // Test "RuntimeHelpers.GetObjectValue".
    public void TestHelpersGetObjectValue()
    {
        // Null's value is itself.
        AssertNull("GetObjectValue (1)",
                   RuntimeHelpers.GetObjectValue(null));

        // Object references map to themselves.
        Object obj = new Object();

        AssertSame("GetObjectValue (2)", obj,
                   RuntimeHelpers.GetObjectValue(obj));

        // Immutable primitive types map to themselves.
        obj = (Object)3;
        AssertSame("GetObjectValue (3)", obj,
                   RuntimeHelpers.GetObjectValue(obj));
        obj = (Object)(AttributeTargets.Assembly);
        AssertSame("GetObjectValue (4)", obj,
                   RuntimeHelpers.GetObjectValue(obj));

        // Other value types are cloned.
        GetObjectValueTest t = new GetObjectValueTest(3);

        obj = (Object)t;
        Object clone = RuntimeHelpers.GetObjectValue(obj);

        AssertNotSame("GetObjectValue (5)", obj, clone);
        AssertEquals("GetObjectValue (6)",
                     ((GetObjectValueTest)obj).value,
                     ((GetObjectValueTest)clone).value);
        obj.GetHashCode();                              // side-effect value.
        AssertEquals("GetObjectValue (7)", 4,
                     ((GetObjectValueTest)obj).value);
        AssertEquals("GetObjectValue (8)", 3,
                     ((GetObjectValueTest)clone).value);
    }
	// Test "RuntimeHelpers.GetObjectValue".
	public void TestHelpersGetObjectValue()
			{
				// Null's value is itself.
				AssertNull("GetObjectValue (1)",
						   RuntimeHelpers.GetObjectValue(null));

				// Object references map to themselves.
				Object obj = new Object();
				AssertSame("GetObjectValue (2)", obj,
						   RuntimeHelpers.GetObjectValue(obj));

				// Immutable primitive types map to themselves.
				obj = (Object)3;
				AssertSame("GetObjectValue (3)", obj,
						   RuntimeHelpers.GetObjectValue(obj));
				obj = (Object)(AttributeTargets.Assembly);
				AssertSame("GetObjectValue (4)", obj,
						   RuntimeHelpers.GetObjectValue(obj));

				// Other value types are cloned.
				GetObjectValueTest t = new GetObjectValueTest(3);
				obj = (Object)t;
				Object clone = RuntimeHelpers.GetObjectValue(obj);
				AssertNotSame("GetObjectValue (5)", obj, clone);
				AssertEquals("GetObjectValue (6)",
							 ((GetObjectValueTest)obj).value,
							 ((GetObjectValueTest)clone).value);
				obj.GetHashCode();	// side-effect value.
				AssertEquals("GetObjectValue (7)", 4,
							 ((GetObjectValueTest)obj).value);
				AssertEquals("GetObjectValue (8)", 3,
							 ((GetObjectValueTest)clone).value);
			}