using Humanizer; using Microsoft.Extensions.Configuration; using Microsoft.VisualStudio.TestTools.UnitTesting; using Phares.Shared; using Serilog; using System.Diagnostics; using System.Reflection; using View_by_Distance.Shared.Models; using View_by_Distance.Shared.Models.Stateless.Methods; using View_by_Distance.Tests.Models; namespace View_by_Distance.Tests; [TestClass] public class UnitTestCalculations { private readonly ILogger _Logger; private readonly AppSettings _AppSettings; private readonly string _WorkingDirectory; private readonly Configuration _Configuration; private readonly IsEnvironment _IsEnvironment; private readonly IConfigurationRoot _ConfigurationRoot; private readonly Property.Models.Configuration _PropertyConfiguration; public UnitTestCalculations() { ILogger logger; AppSettings appSettings; string workingDirectory; Configuration configuration; IsEnvironment isEnvironment; IConfigurationRoot configurationRoot; LoggerConfiguration loggerConfiguration = new(); Property.Models.Configuration propertyConfiguration; Assembly assembly = Assembly.GetExecutingAssembly(); bool debuggerWasAttachedAtLineZero = Debugger.IsAttached || assembly.Location.Contains(@"\bin\Debug"); isEnvironment = new(processesCount: null, nullASPNetCoreEnvironmentIsDevelopment: debuggerWasAttachedAtLineZero, nullASPNetCoreEnvironmentIsProduction: !debuggerWasAttachedAtLineZero); IConfigurationBuilder configurationBuilder = new ConfigurationBuilder() .AddEnvironmentVariables() .AddJsonFile(isEnvironment.AppSettingsFileName); configurationRoot = configurationBuilder.Build(); appSettings = Models.Binder.AppSettings.Get(configurationRoot); workingDirectory = IWorkingDirectory.GetWorkingDirectory(assembly.GetName().Name, appSettings.WorkingDirectoryName); Environment.SetEnvironmentVariable(nameof(workingDirectory), workingDirectory); _ = ConfigurationLoggerConfigurationExtensions.Configuration(loggerConfiguration.ReadFrom, configurationRoot); Log.Logger = loggerConfiguration.CreateLogger(); logger = Log.ForContext(); propertyConfiguration = Property.Models.Binder.Configuration.Get(isEnvironment, configurationRoot); configuration = Models.Binder.Configuration.Get(isEnvironment, configurationRoot, propertyConfiguration); logger.Information("Complete"); _Logger = logger; _AppSettings = appSettings; _Configuration = configuration; _IsEnvironment = isEnvironment; _WorkingDirectory = workingDirectory; _ConfigurationRoot = configurationRoot; _PropertyConfiguration = propertyConfiguration; } [TestMethod] public void TestMethodNull() { Assert.IsFalse(_Logger is null); Assert.IsFalse(_AppSettings is null); Assert.IsFalse(_Configuration is null); Assert.IsFalse(_IsEnvironment is null); Assert.IsFalse(_WorkingDirectory is null); Assert.IsFalse(_ConfigurationRoot is null); Assert.IsFalse(_PropertyConfiguration is null); } [TestMethod] public void TestMethodGetSort() => Assert.IsTrue(new bool[] { true, false }.OrderByDescending(l => l).First()); [TestMethod] public void TestMethodGetAge() { PersonBirthday personBirthday = new(new(1980, 1, 17)); double? age = IPersonBirthday.GetAge(personBirthday); Assert.IsNotNull(age); Assert.IsTrue(age.Value > 42.6092); } [TestMethod] public void TestMethodParse() { Assert.IsTrue(long.TryParse("(637967784888423594)"[1..^1], out long ticks)); Assert.IsTrue(ticks == 637967784888423594); Assert.IsFalse(long.TryParse("(637967784888423594.61)"[1..^1], out ticks)); Assert.IsTrue(ticks == 0); Assert.IsFalse(long.TryParse("(637967784888423594.00)"[1..^1], out ticks)); Assert.IsTrue(ticks == 0); long l = 637967784888423594; double d; d = 0.61; Assert.IsTrue($"({l}{d.ToString("0.00")[1..]})" == "(637967784888423594.61)"); d = 0.6; Assert.IsTrue($"({l}{d.ToString("0.00")[1..]})" == "(637967784888423594.60)"); d = 0.615; Assert.IsTrue($"({l}{d.ToString("0.00")[1..]})" == "(637967784888423594.62)"); d = 0.45; Assert.IsTrue($"({l}{d.ToString("0.00")[1..]})" == "(637967784888423594.45)"); } [TestMethod] public void TestMethodHumanize() { string successfull = $"_ {"ManualCopy".Humanize(LetterCasing.Title)} Successfull"; Assert.IsTrue(successfull == "_ Manual Copy Successfull"); } [TestMethod] public void TestMethodDamn() { // string name; // string[] directories; // string? directoryName; // string checkDirectory; // string sourceDirectory = @"F:\Tmp\Phares\Compare\Images 2022-09-15 - 7390c13 - III - Results\E) Distance\2022-09-15\7680 x 4320\7680x4320 - Hog - Large\()"; // directories = Directory.GetDirectories(sourceDirectory, "*", SearchOption.TopDirectoryOnly); // foreach (string directory in directories) // { // directoryName = Path.GetDirectoryName(directory); // if (directoryName is null) // continue; // name = Path.GetFileName(directory); // if (name.Length is 1 or 20) // continue; // checkDirectory = Path.Combine(directoryName, "b", name); // Directory.Move(directory, checkDirectory); // } // directories = Directory.GetDirectories(Path.Combine(sourceDirectory, "b"), "*", SearchOption.TopDirectoryOnly); // foreach (string directory in directories) // { // directoryName = Path.GetDirectoryName(directory); // if (directoryName is null) // continue; // name = Path.GetFileName(directory); // if (name.Length is 1 or 20) // continue; // checkDirectory = Path.Combine(directoryName, $"{name[..^4]})"); // if (Directory.Exists(checkDirectory)) // continue; // Directory.Move(directory, checkDirectory); // } // Assert.IsTrue(true); } [TestMethod] public void TestMethodDel() { string source = @"F:\Tmp\Phares\Compare\Images 2022-09-15 - 7390c13 - III - Results\E) Distance\2022-09-15\7680 x 4320\7680x4320 - Hog - Large\()\(637992984751968513)"; for (int i = 1; i < 11; i++) _ = IPath.DeleteEmptyDirectories(source); Assert.IsTrue(true); } [TestMethod] public void TestMethodDirectory() { string[] names; names = IPath.GetDirectoryNames(@"C:\Tmp\phares"); Assert.IsTrue(names.Length == 3); names = IPath.GetDirectoryNames(@"C:\Tmp\phares\"); Assert.IsTrue(names.Length == 3); // names = IPath.GetDirectoryNames(@"C:\Tmp\phares\Pictures - Results\E) Distance\2022-09-15\7680 x 4320\7680x4320 - Hog - Large\()\(637991752537712052)\1976-03-08_00\#2019\K\-735727008.520765.jpg"); // Assert.IsTrue(names.Length == 13); // Length = 13 // [0] [string]: // "C:\\" // [1] [string]: // "Tmp" // [2] [string]: // "phares" // [3] [string]: // "Pictures - Results" // [4] [string]: // "E) Distance" // [5] [string]: // "2022-09-15" // [6] [string]: // "7680 x 4320" // [7] [string]: // "7680x4320 - Hog - Large" // [8] [string]: // "()" } [TestMethod] public void TestGetLocation() { double confidence = 0.1D; int left, top, right, bottom, width, height; left = 20; right = 60; top = 40; bottom = 80; width = 100; height = 100; Location location = new(bottom, confidence, left, right, top); _ = new Location(confidence, height, location, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, 1); _ = new Location(bottom, confidence, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width, 1); } [TestMethod] public void TestGetPixelPercentageA() { int? x, y; int normalizedPixelPercentage; int bottom, height, left, right, top, width; string normalizedPixelPercentagePadded; left = 7678; right = 7680; top = 4318; bottom = 4320; width = 7680; height = 4320; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 999999981); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 7679); Assert.IsTrue(y.HasValue && y.Value == 4319); left = 7680; right = 7680; top = 4320; bottom = 4320; width = 7680; height = 4320; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 999999991); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 7679); Assert.IsTrue(y.HasValue && y.Value == 4320); } [TestMethod] public void TestGetPixelPercentageB() { int? x, y; int normalizedPixelPercentage; int bottom, height, left, right, top, width; string normalizedPixelPercentagePadded; left = 20; right = 60; top = 40; bottom = 80; width = 100; height = 100; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 400060002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 40); Assert.IsTrue(y.HasValue && y.Value == 60); left = 45; right = 55; top = 45; bottom = 55; width = 100; height = 100; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 500050002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 50); Assert.IsTrue(y.HasValue && y.Value == 50); } [TestMethod] public void TestGetPixelPercentageC() { int? x, y; int normalizedPixelPercentage; string normalizedPixelPercentagePadded; int bottom, height, left, right, top, width; left = 1; right = 3; top = 1; bottom = 3; width = 100; height = 100; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 20002002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 2); Assert.IsTrue(y.HasValue && y.Value == 2); left = 50; right = 60; top = 50; bottom = 60; width = 100; height = 100; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 550055002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 55); Assert.IsTrue(y.HasValue && y.Value == 55); } [TestMethod] public void TestGetPixelPercentageD() { int? x, y; int normalizedPixelPercentage; int bottom, height, left, right, top, width; string normalizedPixelPercentagePadded; left = 240; right = 260; top = 240; bottom = 260; width = 500; height = 500; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 500050002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 250); Assert.IsTrue(y.HasValue && y.Value == 250); left = 490; right = 510; top = 490; bottom = 510; width = 1000; height = 1000; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 500050002); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 500); Assert.IsTrue(y.HasValue && y.Value == 500); left++; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 500550001); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 500); Assert.IsTrue(y.HasValue && y.Value == 500); left++; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 501050001); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 501); Assert.IsTrue(y.HasValue && y.Value == 500); } [TestMethod] public void TestGetPixelPercentageE() { int? x, y; int normalizedPixelPercentage; int bottom, height, left, right, top, width; string normalizedPixelPercentagePadded; left = 1477; right = 1477; top = 641; bottom = 641; width = 2408; height = 2077; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 613430861); normalizedPixelPercentagePadded = ILocation.GetLeftPadded(Shared.Models.Stateless.ILocation.Digits, normalizedPixelPercentage); (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); Assert.IsTrue(x.HasValue && x.Value == 1477); Assert.IsTrue(y.HasValue && y.Value == 641); } [TestMethod] public void TestGetPixelPercentageF() { int? x, y; int normalizedPixelPercentage; int bottom, height, left, right, top, width; string normalizedPixelPercentagePadded; width = 2048; height = 1365; normalizedPixelPercentagePadded = "617214031"; (x, y) = ILocation.GetXY(Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, width, height, normalizedPixelPercentagePadded); if (x is null || y is null) throw new Exception(); Assert.IsTrue(x.Value == 1264); Assert.IsTrue(y.Value == 192); left = x.Value; right = x.Value; top = y.Value; bottom = y.Value; normalizedPixelPercentage = ILocation.GetNormalizedPixelPercentage(bottom, height, left, Shared.Models.Stateless.ILocation.Digits, Shared.Models.Stateless.ILocation.Factor, right, top, width); Assert.IsTrue(normalizedPixelPercentage == 617214071); double x1, x2, y1, y2; x1 = x.Value; x2 = x.Value; y1 = y.Value; y2 = y.Value - 3; double distance = Math.Sqrt(Math.Pow(x1 - x2, 2) + Math.Pow(y1 - y2, 2)); Assert.IsTrue(distance == 3); } [TestMethod] public void TestGetDistance() { double x1, x2, y1, y2; x1 = 12f; x2 = 13f; y1 = 11f; y2 = 10f; double distance = Math.Sqrt(Math.Pow(x1 - x2, 2) + Math.Pow(y1 - y2, 2)); Assert.IsTrue(distance == 1.4142135623730951); } private static (string?, string, string) Get(string[] segments) { (string?, string, string) result; if ((!segments[0].Contains('#') && (segments[3].Contains('~') || segments[3].Contains('#'))) || (segments[0].Contains('#') && !segments[3].Contains('#'))) result = new(null, segments[3], segments[4]); else result = new(segments[0], segments[3], segments[4]); return result; } [TestMethod] public void TestMoveToVerify() { string http; string? minusOne; string? minusTwo; string[] segments; string[] beforeSegments; string[] matchDirectories; string? personKeyFormattedNew; string? personDisplayDirectory; string personDisplayDirectoryNew; string personDisplayDirectoryNameNew; string personKeyFormattedDirectoryNew; string sourceDirectory = @""; string sourceFile = @"\People - C.tsv"; if (!File.Exists(sourceFile)) throw new Exception(); string[] lines = File.ReadAllLines(sourceFile); for (int i = 0; i < lines.Length; i++) { if (!lines[i].Contains("https://")) continue; segments = lines[i].Split('\t'); beforeSegments = lines[i - 1].Split('\t'); if (beforeSegments.Length < 4 || segments.Length < 5) continue; matchDirectories = Directory.GetDirectories(sourceDirectory, beforeSegments[0], SearchOption.AllDirectories); if (matchDirectories.Length != 1) continue; personDisplayDirectory = Path.GetDirectoryName(matchDirectories[0]); if (personDisplayDirectory is null) continue; minusOne = Path.GetDirectoryName(personDisplayDirectory); if (minusOne is null) continue; minusTwo = Path.GetDirectoryName(minusOne); if (minusTwo is null) continue; (personKeyFormattedNew, personDisplayDirectoryNameNew, http) = Get(segments); if (personKeyFormattedNew is null) continue; personDisplayDirectoryNew = Path.Combine(minusTwo, "Verify", personDisplayDirectoryNameNew); if (Directory.Exists(personDisplayDirectoryNew)) continue; personKeyFormattedDirectoryNew = Path.Combine(personDisplayDirectoryNew, personKeyFormattedNew); Directory.Move(personDisplayDirectory, personDisplayDirectoryNew); _ = Directory.CreateDirectory(personKeyFormattedDirectoryNew); File.WriteAllText(Path.Combine(personKeyFormattedDirectoryNew, "Facebook.txt"), http); } Assert.IsTrue(lines.Any()); } }