using System.Drawing; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace Sacs.UnitTests.Net.Standard.Base.Generic { [TestClass] public class ObjectReferences_Tester { //------------------------------------------------------------------- [TestMethod] public void ObjectReferences_ChangeValuesOnReferencedObject () { // size2 starts as a reference to size1. Size size1 = new Size(10, 20); Size size2 = size1; Size size3 = new Size(10, 20); Assert.AreEqual(size1, size2); Assert.AreEqual(size1, size3); Assert.AreEqual(size2, size3); // Change size1 values - doesn't change size2. size1.Width = 100; size1.Height = 200; Assert.AreNotEqual(size1, size2); Assert.AreNotEqual(size1, size3); Assert.AreEqual(size2, size3); } [TestMethod] public void ObjectReferences_ChangeValuesOnObjectReference () { // size2 starts as a reference to size1. Size size1 = new Size(10, 20); Size size2 = size1; Size size3 = new Size(10, 20); Assert.AreEqual(size1, size2); Assert.AreEqual(size1, size3); Assert.AreEqual(size2, size3); // Change size2 values - doesn't change size1. size2.Width = 100; size2.Height = 200; Assert.AreNotEqual(size1, size2); Assert.AreEqual(size1, size3); Assert.AreNotEqual(size2, size3); } //------------------------------------------------------------------- // Modify class value. class TestData { public int a = 0; public int B { get; set; } public Size size1 = new Size(10,20); public Size Size2 { get; set; } = new Size(30, 40); } [TestMethod] public void ObjectReferences_ChangeClassValues () { TestData td1 = new TestData(); TestData td2 = td1; Assert.AreEqual(td1, td2); td1.a++; // td2 is still a reference to td1 with the same values. Assert.AreEqual(td1, td2); Assert.AreEqual(td1.a, td2.a); Assert.AreEqual(td1.B, td2.B); Assert.AreEqual(td1.size1, td2.size1); Assert.AreEqual(td1.Size2, td2.Size2); td1.B++; // td2 is still a reference to td1 with the same values. Assert.AreEqual(td1, td2); Assert.AreEqual(td1.a, td2.a); Assert.AreEqual(td1.B, td2.B); Assert.AreEqual(td1.size1, td2.size1); Assert.AreEqual(td1.Size2, td2.Size2); td1.size1.Width += 10; // td2 is still a reference to td1 with the same values. Assert.AreEqual(td1, td2); Assert.AreEqual(td1.a, td2.a); Assert.AreEqual(td1.B, td2.B); Assert.AreEqual(td1.size1, td2.size1); Assert.AreEqual(td1.Size2, td2.Size2); td1.Size2 = new Size(td1.Size2.Width, td1.Size2.Height + 10); // td2 is still a reference to td1 with the same values. Assert.AreEqual(td1, td2); Assert.AreEqual(td1.a, td2.a); Assert.AreEqual(td1.B, td2.B); Assert.AreEqual(td1.size1, td2.size1); Assert.AreEqual(td1.Size2, td2.Size2); } //------------------------------------------------------------------- } }