using System; using System.Diagnostics; using System.Reflection; using NUnit.Framework; using Sarand.Net.Standard.Base.Utils; namespace Sarand.UnitTests.Core.Base.Utils { [TestFixture] public class SysUtil_Tester { // --- Data Members --- private static readonly String ClassName_GeneratedMemberName_Prefix = "<"; private static readonly String ClassName_CompilerGeneratedClass = ClassName_GeneratedMemberName_Prefix + ">c"; // Calling code class name. // --- Tests --- [Test] public void SysUtil_GetCallerClassName_Test() { // Leading spaces. Assert.That(SysUtil.GetCallerClassName(), Is.Not.EqualTo(null)); Assert.That(SysUtil.GetCallerClassName(), Is.Not.Empty); Assert.That(SysUtil.GetCallerClassName(), Is.EqualTo("SysUtil_Tester")); // Compiler generated context. Func temp = () => { return SysUtil.GetCallerClassName(); }; Assert.That(temp(), Is.EqualTo(ClassName_CompilerGeneratedClass)); // Anonymous function. Assert.That(((Func)(() => SysUtil.GetCallerClassName()))(), Is.EqualTo(ClassName_CompilerGeneratedClass)); Assert.That(new Func(() => SysUtil.GetCallerClassName())(), Is.EqualTo(ClassName_CompilerGeneratedClass)); } // Calling code function name. [Test] public void SysUtil_GetCallerMemberName_Test() { // Leading spaces. Assert.That(SysUtil.GetCallerMemberName(), Is.Not.EqualTo(null)); Assert.That(SysUtil.GetCallerMemberName(), Is.Not.Empty); Assert.That(SysUtil.GetCallerMemberName(), Is.EqualTo("SysUtil_GetCallerMemberName_Test")); Assert.That(SysUtil.GetCallerMemberName(), Is.EqualTo(nameof(SysUtil_GetCallerMemberName_Test))); Assert.That(SysUtil.GetCallerMemberName(), Is.EqualTo(MethodBase.GetCurrentMethod().Name)); // Compiler generated context. Func temp = () => { return SysUtil.GetCallerMemberName(); }; Assert.That(temp(), Is.EqualTo(MethodBase.GetCurrentMethod().Name)); // Anonymous function. Assert.That(((Func)(() => SysUtil.GetCallerMemberName()))(), Is.EqualTo(MethodBase.GetCurrentMethod().Name)); Assert.That(new Func(() => SysUtil.GetCallerMemberName())(), Is.EqualTo(MethodBase.GetCurrentMethod().Name)); } // Calling code file path. [Test] public void SysUtil_GetCallerFilePath_Test() { // Leading spaces. Assert.That(SysUtil.GetCallerFilePath(), Is.Not.EqualTo(null)); Assert.That(SysUtil.GetCallerFilePath(), Is.Not.Empty); Assert.That(SysUtil.GetCallerFilePath(), Is.EqualTo(@"D:\Sarand\Projects\Users\AHoward\VS2022\Common-VS\Workspace\SacsCoreUnitTests\Standard\Base\Utils\SysUtil_Tester.cs")); Assert.That(SysUtil.GetCallerFilePath().EndsWith("SysUtil_Tester.cs"), Is.EqualTo(true)); } // Calling code line number. [Test] public void SysUtil_GetCallerLineNumber_Test() { // Leading spaces. Assert.That(SysUtil.GetCallerLineNumber(), Is.Not.EqualTo(0)); Assert.That(SysUtil.GetCallerLineNumber(), Is.EqualTo((new StackFrame(0, true)).GetFileLineNumber())); } // Calling code file path. [Test] public void SysUtil_GetCallerClassMethod_Test() { // Leading spaces. Assert.That(SysUtil.GetCallerClassMethod(), Is.Not.EqualTo(null)); Assert.That(SysUtil.GetCallerClassMethod(), Is.Not.Empty); Assert.That(SysUtil.GetCallerClassMethod(), Is.EqualTo(GetType().Name + "." + MethodBase.GetCurrentMethod().Name)); Assert.That(SysUtil.GetCallerClassMethod(), Is.EqualTo(nameof(SysUtil_Tester) + "." + nameof(SysUtil_GetCallerClassMethod_Test))); } // Calling code file path. [Test] public void SysUtil_Fn_Test() { // Leading spaces. Assert.That(SysUtil.Fn, Is.Not.EqualTo(null)); Assert.That(SysUtil.Fn, Is.Not.Empty); Assert.That(SysUtil.Fn, Is.EqualTo(GetType().Name + "." + MethodBase.GetCurrentMethod().Name)); Assert.That(SysUtil.Fn, Is.EqualTo(nameof(SysUtil_Tester) + "." + nameof(SysUtil_Fn_Test))); } // --- The End --- } }