mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-01-11 19:44:55 +00:00
feat: Tests for GetProperty and SetProperty
This commit is contained in:
@@ -1,4 +1,6 @@
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using ICD.Common.Utils.Extensions;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace ICD.Common.Utils.Tests.Extensions
|
||||
{
|
||||
@@ -10,5 +12,186 @@ namespace ICD.Common.Utils.Tests.Extensions
|
||||
{
|
||||
Assert.Inconclusive();
|
||||
}
|
||||
|
||||
#region Get/Set Property Tests
|
||||
|
||||
|
||||
private sealed class PropertyTestClass
|
||||
{
|
||||
private readonly InternalPropertyTestClass m_InternalClass;
|
||||
public string PropertyString { get; set; }
|
||||
public int PropertyInt { get; set; }
|
||||
public DateTime PropertyDateTime { get; set; }
|
||||
public InternalPropertyTestClass InternalClass { get { return m_InternalClass; } }
|
||||
|
||||
public PropertyTestClass()
|
||||
{
|
||||
m_InternalClass = new InternalPropertyTestClass();
|
||||
}
|
||||
|
||||
internal sealed class InternalPropertyTestClass
|
||||
{
|
||||
private readonly DeepPropertyTestClass m_DeepClass;
|
||||
|
||||
public string InternalPropertyString { get; set; }
|
||||
public int InternalPropertyInt { get; set; }
|
||||
public DateTime InternalPropertyDateTime { get; set; }
|
||||
|
||||
public DeepPropertyTestClass DeepClass { get { return m_DeepClass; } }
|
||||
|
||||
public InternalPropertyTestClass()
|
||||
{
|
||||
m_DeepClass = new DeepPropertyTestClass();
|
||||
}
|
||||
|
||||
internal sealed class DeepPropertyTestClass
|
||||
{
|
||||
public string DeepPropertyString { get; set; }
|
||||
public int DeepPropertyInt { get; set; }
|
||||
public DateTime DeepPropertyDateTime { get; set; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void GetPropertyTest()
|
||||
{
|
||||
var testClass = new PropertyTestClass();
|
||||
|
||||
int testInt = 15;
|
||||
string testString = "TestString";
|
||||
var testDateTime = DateTime.Parse("1987-08-27");
|
||||
|
||||
testClass.PropertyInt = testInt;
|
||||
testClass.PropertyString = testString;
|
||||
testClass.PropertyDateTime = testDateTime;
|
||||
|
||||
int internalTestInt = 34;
|
||||
string internalTestString = "InternalTestString";
|
||||
var internalTestDateTime = DateTime.Parse("2011-12-05");
|
||||
|
||||
testClass.InternalClass.InternalPropertyInt = internalTestInt;
|
||||
testClass.InternalClass.InternalPropertyString = internalTestString;
|
||||
testClass.InternalClass.InternalPropertyDateTime = internalTestDateTime;
|
||||
|
||||
int deepTestInt = int.MaxValue;
|
||||
string deepTestString = "HelloThere";
|
||||
var deepTestDateTime = DateTime.Parse("1776-07-04");
|
||||
|
||||
testClass.InternalClass.DeepClass.DeepPropertyInt = deepTestInt;
|
||||
testClass.InternalClass.DeepClass.DeepPropertyString = deepTestString;
|
||||
testClass.InternalClass.DeepClass.DeepPropertyDateTime = deepTestDateTime;
|
||||
|
||||
object propertyInt;
|
||||
object propertyString;
|
||||
object propertyDateTime;
|
||||
object fakeObject;
|
||||
|
||||
// Test at first level
|
||||
Assert.True(testClass.GetProperty(out propertyInt, "PropertyInt"), "Couldn't get PropertyInt");
|
||||
Assert.AreEqual(testInt, propertyInt, "PropertyInt wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyString, "PropertyString"), "Couldn't Get PropertyString");
|
||||
Assert.AreEqual(testString, propertyString, "PropertyString wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyDateTime, "PropertyDateTime"), "Couldn't get PropertyDateTime");
|
||||
Assert.AreEqual(testDateTime, propertyDateTime, "PropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.GetProperty(out fakeObject, "FakePropertyName"));
|
||||
|
||||
|
||||
// Test at second level
|
||||
Assert.True(testClass.GetProperty(out propertyInt, "InternalClass", "InternalPropertyInt"), "Couldn't get InternalPropertyInt");
|
||||
Assert.AreEqual(internalTestInt, propertyInt, "InternalPropertyInt wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyString, "InternalClass", "InternalPropertyString"), "Couldn't Get InternalPropertyString");
|
||||
Assert.AreEqual(internalTestString, propertyString, "InternalPropertyString wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyDateTime, "InternalClass", "InternalPropertyDateTime"), "Couldn't get InternalPropertyDateTime");
|
||||
Assert.AreEqual(internalTestDateTime, propertyDateTime, "InternalPropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.GetProperty(out fakeObject, "InternalClass", "FakePropertyName"));
|
||||
|
||||
// Test at third level
|
||||
Assert.True(testClass.GetProperty(out propertyInt, "InternalClass", "DeepClass", "DeepPropertyInt"), "Couldn't get DeepPropertyInt");
|
||||
Assert.AreEqual(deepTestInt, propertyInt, "DeepPropertyInt wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyString, "InternalClass", "DeepClass", "DeepPropertyString"), "Couldn't Get DeepPropertyString");
|
||||
Assert.AreEqual(deepTestString, propertyString, "DeepPropertyString wasn't expected value");
|
||||
Assert.True(testClass.GetProperty(out propertyDateTime, "InternalClass", "DeepClass", "DeepPropertyDateTime"), "Couldn't get DeepPropertyDateTime");
|
||||
Assert.AreEqual(deepTestDateTime, propertyDateTime, "DeepPropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.GetProperty(out fakeObject, "InternalClass", "DeepClass", "FakePropertyName"));
|
||||
|
||||
|
||||
// Test Default/Null Cases
|
||||
var emptyTestClass = new PropertyTestClass();
|
||||
Assert.True(emptyTestClass.GetProperty(out propertyInt, "PropertyInt"), "Couldn't get empty PropertyInt");
|
||||
Assert.AreEqual(default(int), propertyInt, "Empty PropertyInt wasn't expected value");
|
||||
Assert.True(emptyTestClass.GetProperty(out propertyString, "PropertyString"), "Couldn't Get empty PropertyString");
|
||||
Assert.AreEqual(default(string), propertyString, "Empty PropertyString wasn't expected value");
|
||||
Assert.True(emptyTestClass.GetProperty(out propertyDateTime, "PropertyDateTime"), "Couldn't get empty PropertyDateTime");
|
||||
Assert.AreEqual(default(DateTime), propertyDateTime, "Empty PropertyDateTime wasn't expected value");
|
||||
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SetPropertyTest()
|
||||
{
|
||||
var testClass = new PropertyTestClass();
|
||||
|
||||
int testInt = 15;
|
||||
string testString = "TestString";
|
||||
var testDateTime = DateTime.Parse("1987-08-27");
|
||||
|
||||
int internalTestInt = 34;
|
||||
string internalTestString = "InternalTestString";
|
||||
var internalTestDateTime = DateTime.Parse("2011-12-05");
|
||||
|
||||
int deepTestInt = int.MaxValue;
|
||||
string deepTestString = "HelloThere";
|
||||
var deepTestDateTime = DateTime.Parse("1776-07-04");
|
||||
|
||||
// Test at first level
|
||||
Assert.True(testClass.SetProperty(testInt, "PropertyInt"), "Couldn't get PropertyInt");
|
||||
Assert.AreEqual(testInt, testClass.PropertyInt, "PropertyInt wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(testString, "PropertyString"), "Couldn't Get PropertyString");
|
||||
Assert.AreEqual(testString, testClass.PropertyString, "PropertyString wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(testDateTime, "PropertyDateTime"), "Couldn't get PropertyDateTime");
|
||||
Assert.AreEqual(testDateTime, testClass.PropertyDateTime, "PropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.SetProperty("SomeObject", "FakePropertyName"));
|
||||
|
||||
|
||||
// Test at second level
|
||||
Assert.True(testClass.SetProperty(internalTestInt, "InternalClass", "InternalPropertyInt"), "Couldn't get InternalPropertyInt");
|
||||
Assert.AreEqual(internalTestInt, testClass.InternalClass.InternalPropertyInt, "InternalPropertyInt wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(internalTestString, "InternalClass", "InternalPropertyString"), "Couldn't Get InternalPropertyString");
|
||||
Assert.AreEqual(internalTestString, testClass.InternalClass.InternalPropertyString, "InternalPropertyString wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(internalTestDateTime, "InternalClass", "InternalPropertyDateTime"), "Couldn't get InternalPropertyDateTime");
|
||||
Assert.AreEqual(internalTestDateTime, testClass.InternalClass.InternalPropertyDateTime, "InternalPropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.SetProperty("SomeAdditionalObject", "InternalClass", "FakePropertyName"));
|
||||
|
||||
// Test at third level
|
||||
Assert.True(testClass.SetProperty(deepTestInt, "InternalClass", "DeepClass", "DeepPropertyInt"), "Couldn't get DeepPropertyInt");
|
||||
Assert.AreEqual(deepTestInt, testClass.InternalClass.DeepClass.DeepPropertyInt, "DeepPropertyInt wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(deepTestString, "InternalClass", "DeepClass", "DeepPropertyString"), "Couldn't Get DeepPropertyString");
|
||||
Assert.AreEqual(deepTestString, testClass.InternalClass.DeepClass.DeepPropertyString, "DeepPropertyString wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(deepTestDateTime, "InternalClass", "DeepClass", "DeepPropertyDateTime"), "Couldn't get DeepPropertyDateTime");
|
||||
Assert.AreEqual(deepTestDateTime, testClass.InternalClass.DeepClass.DeepPropertyDateTime, "DeepPropertyDateTime wasn't expected value");
|
||||
// Test properties that don't exist
|
||||
Assert.False(testClass.SetProperty("ThisIsAnObjectToo", "InternalClass", "DeepClass", "FakePropertyName"));
|
||||
|
||||
|
||||
// Test Set Default/Null
|
||||
Assert.True(testClass.SetProperty(default(int), "PropertyInt"), "Couldn't get empty PropertyInt");
|
||||
Assert.AreEqual(default(int), testClass.PropertyInt, "Empty PropertyInt wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(default(string), "PropertyString"), "Couldn't Get empty PropertyString");
|
||||
Assert.AreEqual(default(string), testClass.PropertyString, "Empty PropertyString wasn't expected value");
|
||||
Assert.True(testClass.SetProperty(default(DateTime), "PropertyDateTime"), "Couldn't get empty PropertyDateTime");
|
||||
Assert.AreEqual(default(DateTime), testClass.PropertyDateTime, "Empty PropertyDateTime wasn't expected value");
|
||||
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user