|  |  |  | @ -26,10 +26,13 @@ namespace Adaptation._Tests.Shared; | 
		
	
		
			
				|  |  |  |  | public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected readonly string _DummyRoot; | 
		
	
		
			
				|  |  |  |  |     protected readonly string _Environment; | 
		
	
		
			
				|  |  |  |  |     protected readonly string _HostNameAndPort; | 
		
	
		
			
				|  |  |  |  |     protected readonly bool _HasWaitForProperty; | 
		
	
		
			
				|  |  |  |  |     protected readonly TestContext _TestContext; | 
		
	
		
			
				|  |  |  |  |     protected readonly bool _SkipEquipmentDictionary; | 
		
	
		
			
				|  |  |  |  |     protected readonly string _TestContextPropertiesAsJson; | 
		
	
		
			
				|  |  |  |  |     protected readonly Dictionary<string, CellInstanceVersion> _CellInstanceVersions; | 
		
	
		
			
				|  |  |  |  |     protected readonly Dictionary<string, EquipmentTypeVersion> _EquipmentTypeVersions; | 
		
	
		
			
				|  |  |  |  |     protected readonly Dictionary<string, string> _ParameterizedModelObjectDefinitionTypes; | 
		
	
	
		
			
				
					
					|  |  |  | @ -38,10 +41,13 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |     protected readonly Dictionary<string, IList<ModelObjectParameterDefinition>> _ModelObjectParameters; | 
		
	
		
			
				|  |  |  |  |     protected readonly Dictionary<string, List<Tuple<string, string>>> _EquipmentDictionaryEventDescriptions; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public string DummyRoot => _DummyRoot; | 
		
	
		
			
				|  |  |  |  |     public string Environment => _Environment; | 
		
	
		
			
				|  |  |  |  |     public TestContext TestContext => _TestContext; | 
		
	
		
			
				|  |  |  |  |     public string HostNameAndPort => _HostNameAndPort; | 
		
	
		
			
				|  |  |  |  |     public bool HasWaitForProperty => _HasWaitForProperty; | 
		
	
		
			
				|  |  |  |  |     public bool SkipEquipmentDictionary => _SkipEquipmentDictionary; | 
		
	
		
			
				|  |  |  |  |     public string TestContextPropertiesAsJson => _TestContextPropertiesAsJson; | 
		
	
		
			
				|  |  |  |  |     public Dictionary<string, CellInstanceVersion> CellInstanceVersions => _CellInstanceVersions; | 
		
	
		
			
				|  |  |  |  |     public Dictionary<string, EquipmentTypeVersion> EquipmentTypeVersions => _EquipmentTypeVersions; | 
		
	
		
			
				|  |  |  |  |     public Dictionary<string, IList<ModelObjectParameterDefinition>> ModelObjectParameters => _ModelObjectParameters; | 
		
	
	
		
			
				
					
					|  |  |  | @ -56,17 +62,22 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     void ISMTP.SendNormalPriorityEmailMessage(string subject, string body) => throw new NotImplementedException(); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public AdaptationTesting(TestContext testContext, bool skipEquipmentDictionary) | 
		
	
		
			
				|  |  |  |  |     public AdaptationTesting(string dummyRoot, TestContext testContext, bool skipEquipmentDictionary, string testContextPropertiesAsJson, bool hasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |         string environment = GetEnvironment(testContext); | 
		
	
		
			
				|  |  |  |  |         string hostNameAndPort = GetHostNameAndPort(environment); | 
		
	
		
			
				|  |  |  |  |         _DummyRoot = dummyRoot; | 
		
	
		
			
				|  |  |  |  |         _TestContext = testContext; | 
		
	
		
			
				|  |  |  |  |         _Environment = environment; | 
		
	
		
			
				|  |  |  |  |         _HostNameAndPort = hostNameAndPort; | 
		
	
		
			
				|  |  |  |  |         _HasWaitForProperty = hasWaitForProperty; | 
		
	
		
			
				|  |  |  |  |         _SkipEquipmentDictionary = skipEquipmentDictionary; | 
		
	
		
			
				|  |  |  |  |         _TestContextPropertiesAsJson = testContextPropertiesAsJson; | 
		
	
		
			
				|  |  |  |  |         _CellInstanceVersions = new Dictionary<string, CellInstanceVersion>(); | 
		
	
		
			
				|  |  |  |  |         _EquipmentTypeVersions = new Dictionary<string, EquipmentTypeVersion>(); | 
		
	
		
			
				|  |  |  |  |         _EquipmentTypeVersions = new Dictionary<string, EquipmentTypeVersion>(); | 
		
	
		
			
				|  |  |  |  |         _ParameterizedModelObjectDefinitionTypes = new Dictionary<string, string>(); | 
		
	
		
			
				|  |  |  |  |         _ParameterizedModelObjectDefinitionTypes = new Dictionary<string, string>(); | 
		
	
		
			
				|  |  |  |  |         _EquipmentDictionaryVersions = new Dictionary<string, EquipmentDictionaryVersion>(); | 
		
	
		
			
				|  |  |  |  |         _FileConnectorConfigurations = new Dictionary<string, FileConnectorConfiguration>(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -94,23 +105,28 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected string GetTestResultsDirectory() | 
		
	
		
			
				|  |  |  |  |     public static string GetTestResultsDirectory(string testContextTestResultsDirectory, bool hasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string result = string.Empty; | 
		
	
		
			
				|  |  |  |  |         string testResults = "05_TestResults"; | 
		
	
		
			
				|  |  |  |  |         string checkDirectory = _TestContext.TestResultsDirectory; | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(checkDirectory) || !checkDirectory.Contains(testResults)) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         string rootDirectory = Path.GetPathRoot(checkDirectory); | 
		
	
		
			
				|  |  |  |  |         for (int i = 0; i < int.MaxValue; i++) | 
		
	
		
			
				|  |  |  |  |         string checkDirectory = testContextTestResultsDirectory; | 
		
	
		
			
				|  |  |  |  |         if (hasWaitForProperty && (string.IsNullOrEmpty(checkDirectory) || !checkDirectory.Contains(testResults))) | 
		
	
		
			
				|  |  |  |  |             throw new Exception($"A:{checkDirectory}; B:{testResults};"); | 
		
	
		
			
				|  |  |  |  |         else if (!hasWaitForProperty && (string.IsNullOrEmpty(checkDirectory) || !checkDirectory.Contains(testResults))) | 
		
	
		
			
				|  |  |  |  |             result = testContextTestResultsDirectory; | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             checkDirectory = Path.GetDirectoryName(checkDirectory); | 
		
	
		
			
				|  |  |  |  |             if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == rootDirectory) | 
		
	
		
			
				|  |  |  |  |                 break; | 
		
	
		
			
				|  |  |  |  |             if (checkDirectory.EndsWith(testResults) && Directory.Exists(checkDirectory)) | 
		
	
		
			
				|  |  |  |  |             string rootDirectory = Path.GetPathRoot(checkDirectory); | 
		
	
		
			
				|  |  |  |  |             for (int i = 0; i < int.MaxValue; i++) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 result = checkDirectory; | 
		
	
		
			
				|  |  |  |  |                 break; | 
		
	
		
			
				|  |  |  |  |                 checkDirectory = Path.GetDirectoryName(checkDirectory); | 
		
	
		
			
				|  |  |  |  |                 if (string.IsNullOrEmpty(checkDirectory) || checkDirectory == rootDirectory) | 
		
	
		
			
				|  |  |  |  |                     break; | 
		
	
		
			
				|  |  |  |  |                 if (checkDirectory.EndsWith(testResults) && Directory.Exists(checkDirectory)) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     result = checkDirectory; | 
		
	
		
			
				|  |  |  |  |                     break; | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(result)) | 
		
	
	
		
			
				
					
					|  |  |  | @ -118,6 +134,12 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     private string GetTestResultsDirectory(bool hasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string result = GetTestResultsDirectory(_TestContext.TestResultsDirectory, hasWaitForProperty); | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected static string GetCellInstanceConnectionName(string cellInstanceConnectionName) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string result; | 
		
	
	
		
			
				
					
					|  |  |  | @ -170,28 +192,29 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         return results; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal string[] GetSegments(string methodBaseName) | 
		
	
		
			
				|  |  |  |  |     public static MethodBaseName GetMethodBaseName(string dummyRoot, string environment, bool hasWaitForProperty, string methodBaseName, string testResultsDirectory) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         List<string> results; | 
		
	
		
			
				|  |  |  |  |         string fileFullName; | 
		
	
		
			
				|  |  |  |  |         MethodBaseName result; | 
		
	
		
			
				|  |  |  |  |         string comment; | 
		
	
		
			
				|  |  |  |  |         string[] textFiles; | 
		
	
		
			
				|  |  |  |  |         string fileFullName; | 
		
	
		
			
				|  |  |  |  |         string dummyDirectory; | 
		
	
		
			
				|  |  |  |  |         string withActualCICN; | 
		
	
		
			
				|  |  |  |  |         string separator = "__"; | 
		
	
		
			
				|  |  |  |  |         string textFileDirectory; | 
		
	
		
			
				|  |  |  |  |         string connectionNameAndTicks; | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionName; | 
		
	
		
			
				|  |  |  |  |         string ticks = DateTime.Now.Ticks.ToString(); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionNameFromMethodBaseName; | 
		
	
		
			
				|  |  |  |  |         string testResultsDirectory = GetTestResultsDirectory(); | 
		
	
		
			
				|  |  |  |  |         string[] segments = methodBaseName.Split(new string[] { separator }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |         if (segments[0] != _Environment) | 
		
	
		
			
				|  |  |  |  |         if (segments[0] != environment) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         string rawVersionName = segments[1]; | 
		
	
		
			
				|  |  |  |  |         string rawCellInstanceName = segments[2]; | 
		
	
		
			
				|  |  |  |  |         string cellInstanceVersionName = segments[1].Replace('_', '.'); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceName = segments[2].Replace('_', '-').Replace("_EQPT", "-EQPT"); | 
		
	
		
			
				|  |  |  |  |         string before = string.Concat(_Environment, separator, rawVersionName, separator, cellInstanceName, separator); | 
		
	
		
			
				|  |  |  |  |         string before = string.Concat(environment, separator, rawVersionName, separator, cellInstanceName, separator); | 
		
	
		
			
				|  |  |  |  |         string after = methodBaseName.Substring(before.Length); | 
		
	
		
			
				|  |  |  |  |         string versionDirectory = Path.Combine(testResultsDirectory, _Environment, cellInstanceName, cellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         string versionDirectory = Path.Combine(testResultsDirectory, environment, cellInstanceName, cellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         if (!Directory.Exists(versionDirectory)) | 
		
	
		
			
				|  |  |  |  |             _ = Directory.CreateDirectory(versionDirectory); | 
		
	
		
			
				|  |  |  |  |         comment = segments[segments.Length - 1]; | 
		
	
	
		
			
				
					
					|  |  |  | @ -221,87 +244,76 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |             cellInstanceConnectionNameFromMethodBaseName = after; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         cellInstanceConnectionName = GetCellInstanceConnectionName(cellInstanceConnectionNameFromMethodBaseName); | 
		
	
		
			
				|  |  |  |  |         string methodBaseNameWithActualCICN = GetMethodBaseNameWithActualCICN(methodBaseName, rawCellInstanceName, cellInstanceConnectionNameFromMethodBaseName, cellInstanceConnectionName, ticks); | 
		
	
		
			
				|  |  |  |  |         withActualCICN = GetMethodBaseNameWithActualCICN(methodBaseName, rawCellInstanceName, cellInstanceConnectionNameFromMethodBaseName, cellInstanceConnectionName, ticks); | 
		
	
		
			
				|  |  |  |  |         if (hasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |             dummyDirectory = string.Empty; | 
		
	
		
			
				|  |  |  |  |         else if (string.IsNullOrEmpty(ticks)) | 
		
	
		
			
				|  |  |  |  |             dummyDirectory = string.Empty; | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if (string.IsNullOrEmpty(dummyRoot)) | 
		
	
		
			
				|  |  |  |  |                 throw new Exception($"{nameof(dummyRoot)} is empty!"); | 
		
	
		
			
				|  |  |  |  |             if (!withActualCICN.Contains(ticks)) | 
		
	
		
			
				|  |  |  |  |                 throw new Exception($"{withActualCICN} doesn't contain {ticks}!"); | 
		
	
		
			
				|  |  |  |  |             segments = withActualCICN.Split(new string[] { ticks }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |             dummyDirectory = Path.Combine(dummyRoot, cellInstanceName, ticks, string.Join(null, segments)); | 
		
	
		
			
				|  |  |  |  |             if (!Directory.Exists(dummyDirectory)) | 
		
	
		
			
				|  |  |  |  |                 _ = Directory.CreateDirectory(dummyDirectory); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(ticks)) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             textFiles = Array.Empty<string>(); | 
		
	
		
			
				|  |  |  |  |             fileFullName = Path.Combine(versionDirectory, methodBaseNameWithActualCICN, $"{cellInstanceConnectionNameFromMethodBaseName}.json"); | 
		
	
		
			
				|  |  |  |  |             textFileDirectory = string.Empty; | 
		
	
		
			
				|  |  |  |  |             fileFullName = Path.Combine(versionDirectory, withActualCICN, $"{cellInstanceConnectionNameFromMethodBaseName}.json"); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             segments = methodBaseNameWithActualCICN.Split(new string[] { ticks }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |             string textDirectory = Path.Combine(versionDirectory, segments[0], string.Concat(ticks, segments[1])); | 
		
	
		
			
				|  |  |  |  |             segments = withActualCICN.Split(new string[] { ticks }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |             textFileDirectory = Path.Combine(versionDirectory, segments[0], string.Concat(ticks, segments[1])); | 
		
	
		
			
				|  |  |  |  |             fileFullName = Path.Combine(versionDirectory, segments[0], $"{cellInstanceConnectionNameFromMethodBaseName}.json"); | 
		
	
		
			
				|  |  |  |  |             if (!Directory.Exists(textDirectory)) | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         result = new(after, before, cellInstanceConnectionName, cellInstanceConnectionNameFromMethodBaseName, cellInstanceName, cellInstanceVersionName, comment, dummyDirectory, fileFullName, rawCellInstanceName, rawVersionName, separator, testResultsDirectory, textFileDirectory, ticks, versionDirectory, withActualCICN); | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     private MethodBaseName GetMethodBaseName(MethodBase methodBase) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         MethodBaseName result; | 
		
	
		
			
				|  |  |  |  |         string testResultsDirectory = GetTestResultsDirectory(_HasWaitForProperty); | 
		
	
		
			
				|  |  |  |  |         result = GetMethodBaseName(_DummyRoot, _Environment, _HasWaitForProperty, methodBase.Name, testResultsDirectory); | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     private string[] GetTextFiles(MethodBaseName mbn) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string[] results; | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(mbn.TextFileDirectory)) | 
		
	
		
			
				|  |  |  |  |             results = Array.Empty<string>(); | 
		
	
		
			
				|  |  |  |  |         else if (!Directory.Exists(mbn.TextFileDirectory)) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             results = Array.Empty<string>(); | 
		
	
		
			
				|  |  |  |  |             if (!_HasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |                 _ = Directory.CreateDirectory(mbn.TextFileDirectory); | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 textFiles = Array.Empty<string>(); | 
		
	
		
			
				|  |  |  |  |                 string renameDirectory = Path.Combine(Path.GetDirectoryName(textDirectory), $"_Rename - {Path.GetFileName(textDirectory)}"); | 
		
	
		
			
				|  |  |  |  |                 string renameDirectory = Path.Combine(Path.GetDirectoryName(mbn.TextFileDirectory), $"_Rename - {Path.GetFileName(mbn.TextFileDirectory)}"); | 
		
	
		
			
				|  |  |  |  |                 _ = Directory.CreateDirectory(renameDirectory); | 
		
	
		
			
				|  |  |  |  |                 _ = Process.Start("explorer.exe", renameDirectory); | 
		
	
		
			
				|  |  |  |  |                 File.WriteAllText(Path.Combine(renameDirectory, $"{nameof(FileConnectorConfiguration.SourceFileFilter)}.txt"), string.Empty); | 
		
	
		
			
				|  |  |  |  |                 File.WriteAllText(Path.Combine(renameDirectory, $"{nameof(FileConnectorConfiguration.SourceFileLocation)}.txt"), string.Empty); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             results = Directory.GetFiles(mbn.TextFileDirectory, "*.txt", SearchOption.TopDirectoryOnly); | 
		
	
		
			
				|  |  |  |  |             if (!string.IsNullOrEmpty(mbn.Ticks) && _HasWaitForProperty && !results.Any()) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 textFiles = Directory.GetFiles(textDirectory, "*.txt", SearchOption.TopDirectoryOnly); | 
		
	
		
			
				|  |  |  |  |                 if (!textFiles.Any()) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     _ = Process.Start("explorer.exe", textDirectory); | 
		
	
		
			
				|  |  |  |  |                     File.WriteAllText(Path.Combine(textDirectory, "_ Why.why"), string.Empty); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |                 _ = Process.Start("explorer.exe", mbn.TextFileDirectory); | 
		
	
		
			
				|  |  |  |  |                 File.WriteAllText(Path.Combine(mbn.TextFileDirectory, "_ Why.why"), string.Empty); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         results = new List<string> | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 _Environment, | 
		
	
		
			
				|  |  |  |  |                 rawCellInstanceName, | 
		
	
		
			
				|  |  |  |  |                 cellInstanceName, | 
		
	
		
			
				|  |  |  |  |                 cellInstanceVersionName, | 
		
	
		
			
				|  |  |  |  |                 cellInstanceConnectionNameFromMethodBaseName, | 
		
	
		
			
				|  |  |  |  |                 cellInstanceConnectionName, | 
		
	
		
			
				|  |  |  |  |                 ticks, | 
		
	
		
			
				|  |  |  |  |                 comment, | 
		
	
		
			
				|  |  |  |  |                 fileFullName | 
		
	
		
			
				|  |  |  |  |             }; | 
		
	
		
			
				|  |  |  |  |         results.AddRange(textFiles); | 
		
	
		
			
				|  |  |  |  |         return results.ToArray(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal string[] GetSegments(MethodBase methodBase) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string[] results = GetSegments(methodBase.Name); | 
		
	
		
			
				|  |  |  |  |         return results; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetEnvironment(string[] segments) => segments[0]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetRawCellInstanceName(string[] segments) => segments[1]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetCellInstanceName(string[] segments) => segments[2]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetCellInstanceVersionName(string[] segments) => segments[3]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetCellInstanceConnectionNameFromMethodBaseName(string[] segments) => segments[4]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetCellInstanceConnectionName(string[] segments) => segments[5]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetTicks(string[] segments) => segments[6]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string GetComment(string[] segments) => segments[7]; | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static FileInfo GetFileName(string[] segments) => new(segments[8]); | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     internal static string[] GetTextFiles(string[] segments) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         List<string> results = new(); | 
		
	
		
			
				|  |  |  |  |         if (segments.Length > 8) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             for (int i = 9; i < segments.Length; i++) | 
		
	
		
			
				|  |  |  |  |                 results.Add(segments[i]); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         return results.ToArray(); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected static Stream ToStream(string @this) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         MemoryStream memoryStream = new(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -331,7 +343,7 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         return result as T; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected static CellInstanceVersion GetCellInstanceVersion(string url) | 
		
	
		
			
				|  |  |  |  |     public static CellInstanceVersion GetCellInstanceVersion(string url) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         CellInstanceVersion result; | 
		
	
		
			
				|  |  |  |  |         byte[] byteArray; | 
		
	
	
		
			
				
					
					|  |  |  | @ -466,6 +478,7 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                     AppendLine("#pragma warning disable CA2254"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("#pragma warning disable IDE0060"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine(). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("internal static string DummyRoot { get; private set; }"). | 
		
	
		
			
				|  |  |  |  |                     Append("internal static ").Append(cellInstanceNameWithoutHyphen).AppendLine(" EAFLoggingUnitTesting { get; private set; }"); | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |                 throw new Exception(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -474,13 +487,15 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |             else if (i == 1) | 
		
	
		
			
				|  |  |  |  |                 _ = stringBuilder. | 
		
	
		
			
				|  |  |  |  |                     AppendLine(). | 
		
	
		
			
				|  |  |  |  |                     Append("public ").Append(cellInstanceNameWithoutHyphen).AppendLine("() : base(testContext: null, declaringType: null, skipEquipmentDictionary: false)"). | 
		
	
		
			
				|  |  |  |  |                     Append("static ").Append(cellInstanceNameWithoutHyphen).AppendLine("() => DummyRoot = @\"\\\\messv02ecc1.ec.local\\EC_Characterization_Si\\Dummy\";"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine(). | 
		
	
		
			
				|  |  |  |  |                     Append("public ").Append(cellInstanceNameWithoutHyphen).AppendLine("() : base(DummyRoot, testContext: null, declaringType: null, skipEquipmentDictionary: false)"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("{"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("if (EAFLoggingUnitTesting is null)"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("throw new Exception();"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("}"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine(). | 
		
	
		
			
				|  |  |  |  |                     Append("public ").Append(cellInstanceNameWithoutHyphen).AppendLine("(TestContext testContext) : base(testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)"). | 
		
	
		
			
				|  |  |  |  |                     Append("public ").Append(cellInstanceNameWithoutHyphen).AppendLine("(TestContext testContext) : base(DummyRoot, testContext, new StackFrame().GetMethod().DeclaringType, skipEquipmentDictionary: false)"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("{"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine("}"). | 
		
	
		
			
				|  |  |  |  |                     AppendLine(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -541,6 +556,9 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                 if (i == 2) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     _ = stringBuilder. | 
		
	
		
			
				|  |  |  |  |                         AppendLine("#if true"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("[Ignore]"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("#endif"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("[TestMethod]"). | 
		
	
		
			
				|  |  |  |  |                         Append("public void ").Append(methodName).Append("() => ").Append('_').Append(cellInstanceNameWithoutHyphen).Append('.').Append(methodName).AppendLine("();").AppendLine(); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
	
		
			
				
					
					|  |  |  | @ -550,13 +568,16 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                         throw new Exception("Versions should match!"); | 
		
	
		
			
				|  |  |  |  |                     equipmentTypeName = componentsCellComponentCellComponent.Equipment.EquipmentType.Name; | 
		
	
		
			
				|  |  |  |  |                     _ = stringBuilder. | 
		
	
		
			
				|  |  |  |  |                         AppendLine("#if true"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("[Ignore]"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("#endif"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("[TestMethod]"). | 
		
	
		
			
				|  |  |  |  |                         Append("public void ").Append(methodName).AppendLine("()"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("{"). | 
		
	
		
			
				|  |  |  |  |                         Append("string check = \"").Append(check.Split('\\').Last()).AppendLine("\";"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("MethodBase methodBase = new StackFrame().GetMethod();"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, \" - Getting configuration\"));"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("_ = Shared.AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("_ = AdaptationTesting.GetWriteConfigurationGetFileRead(methodBase, check, EAFLoggingUnitTesting.AdaptationTesting);"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("EAFLoggingUnitTesting.Logger.LogInformation(string.Concat(methodBase.Name, \" - Exit\"));"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine("}"). | 
		
	
		
			
				|  |  |  |  |                         AppendLine(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -600,14 +621,10 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         result = JsonSerializer.Deserialize<FileConnectorConfiguration>(json, jsonSerializerOptions); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(result.SourceFileFilter)) | 
		
	
		
			
				|  |  |  |  |             result.SourceFileFilter = string.Empty; | 
		
	
		
			
				|  |  |  |  |         if (result.ErrorTargetFileLocation is null) | 
		
	
		
			
				|  |  |  |  |             result.ErrorTargetFileLocation = string.Empty; | 
		
	
		
			
				|  |  |  |  |         if (result.SourceFileLocation is null) | 
		
	
		
			
				|  |  |  |  |             result.SourceFileLocation = string.Empty; | 
		
	
		
			
				|  |  |  |  |         if (result.TargetFileLocation is null) | 
		
	
		
			
				|  |  |  |  |             result.TargetFileLocation = string.Empty; | 
		
	
		
			
				|  |  |  |  |         if (result.FolderAgeCheckIndividualSubFolders is null) | 
		
	
		
			
				|  |  |  |  |             result.FolderAgeCheckIndividualSubFolders = false; | 
		
	
		
			
				|  |  |  |  |         result.ErrorTargetFileLocation ??= string.Empty; | 
		
	
		
			
				|  |  |  |  |         result.SourceFileLocation ??= string.Empty; | 
		
	
		
			
				|  |  |  |  |         result.TargetFileLocation ??= string.Empty; | 
		
	
		
			
				|  |  |  |  |         result.FolderAgeCheckIndividualSubFolders ??= false; | 
		
	
		
			
				|  |  |  |  |         result.ConnectionSettings = new List<ConnectionSetting>(); | 
		
	
		
			
				|  |  |  |  |         result.SourceFileFilters = result.SourceFileFilter.Split('|').ToList(); | 
		
	
		
			
				|  |  |  |  |         if (componentsCellComponentCellComponent.Equipment?.ConnectionSettings is not null) | 
		
	
	
		
			
				
					
					|  |  |  | @ -857,7 +874,7 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     protected Dictionary<string, object> GetKeyValuePairs(string cellInstanceName, string cellInstanceVersionName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, List<Tuple<string, string>> equipmentDictionaryIsAlwaysEnabledEvents) | 
		
	
		
			
				|  |  |  |  |     protected Dictionary<string, object> GetKeyValuePairs(string cellInstanceName, string cellInstanceVersionName, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList<ModelObjectParameterDefinition> modelObjectParameters, string equipmentDictionaryName, List<Tuple<string, string>> equipmentDictionaryIsAlwaysEnabledEvents, int edaConnectionPortNumber) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         Dictionary<string, object> results = new() | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
	
		
			
				
					
					|  |  |  | @ -866,6 +883,7 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |             { nameof(cellInstanceName), cellInstanceName }, | 
		
	
		
			
				|  |  |  |  |             { nameof(equipmentTypeName), equipmentTypeName }, | 
		
	
		
			
				|  |  |  |  |             { nameof(cellInstanceVersionName), cellInstanceVersionName }, | 
		
	
		
			
				|  |  |  |  |             { nameof(edaConnectionPortNumber), edaConnectionPortNumber }, | 
		
	
		
			
				|  |  |  |  |             { nameof(equipmentDictionaryName), equipmentDictionaryName }, | 
		
	
		
			
				|  |  |  |  |             { nameof(cellInstanceConnectionName), cellInstanceConnectionName }, | 
		
	
		
			
				|  |  |  |  |             { nameof(FileConnectorConfiguration), fileConnectorConfiguration }, | 
		
	
	
		
			
				
					
					|  |  |  | @ -879,32 +897,26 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |     public string[] GetCSharpText(string testName) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string[] results; | 
		
	
		
			
				|  |  |  |  |         string[] segments = GetSegments(testName); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = GetFileName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceName = GetCellInstanceName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceVersionName = GetCellInstanceVersionName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionName = GetCellInstanceConnectionName(segments); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(cellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |         string testResultsDirectory = GetTestResultsDirectory(_HasWaitForProperty); | 
		
	
		
			
				|  |  |  |  |         MethodBaseName mbn = GetMethodBaseName(_DummyRoot, _Environment, _HasWaitForProperty, testName, testResultsDirectory); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = new(mbn.FileFullName); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(mbn.CellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |             _ = Directory.CreateDirectory(fileInfo.Directory.FullName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(cellInstanceName, cellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         results = GetCSharpTextB(fileInfo, cellInstanceName, cellInstanceVersionName, cellInstanceVersionTuple.Item2); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(mbn.CellInstanceName, mbn.CellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         results = GetCSharpTextB(fileInfo, mbn.CellInstanceName, mbn.CellInstanceVersionName, cellInstanceVersionTuple.Item2); | 
		
	
		
			
				|  |  |  |  |         return results; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public string[] GetConfiguration(MethodBase methodBase) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string[] results; | 
		
	
		
			
				|  |  |  |  |         string[] segments = GetSegments(methodBase.Name); | 
		
	
		
			
				|  |  |  |  |         string ticks = GetTicks(segments); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = GetFileName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceName = GetCellInstanceName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceVersionName = GetCellInstanceVersionName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionName = GetCellInstanceConnectionName(segments); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(cellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |         MethodBaseName mbn = GetMethodBaseName(methodBase); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = new(mbn.FileFullName); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(mbn.CellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |             _ = Directory.CreateDirectory(fileInfo.Directory.FullName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(cellInstanceName, cellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, FileConnectorConfiguration> fileConnectorConfigurationTuple = GetFileConnectorConfigurationTuple(cellInstanceVersionTuple, cellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(ticks) && fileConnectorConfigurationTuple.Item2?.FileScanningIntervalInSeconds is not null) | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(mbn.CellInstanceName, mbn.CellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, FileConnectorConfiguration> fileConnectorConfigurationTuple = GetFileConnectorConfigurationTuple(cellInstanceVersionTuple, mbn.CellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(mbn.Ticks) && fileConnectorConfigurationTuple.Item2?.FileScanningIntervalInSeconds is not null) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             string fileScanningIntervalInSecondsLine; | 
		
	
		
			
				|  |  |  |  |             string versionDirectory = Path.GetDirectoryName(fileInfo.DirectoryName); | 
		
	
	
		
			
				
					
					|  |  |  | @ -914,12 +926,12 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                 fileScanningIntervalInSecondsLine = $"+\t{fileConnectorConfigurationTuple.Item2.FileScanningIntervalInSeconds.Value:+0000}\t{Path.GetFileName(fileInfo.DirectoryName)}"; | 
		
	
		
			
				|  |  |  |  |             File.AppendAllLines(Path.Combine(versionDirectory, "FileScanningIntervalInSeconds.txt"), new string[] { fileScanningIntervalInSecondsLine }); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentTypeVersion> equipmentTypeVersionTuple = GetEquipmentTypeVersionTuple(cellInstanceVersionTuple.Item2, cellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentTypeVersion> equipmentTypeVersionTuple = GetEquipmentTypeVersionTuple(cellInstanceVersionTuple.Item2, mbn.CellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string> parameterizedModelObjectDefinitionTypeTuple = GetParameterizedModelObjectDefinitionTypeTuple(equipmentTypeVersionTuple); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, IList<ModelObjectParameterDefinition>> modelObjectParametersTuple = GetModelObjectParameters(equipmentTypeVersionTuple); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentDictionaryVersion> equipmentDictionaryVersionTuple = GetEquipmentDictionaryVersionTuple(cellInstanceVersionTuple.Item2, cellInstanceConnectionName, equipmentTypeVersionTuple.Item4); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentDictionaryVersion> equipmentDictionaryVersionTuple = GetEquipmentDictionaryVersionTuple(cellInstanceVersionTuple.Item2, mbn.CellInstanceConnectionName, equipmentTypeVersionTuple.Item4); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, List<Tuple<string, string>>> equipmentDictionaryIsAlwaysEnabledEventsTuple = GetEquipmentDictionaryIsAlwaysEnabledEventsTuple(equipmentDictionaryVersionTuple); | 
		
	
		
			
				|  |  |  |  |         Dictionary<string, object> objects = GetKeyValuePairs(cellInstanceName, cellInstanceVersionName, cellInstanceConnectionName, fileConnectorConfigurationTuple.Item2, equipmentTypeVersionTuple.Item2, parameterizedModelObjectDefinitionTypeTuple.Item2, modelObjectParametersTuple.Item2, equipmentDictionaryVersionTuple.Item2, equipmentDictionaryIsAlwaysEnabledEventsTuple.Item2); | 
		
	
		
			
				|  |  |  |  |         Dictionary<string, object> objects = GetKeyValuePairs(mbn.CellInstanceName, mbn.CellInstanceVersionName, mbn.CellInstanceConnectionName, fileConnectorConfigurationTuple.Item2, equipmentTypeVersionTuple.Item2, parameterizedModelObjectDefinitionTypeTuple.Item2, modelObjectParametersTuple.Item2, equipmentDictionaryVersionTuple.Item2, equipmentDictionaryIsAlwaysEnabledEventsTuple.Item2, cellInstanceVersionTuple.Item2.EdaConnection.PortNumber); | 
		
	
		
			
				|  |  |  |  |         string json = JsonSerializer.Serialize(objects, new JsonSerializerOptions { WriteIndented = true }); | 
		
	
		
			
				|  |  |  |  |         results = new string[] { fileInfo.FullName, json }; | 
		
	
		
			
				|  |  |  |  |         return results; | 
		
	
	
		
			
				
					
					|  |  |  | @ -928,22 +940,19 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |     public IFileRead Get(MethodBase methodBase, string sourceFileLocation, string sourceFileFilter, bool useCyclicalForDescription) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         IFileRead result; | 
		
	
		
			
				|  |  |  |  |         string[] segments = GetSegments(methodBase.Name); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = GetFileName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceName = GetCellInstanceName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceVersionName = GetCellInstanceVersionName(segments); | 
		
	
		
			
				|  |  |  |  |         MethodBaseName mbn = GetMethodBaseName(methodBase); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = new(mbn.FileFullName); | 
		
	
		
			
				|  |  |  |  |         Dictionary<string, string> fileParameter = new(); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionName = GetCellInstanceConnectionName(segments); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(cellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(mbn.CellInstanceConnectionName) && !Directory.Exists(fileInfo.DirectoryName)) | 
		
	
		
			
				|  |  |  |  |             _ = Directory.CreateDirectory(fileInfo.Directory.FullName); | 
		
	
		
			
				|  |  |  |  |         Dictionary<string, List<long>> dummyRuns = new(); | 
		
	
		
			
				|  |  |  |  |         Dictionary<long, List<string>> staticRuns = new(); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(cellInstanceName, cellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, FileConnectorConfiguration> fileConnectorConfigurationTuple = GetFileConnectorConfigurationTuple(cellInstanceVersionTuple, cellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentTypeVersion> equipmentTypeVersionTuple = GetEquipmentTypeVersionTuple(cellInstanceVersionTuple.Item2, cellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, CellInstanceVersion> cellInstanceVersionTuple = GetCellInstanceVersionTuple(mbn.CellInstanceName, mbn.CellInstanceVersionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, FileConnectorConfiguration> fileConnectorConfigurationTuple = GetFileConnectorConfigurationTuple(cellInstanceVersionTuple, mbn.CellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentTypeVersion> equipmentTypeVersionTuple = GetEquipmentTypeVersionTuple(cellInstanceVersionTuple.Item2, mbn.CellInstanceConnectionName); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string> parameterizedModelObjectDefinitionTypeTuple = GetParameterizedModelObjectDefinitionTypeTuple(equipmentTypeVersionTuple); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, IList<ModelObjectParameterDefinition>> modelObjectParametersTuple = GetModelObjectParameters(equipmentTypeVersionTuple); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentDictionaryVersion> equipmentDictionaryVersionTuple = GetEquipmentDictionaryVersionTuple(cellInstanceVersionTuple.Item2, cellInstanceConnectionName, equipmentTypeVersionTuple.Item4); | 
		
	
		
			
				|  |  |  |  |         Tuple<string, string, string, EquipmentDictionaryVersion> equipmentDictionaryVersionTuple = GetEquipmentDictionaryVersionTuple(cellInstanceVersionTuple.Item2, mbn.CellInstanceConnectionName, equipmentTypeVersionTuple.Item4); | 
		
	
		
			
				|  |  |  |  |         _ = GetEquipmentDictionaryIsAlwaysEnabledEventsTuple(equipmentDictionaryVersionTuple); | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(sourceFileLocation) && sourceFileLocation != fileConnectorConfigurationTuple.Item2.SourceFileLocation) | 
		
	
		
			
				|  |  |  |  |             fileConnectorConfigurationTuple.Item2.SourceFileLocation = sourceFileLocation; | 
		
	
	
		
			
				
					
					|  |  |  | @ -975,33 +984,29 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                     _ = Directory.CreateDirectory(fileConnectorConfigurationTuple.Item2.AlternateTargetFolder); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         result = FileHandlers.CellInstanceConnectionName.Get(this, fileParameter, cellInstanceName, cellInstanceConnectionName, fileConnectorConfigurationTuple.Item2, equipmentTypeVersionTuple.Item2, parameterizedModelObjectDefinitionTypeTuple.Item2, modelObjectParametersTuple.Item2, equipmentDictionaryVersionTuple.Item2, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: false); | 
		
	
		
			
				|  |  |  |  |         result = FileHandlers.CellInstanceConnectionName.Get(this, fileParameter, mbn.CellInstanceName, mbn.CellInstanceConnectionName, fileConnectorConfigurationTuple.Item2, equipmentTypeVersionTuple.Item2, parameterizedModelObjectDefinitionTypeTuple.Item2, modelObjectParametersTuple.Item2, equipmentDictionaryVersionTuple.Item2, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: false); | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  |     public string[] GetVariables(MethodBase methodBase, string check) | 
		
	
		
			
				|  |  |  |  |     public string[] GetVariables(MethodBase methodBase, string check, bool validatePDSF = true) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string[] results; | 
		
	
		
			
				|  |  |  |  |         string[] lines; | 
		
	
		
			
				|  |  |  |  |         string ipdsfFile; | 
		
	
		
			
				|  |  |  |  |         string textFileDirectory; | 
		
	
		
			
				|  |  |  |  |         string[] segments; | 
		
	
		
			
				|  |  |  |  |         string fileNameWithoutExtension; | 
		
	
		
			
				|  |  |  |  |         string searchPattern = "*.ipdsf"; | 
		
	
		
			
				|  |  |  |  |         string methodBaseNameWithActualCICN; | 
		
	
		
			
				|  |  |  |  |         string sourceFileFilter = string.Empty; | 
		
	
		
			
				|  |  |  |  |         string sourceFileLocation = string.Empty; | 
		
	
		
			
				|  |  |  |  |         string[] segments = GetSegments(methodBase); | 
		
	
		
			
				|  |  |  |  |         string ticks = GetTicks(segments); | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = GetFileName(segments); | 
		
	
		
			
				|  |  |  |  |         string[] textFiles = GetTextFiles(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceName = GetCellInstanceName(segments); | 
		
	
		
			
				|  |  |  |  |         string rawCellInstanceName = GetRawCellInstanceName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionName = GetCellInstanceConnectionName(segments); | 
		
	
		
			
				|  |  |  |  |         string cellInstanceConnectionNameFromMethodBaseName = GetCellInstanceConnectionNameFromMethodBaseName(segments); | 
		
	
		
			
				|  |  |  |  |         string methodBaseNameWithActualCICN = GetMethodBaseNameWithActualCICN(methodBase.Name, rawCellInstanceName, cellInstanceConnectionNameFromMethodBaseName, cellInstanceConnectionName, ticks); | 
		
	
		
			
				|  |  |  |  |         MethodBaseName mbn = GetMethodBaseName(methodBase); | 
		
	
		
			
				|  |  |  |  |         string[] textFiles = GetTextFiles(mbn); | 
		
	
		
			
				|  |  |  |  |         if (!textFiles.Any()) | 
		
	
		
			
				|  |  |  |  |             textFileDirectory = string.Empty; | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |             textFileDirectory = Path.GetDirectoryName(textFiles[0]); | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if (_HasWaitForProperty) | 
		
	
		
			
				|  |  |  |  |                 throw new Exception("Set text file!"); | 
		
	
		
			
				|  |  |  |  |             sourceFileLocation = mbn.DummyDirectory; | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         foreach (string textFile in textFiles) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             lines = File.ReadAllLines(textFile); | 
		
	
	
		
			
				
					
					|  |  |  | @ -1012,18 +1017,20 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |                 sourceFileFilter = lines[0]; | 
		
	
		
			
				|  |  |  |  |             else if (fileNameWithoutExtension == nameof(FileConnectorConfiguration.SourceFileLocation)) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 segments = lines[0].Split(new string[] { ticks }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |                 methodBaseNameWithActualCICN = GetMethodBaseNameWithActualCICN(methodBase.Name, mbn.RawCellInstanceName, mbn.CellInstanceConnectionNameFromMethodBaseName, mbn.CellInstanceConnectionName, mbn.Ticks); | 
		
	
		
			
				|  |  |  |  |                 segments = lines[0].Split(new string[] { mbn.Ticks }, StringSplitOptions.None); | 
		
	
		
			
				|  |  |  |  |                 if (segments.Length > 2) | 
		
	
		
			
				|  |  |  |  |                     throw new Exception("Ticks should only appear once in source file location!"); | 
		
	
		
			
				|  |  |  |  |                 if (segments.Length != 2) | 
		
	
		
			
				|  |  |  |  |                     throw new Exception("Ticks missing from source file location!"); | 
		
	
		
			
				|  |  |  |  |                 if (segments[1].Contains(ticks)) | 
		
	
		
			
				|  |  |  |  |                 if (segments[1].Contains(mbn.Ticks)) | 
		
	
		
			
				|  |  |  |  |                     throw new Exception("From source file location path should not contain ticks!"); | 
		
	
		
			
				|  |  |  |  |                 if (!segments[1].EndsWith(methodBaseNameWithActualCICN.Replace(ticks, string.Empty))) | 
		
	
		
			
				|  |  |  |  |                 if (!segments[1].EndsWith(methodBaseNameWithActualCICN.Replace(mbn.Ticks, string.Empty))) | 
		
	
		
			
				|  |  |  |  |                     throw new Exception("Method name missing from source file location!"); | 
		
	
		
			
				|  |  |  |  |                 sourceFileLocation = lines[0]; | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         FileInfo fileInfo = new(mbn.FileFullName); | 
		
	
		
			
				|  |  |  |  |         if (!Directory.Exists(fileInfo.Directory.FullName)) | 
		
	
		
			
				|  |  |  |  |             _ = Directory.CreateDirectory(fileInfo.Directory.FullName); | 
		
	
		
			
				|  |  |  |  |         if (!fileInfo.Exists) | 
		
	
	
		
			
				
					
					|  |  |  | @ -1044,25 +1051,30 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |             fileConnectorConfiguration.SourceFileFilter = sourceFileFilter; | 
		
	
		
			
				|  |  |  |  |         if (!string.IsNullOrEmpty(sourceFileLocation)) | 
		
	
		
			
				|  |  |  |  |             fileConnectorConfiguration.SourceFileLocation = sourceFileLocation; | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(sourceFileLocation)) | 
		
	
		
			
				|  |  |  |  |             ipdsfFile = searchPattern; | 
		
	
		
			
				|  |  |  |  |         if (!validatePDSF) | 
		
	
		
			
				|  |  |  |  |             ipdsfFile = string.Empty; | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             string ipdsfDirectory = Path.Combine(sourceFileLocation, "ipdsf"); | 
		
	
		
			
				|  |  |  |  |             if (!Directory.Exists(ipdsfDirectory)) | 
		
	
		
			
				|  |  |  |  |             if (string.IsNullOrEmpty(sourceFileLocation)) | 
		
	
		
			
				|  |  |  |  |                 ipdsfFile = searchPattern; | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 string[] files = Directory.GetFiles(ipdsfDirectory, searchPattern, SearchOption.TopDirectoryOnly); | 
		
	
		
			
				|  |  |  |  |                 if (files.Any()) | 
		
	
		
			
				|  |  |  |  |                     ipdsfFile = files[0]; | 
		
	
		
			
				|  |  |  |  |                 else | 
		
	
		
			
				|  |  |  |  |                 string ipdsfDirectory = Path.Combine(sourceFileLocation, "ipdsf"); | 
		
	
		
			
				|  |  |  |  |                 if (!Directory.Exists(ipdsfDirectory)) | 
		
	
		
			
				|  |  |  |  |                     ipdsfFile = searchPattern; | 
		
	
		
			
				|  |  |  |  |                 else | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     string[] files = Directory.GetFiles(ipdsfDirectory, searchPattern, SearchOption.TopDirectoryOnly); | 
		
	
		
			
				|  |  |  |  |                     if (files.Any()) | 
		
	
		
			
				|  |  |  |  |                         ipdsfFile = files[0]; | 
		
	
		
			
				|  |  |  |  |                     else | 
		
	
		
			
				|  |  |  |  |                         ipdsfFile = searchPattern; | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             if (ipdsfFile == searchPattern) | 
		
	
		
			
				|  |  |  |  |                 throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         if (ipdsfFile == searchPattern) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         results = new string[] { fileInfo.FullName, json, fileConnectorConfiguration.SourceFileLocation, fileConnectorConfiguration.SourceFileFilter, ipdsfFile, textFileDirectory }; | 
		
	
		
			
				|  |  |  |  |         results = new string[] { fileInfo.FullName, json, fileConnectorConfiguration.SourceFileLocation, fileConnectorConfiguration.SourceFileFilter, ipdsfFile, mbn.TextFileDirectory }; | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(results[0])) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(results[1])) | 
		
	
	
		
			
				
					
					|  |  |  | @ -1071,7 +1083,7 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(results[3])) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(results[4])) | 
		
	
		
			
				|  |  |  |  |         if (validatePDSF && string.IsNullOrEmpty(results[4])) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
		
			
				|  |  |  |  |         if (string.IsNullOrEmpty(results[5])) | 
		
	
		
			
				|  |  |  |  |             throw new Exception(); | 
		
	
	
		
			
				
					
					|  |  |  | @ -1232,29 +1244,33 @@ public class AdaptationTesting : ISMTP | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         string result; | 
		
	
		
			
				|  |  |  |  |         Tuple<string, Test[], JsonElement[], List<FileInfo>> extractResult = fileRead.ReExtract(); | 
		
	
		
			
				|  |  |  |  |         Assert.IsFalse(string.IsNullOrEmpty(extractResult?.Item1)); | 
		
	
		
			
				|  |  |  |  |         Assert.IsTrue(extractResult.Item3.Length > 0, "extractResult Array Length check!"); | 
		
	
		
			
				|  |  |  |  |         Assert.IsNotNull(extractResult.Item4); | 
		
	
		
			
				|  |  |  |  |         if (!validatePDSF) | 
		
	
		
			
				|  |  |  |  |             _ = GetLogisticsColumnsAndBody(fileRead, logistics, extractResult, new(string.Empty, Array.Empty<string>(), Array.Empty<string>())); | 
		
	
		
			
				|  |  |  |  |         else | 
		
	
		
			
				|  |  |  |  |         if (!fileRead.IsDuplicator) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             Tuple<string, string[], string[]> pdsf = GetLogisticsColumnsAndBody(variables[2], variables[4]); | 
		
	
		
			
				|  |  |  |  |             Tuple<string, string[], string[]> pdsfNew = GetLogisticsColumnsAndBody(fileRead, logistics, extractResult, pdsf); | 
		
	
		
			
				|  |  |  |  |             CompareSave(variables[5], pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |             Assert.IsTrue(pdsf.Item1 == pdsfNew.Item1, "Item1 check!"); | 
		
	
		
			
				|  |  |  |  |             string[] json = GetItem2(pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |             CompareSaveJSON(variables[5], json); | 
		
	
		
			
				|  |  |  |  |             Assert.IsTrue(json[0] == json[1], "Item2 check!"); | 
		
	
		
			
				|  |  |  |  |             string[] join = GetItem3(pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |             CompareSaveTSV(variables[5], join); | 
		
	
		
			
				|  |  |  |  |             Assert.IsTrue(join[0] == join[1], "Item3 (Join) check!"); | 
		
	
		
			
				|  |  |  |  |             Assert.IsFalse(string.IsNullOrEmpty(extractResult?.Item1)); | 
		
	
		
			
				|  |  |  |  |             Assert.IsNotNull(extractResult.Item3); | 
		
	
		
			
				|  |  |  |  |             Assert.IsNotNull(extractResult.Item4); | 
		
	
		
			
				|  |  |  |  |             if (!validatePDSF) | 
		
	
		
			
				|  |  |  |  |                 _ = GetLogisticsColumnsAndBody(fileRead, logistics, extractResult, new(string.Empty, Array.Empty<string>(), Array.Empty<string>())); | 
		
	
		
			
				|  |  |  |  |             else | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 Assert.IsTrue(extractResult.Item3.Length > 0, "extractResult Array Length check!"); | 
		
	
		
			
				|  |  |  |  |                 Tuple<string, string[], string[]> pdsf = GetLogisticsColumnsAndBody(variables[2], variables[4]); | 
		
	
		
			
				|  |  |  |  |                 Tuple<string, string[], string[]> pdsfNew = GetLogisticsColumnsAndBody(fileRead, logistics, extractResult, pdsf); | 
		
	
		
			
				|  |  |  |  |                 CompareSave(variables[5], pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |                 Assert.IsTrue(pdsf.Item1 == pdsfNew.Item1, "Item1 check!"); | 
		
	
		
			
				|  |  |  |  |                 string[] json = GetItem2(pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |                 CompareSaveJSON(variables[5], json); | 
		
	
		
			
				|  |  |  |  |                 Assert.IsTrue(json[0] == json[1], "Item2 check!"); | 
		
	
		
			
				|  |  |  |  |                 string[] join = GetItem3(pdsf, pdsfNew); | 
		
	
		
			
				|  |  |  |  |                 CompareSaveTSV(variables[5], join); | 
		
	
		
			
				|  |  |  |  |                 Assert.IsTrue(join[0] == join[1], "Item3 (Join) check!"); | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |             UpdatePassDirectory(variables[2]); | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         UpdatePassDirectory(variables[2]); | 
		
	
		
			
				|  |  |  |  |         result = extractResult.Item1; | 
		
	
		
			
				|  |  |  |  |         return result; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |  | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | // namespace Adaptation._Tests.Helpers { public class AdaptationTesting { } } | 
		
	
		
			
				|  |  |  |  | // 2022-05-12 -> AdaptationTesting | 
		
	
		
			
				|  |  |  |  | // 2022-08-05 -> AdaptationTesting |