Files
Common-VS2019/SacsCoreUnitTests/Standard/Base/Generic/ObjectReferences_Tester.cs
T
2021-05-05 15:36:28 +01:00

87 lines
2.8 KiB
C#

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);
}
//-------------------------------------------------------------------
}
}