diff --git a/FastGenericNew.Tests/ConstructorOfTests.cs b/FastGenericNew.Tests/ConstructorOfTests.cs new file mode 100644 index 0000000..2524f47 --- /dev/null +++ b/FastGenericNew.Tests/ConstructorOfTests.cs @@ -0,0 +1,58 @@ +using NUnit.Framework; + +namespace FastGenericNew.Tests +{ + public class ConstructorOfTests + { + [SetUp] + public void Setup() + { + } + + #region Reference Types + [Test] + public void CO_Class() + { + var value = ConstructorOf.value; + Assert.NotNull(value); + } + + [Test] + public void CO_Class_PrivateConstructor() + { + var value = ConstructorOf.value; + Assert.NotNull(value); + } + + [Test] + public void CO_Class_Parameters() + { + var value = ConstructorOf.value; + Assert.NotNull(value); + } + #endregion + + #region Value Types + [Test] + public void CO_Struct_IsNull() + { + var value = ConstructorOf.value; + Assert.IsNull(value); + } + + [Test] + public void CO_Struct_PrivateConstructor() + { + var value = ConstructorOf.value; + Assert.NotNull(value); + } + + [Test] + public void CO_Struct_Parameters() + { + var value = ConstructorOf.value; + Assert.NotNull(value); + } + #endregion + } +} \ No newline at end of file diff --git a/FastGenericNew.Tests/FastGenericNew.Tests.csproj b/FastGenericNew.Tests/FastGenericNew.Tests.csproj new file mode 100644 index 0000000..c55e1fb --- /dev/null +++ b/FastGenericNew.Tests/FastGenericNew.Tests.csproj @@ -0,0 +1,19 @@ + + + + net5.0 + + false + + + + + + + + + + + + + diff --git a/FastGenericNew.Tests/FastNewTests.cs b/FastGenericNew.Tests/FastNewTests.cs new file mode 100644 index 0000000..64b2154 --- /dev/null +++ b/FastGenericNew.Tests/FastNewTests.cs @@ -0,0 +1,92 @@ +using NUnit.Framework; + +namespace FastGenericNew.Tests +{ + public class FastNewTests + { + [SetUp] + public void Setup() + { + } + + #region ReferenceType FastNew Tests + [Test] + public void FN_Object() + { + var value = FastNew.CreateInstance(); + Assert.NotNull(value); + } + + [Test] + public void FN_Class() + { + var value = FastNew.CreateInstance(); + Assert.NotNull(value); + } + + [Test] + public void FN_Class_Parameters() + { + const int expectedNum = int.MaxValue; + const string expectedText = "test"; + var value = FastNew.CreateInstance(expectedNum, expectedText); + Assert.Multiple(() => + { + Assert.NotNull(value); + Assert.AreEqual(expectedNum, value.i); + Assert.AreEqual(expectedText, value.text); + }); + } + + [Test] + public void FN_Class_PrivateConstructor() + { + const int expectedNum = int.MaxValue; + const string expectedText = "test"; + var value = FastNew.CreateInstance(expectedNum, expectedText); + Assert.Multiple(() => + { + Assert.NotNull(value); + Assert.AreEqual(expectedNum, value.i); + Assert.AreEqual(expectedText, value.text); + }); + } + #endregion + + #region ValueType FastNew Tests + [Test] + public void FN_Struct() + { + var value = FastNew.CreateInstance(); + Assert.AreEqual(default(TStruct), value); + } + + [Test] + public void FN_Struct_Parameters() + { + const int expectedNum = int.MaxValue; + const string expectedText = "test"; + var value = FastNew.CreateInstance(expectedNum, expectedText); + + Assert.Multiple(() => + { + Assert.AreEqual(expectedNum, value.i); + Assert.AreEqual(expectedText, value.text); + }); + } + + [Test] + public void FN_Struct_PrivateConstructor() + { + const int expectedNum = int.MaxValue; + const string expectedText = "test"; + var value = FastNew.CreateInstance(expectedNum, expectedText); + Assert.Multiple(() => + { + Assert.AreEqual(expectedNum, value.i); + Assert.AreEqual(expectedText, value.text); + }); + } + #endregion + } +} \ No newline at end of file diff --git a/FastGenericNew.Tests/Misc.cs b/FastGenericNew.Tests/Misc.cs new file mode 100644 index 0000000..bc5471a --- /dev/null +++ b/FastGenericNew.Tests/Misc.cs @@ -0,0 +1,56 @@ +namespace FastGenericNew.Tests +{ + public interface TInterface { } + + public class TClass { } + + public sealed class TClassPrivateConstructor + { + public int i; + public string text; + private TClassPrivateConstructor(int i, string text) + { + this.i = i; + this.text = text; + } + } + + public class TClassWithParam + { + public int i; + public string text; + public TClassWithParam(int i, string text) + { + this.i = i; + this.text = text; + } + } + + public abstract class TAbstractClass { } + + public sealed class TDerivedClass : TAbstractClass { } + + public struct TStruct { } + + public struct TStructWithParam + { + public int i; + public string text; + public TStructWithParam(int i, string text) + { + this.i = i; + this.text = text; + } + } + + public struct TStructPrivateConstructor + { + public int i; + public string text; + public TStructPrivateConstructor(int i, string text) + { + this.i = i; + this.text = text; + } + } +} diff --git a/FastGenericNew.Tests/TypeNewTests.cs b/FastGenericNew.Tests/TypeNewTests.cs new file mode 100644 index 0000000..579b19c --- /dev/null +++ b/FastGenericNew.Tests/TypeNewTests.cs @@ -0,0 +1,88 @@ +using NUnit.Framework; + +namespace FastGenericNew.Tests +{ + public class TypeNewTests + { + [SetUp] + public void Setup() + { + } + + #region Object + [Test] + public void TN_Object() + { + var createInstance = TypeNew.GetCreateInstance(typeof(object)); + Assert.NotNull(createInstance); + } + + [Test] + public void TN_Object_Generic() + { + var createInstance = TypeNew.GetCreateInstance(typeof(object)); + Assert.NotNull(createInstance); + } + #endregion + + + #region Reference Types + [Test] + public void TN_Class() + { + var createInstance = TypeNew.GetCreateInstance(typeof(TClass)); + Assert.NotNull(createInstance()); + } + + [Test] + public void TN_Class_Parameters() + { + const int expectedNum = int.MaxValue; + const string expectedText = "test"; + var createInstance = TypeNew.GetCreateInstance(typeof(TClassWithParam), typeof(int), typeof(string)); + Assert.Multiple(() => + { + var obj = createInstance(expectedNum, expectedText); + var value = obj as TClassWithParam; + Assert.IsInstanceOf(obj); + Assert.NotNull(value); + Assert.AreEqual(expectedNum, value.i); + Assert.AreSame(expectedText, value.text); + }); + } + + [Test] + public void TN_Class_Generic() + { + var createInstance = TypeNew.GetCreateInstance(typeof(TClass)); + Assert.NotNull(createInstance()); + } + + [Test] + public void TN_Class_Generic_DerivedClass() + { + var createInstance = TypeNew.GetCreateInstance(typeof(TDerivedClass)); + Assert.NotNull(createInstance()); + } + #endregion + + #region Reference Types + [Test] + public void TN_Struct() + { + + var createInstance = TypeNew.GetCreateInstance(typeof(TStruct)); + Assert.NotNull(createInstance()); + } + + [Test] + public void TN_Struct_Generic() + { + var createInstance = TypeNew.GetCreateInstance(typeof(TStruct)); + Assert.NotNull(createInstance()); + } + + + #endregion + } +}