87 lines
2.8 KiB
C#
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);
|
|
}
|
|
//-------------------------------------------------------------------
|
|
}
|
|
}
|