diff --git a/Adaptation/.editorconfig b/Adaptation/.editorconfig index d6755a0..b22ed15 100644 --- a/Adaptation/.editorconfig +++ b/Adaptation/.editorconfig @@ -122,6 +122,7 @@ dotnet_diagnostic.IDE0290.severity = none # Use primary constructor [Distance]cs dotnet_diagnostic.IDE0300.severity = none # IDE0300: Collection initialization can be simplified dotnet_diagnostic.IDE0301.severity = none #IDE0301: Collection initialization can be simplified dotnet_diagnostic.IDE0305.severity = none # IDE0305: Collection initialization can be simplified +dotnet_diagnostic.MSTEST0037.severity = error # MSTEST0037: Use proper 'Assert' methods dotnet_diagnostic.SYSLIB1045.severity = none # SYSLIB1045: diagnostics for regex source generation dotnet_naming_rule.abstract_method_should_be_pascal_case.severity = warning dotnet_naming_rule.abstract_method_should_be_pascal_case.style = pascal_case diff --git a/Adaptation/FileHandlers/pcl/Convert.cs b/Adaptation/FileHandlers/pcl/Convert.cs index 6368aec..fb723dc 100644 --- a/Adaptation/FileHandlers/pcl/Convert.cs +++ b/Adaptation/FileHandlers/pcl/Convert.cs @@ -4,6 +4,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Diagnostics; using System.IO; +using System.Linq; namespace Adaptation.FileHandlers.pcl; @@ -31,7 +32,35 @@ internal class Convert return result; } - internal static ReadOnlyDictionary PDF(Logistics logistics, string ghostPCLFileName, List fileInfoCollection) + private static Dictionary PortableDocumentFormatSplit(string pdfTextStripperFileName, string sourcePath, string sourceFileNamePdf) + { + Dictionary results = new(); + ProcessStartInfo processStartInfo = new(pdfTextStripperFileName, $"s \"{sourceFileNamePdf}\"") + { + UseShellExecute = false, + RedirectStandardError = true, + RedirectStandardOutput = true, + }; + Process process = Process.Start(processStartInfo); + _ = process.WaitForExit(30000); + string text; + string checkFile; + string[] pdfFiles = Directory.GetFiles(sourcePath, "*.pdf", SearchOption.TopDirectoryOnly); + string[] textFiles = Directory.GetFiles(sourcePath, "*.txt", SearchOption.TopDirectoryOnly); + foreach (string pdfFile in pdfFiles) + { + if (pdfFile == sourceFileNamePdf) + continue; + checkFile = Path.ChangeExtension(pdfFile, ".txt"); + if (!textFiles.Contains(checkFile)) + continue; + text = File.ReadAllText(checkFile); + results.Add(pdfFile, text); + } + return results; + } + + internal static ReadOnlyDictionary PDF(Logistics logistics, string ghostPCLFileName, string pdfTextStripperFileName, List fileInfoCollection) { Dictionary results = new(); object item; @@ -58,51 +87,59 @@ internal class Convert } if (results.Count == 0) { - java.io.File file = new(sourceFileNamePdf); - org.apache.pdfbox.util.Splitter splitter = new(); - org.apache.pdfbox.pdmodel.PDDocument pdDocument = org.apache.pdfbox.pdmodel.PDDocument.load(file); - java.util.List list = splitter.split(pdDocument); - java.util.ListIterator iterator = list.listIterator(); - org.apache.pdfbox.util.PDFTextStripper dataStripper = new(); - for (short i = 1; i < short.MaxValue; i++) + try { - if (!iterator.hasNext()) - break; - item = iterator.next(); - pagePDFFile = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", i, ".pdf"); - pageTextFile = Path.ChangeExtension(pagePDFFile, ".txt"); - if (File.Exists(pageTextFile)) + java.io.File file = new(sourceFileNamePdf); + org.apache.pdfbox.util.Splitter splitter = new(); + org.apache.pdfbox.pdmodel.PDDocument pdDocument = org.apache.pdfbox.pdmodel.PDDocument.load(file); + java.util.List list = splitter.split(pdDocument); + java.util.ListIterator iterator = list.listIterator(); + org.apache.pdfbox.util.PDFTextStripper dataStripper = new(); + for (short i = 1; i < short.MaxValue; i++) { - pageText = File.ReadAllText(pageTextFile); - sourceFiles.Add(pageTextFile); - if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) - continue; - pd.close(); + if (!iterator.hasNext()) + break; + item = iterator.next(); + pagePDFFile = string.Concat(sourcePath, @"\", sourceFileNameWithoutExtension, "_", i, ".pdf"); + pageTextFile = Path.ChangeExtension(pagePDFFile, ".txt"); + if (File.Exists(pageTextFile)) + { + pageText = File.ReadAllText(pageTextFile); + sourceFiles.Add(pageTextFile); + if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) + continue; + pd.close(); + } + else if (File.Exists(pagePDFFile)) + { + org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(pagePDFFile); + pageText = dataStripper.getText(document); + document.close(); + sourceFiles.Add(pagePDFFile); + if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) + continue; + pd.close(); + } + else + { + if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) + continue; + pageText = dataStripper.getText(pd); + pd.save(pagePDFFile); + sourceFiles.Add(pagePDFFile); + pd.close(); + File.WriteAllText(pageTextFile, pageText); + sourceFiles.Add(pageTextFile); + } + results.Add(pagePDFFile, pageText); } - else if (File.Exists(pagePDFFile)) - { - org.apache.pdfbox.pdmodel.PDDocument document = org.apache.pdfbox.pdmodel.PDDocument.load(pagePDFFile); - pageText = dataStripper.getText(document); - document.close(); - sourceFiles.Add(pagePDFFile); - if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) - continue; - pd.close(); - } - else - { - if (item is not org.apache.pdfbox.pdmodel.PDDocument pd) - continue; - pageText = dataStripper.getText(pd); - pd.save(pagePDFFile); - sourceFiles.Add(pagePDFFile); - pd.close(); - File.WriteAllText(pageTextFile, pageText); - sourceFiles.Add(pageTextFile); - } - results.Add(pagePDFFile, pageText); + pdDocument.close(); + } + catch (MissingMethodException) + { + if (results.Count == 0) + results = PortableDocumentFormatSplit(pdfTextStripperFileName, sourcePath, sourceFileNamePdf); } - pdDocument.close(); } foreach (string sourceFile in sourceFiles) fileInfoCollection.Add(new FileInfo(sourceFile)); diff --git a/Adaptation/FileHandlers/pcl/FileRead.cs b/Adaptation/FileHandlers/pcl/FileRead.cs index 417b7fd..a4c5599 100644 --- a/Adaptation/FileHandlers/pcl/FileRead.cs +++ b/Adaptation/FileHandlers/pcl/FileRead.cs @@ -16,6 +16,7 @@ public class FileRead : Shared.FileRead, IFileRead private long? _TickOffset; private readonly string _GhostPCLFileName; + private readonly string _PDFTextStripperFileName; public FileRead(ISMTP smtp, Dictionary fileParameter, string cellInstanceName, int? connectionCount, string cellInstanceConnectionName, FileConnectorConfiguration fileConnectorConfiguration, string equipmentTypeName, string parameterizedModelObjectDefinitionType, IList modelObjectParameters, string equipmentDictionaryName, Dictionary> dummyRuns, Dictionary> staticRuns, bool useCyclicalForDescription, bool isEAFHosted) : base(new Description(), true, smtp, fileParameter, cellInstanceName, connectionCount, cellInstanceConnectionName, fileConnectorConfiguration, equipmentTypeName, parameterizedModelObjectDefinitionType, modelObjectParameters, equipmentDictionaryName, dummyRuns, staticRuns, useCyclicalForDescription, isEAFHosted: connectionCount is null) @@ -32,6 +33,9 @@ public class FileRead : Shared.FileRead, IFileRead _GhostPCLFileName = Path.Combine(AppContext.BaseDirectory, "gpcl6win64.exe"); if (!File.Exists(_GhostPCLFileName)) throw new Exception("Ghost PCL FileName doesn't Exist!"); + _PDFTextStripperFileName = Path.Combine(AppContext.BaseDirectory, "PDF-Text-Stripper.exe"); + if (!File.Exists(_PDFTextStripperFileName)) + throw new Exception("PDF-Text-Stripper FileName doesn't Exist!"); if (_IsEAFHosted) NestExistingFiles(_FileConnectorConfiguration); } @@ -113,7 +117,7 @@ public class FileRead : Shared.FileRead, IFileRead results.Item4.Add(_Logistics.FileInfo); else { - ReadOnlyDictionary pages = Convert.PDF(_Logistics, _GhostPCLFileName, results.Item4); + ReadOnlyDictionary pages = Convert.PDF(_Logistics, _GhostPCLFileName, _PDFTextStripperFileName, results.Item4); Run? run = Run.Get(_Logistics, results.Item4, pages); if (run is null) throw new Exception(string.Concat("A) No Data - ", dateTime.Ticks)); diff --git a/Adaptation/FileHandlers/pcl/ProcessData.cs b/Adaptation/FileHandlers/pcl/ProcessData.cs index 7089a63..17ba671 100644 --- a/Adaptation/FileHandlers/pcl/ProcessData.cs +++ b/Adaptation/FileHandlers/pcl/ProcessData.cs @@ -106,9 +106,13 @@ public class ProcessData : IProcessData if (description.Test != (int)tests[i]) throw new Exception(); } + FileInfo fileInfo = new($"{logistics.ReportFullPath}.descriptions.json"); List fileReadDescriptions = (from l in descriptions select (Description)l).ToList(); string json = JsonSerializer.Serialize(fileReadDescriptions, fileReadDescriptions.GetType()); - JsonElement[] jsonElements = JsonSerializer.Deserialize(json); + File.WriteAllText(fileInfo.FullName, json); + File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence); + fileInfoCollection.Add(fileInfo); + JsonElement[] jsonElements = JsonSerializer.Deserialize(json) ?? throw new Exception(); results = new Tuple>(logistics.Logistics1[0], tests.ToArray(), jsonElements, fileInfoCollection); return results; } diff --git a/Adaptation/FileHandlers/pcl/Run.cs b/Adaptation/FileHandlers/pcl/Run.cs index d7ce9e7..2ffad01 100644 --- a/Adaptation/FileHandlers/pcl/Run.cs +++ b/Adaptation/FileHandlers/pcl/Run.cs @@ -26,7 +26,7 @@ internal class Run private static void WriteJson(Logistics logistics, List fileInfoCollection, Run result) { - FileInfo fileInfo = new($"{logistics.ReportFullPath}.json"); + FileInfo fileInfo = new($"{logistics.ReportFullPath}.run.json"); string json = JsonSerializer.Serialize(result, RunSourceGenerationContext.Default.Run); File.WriteAllText(fileInfo.FullName, json); File.SetLastWriteTime(fileInfo.FullName, logistics.DateTimeFromSequence); diff --git a/Adaptation/MET08DDUPSFS6420.Tests.csproj b/Adaptation/MET08DDUPSFS6420.Tests.csproj index 69757fe..496f8fa 100644 --- a/Adaptation/MET08DDUPSFS6420.Tests.csproj +++ b/Adaptation/MET08DDUPSFS6420.Tests.csproj @@ -69,7 +69,7 @@ - NU1701 + NU1701 diff --git a/Adaptation/Shared/ProcessDataStandardFormat.cs b/Adaptation/Shared/ProcessDataStandardFormat.cs index 136ccae..b2ca7b6 100644 --- a/Adaptation/Shared/ProcessDataStandardFormat.cs +++ b/Adaptation/Shared/ProcessDataStandardFormat.cs @@ -152,9 +152,11 @@ public class ProcessDataStandardFormat { string value; string[] segments; + List lines = new(); StringBuilder stringBuilder = new(); foreach (string bodyLine in bodyLines) { + _ = stringBuilder.Clear(); _ = stringBuilder.Append('{'); segments = bodyLine.Trim().Split('\t'); if (!lookForNumbers) @@ -179,10 +181,11 @@ public class ProcessDataStandardFormat } } _ = stringBuilder.Remove(stringBuilder.Length - 1, 1); - _ = stringBuilder.AppendLine("},"); + _ = stringBuilder.AppendLine("}"); + lines.Add(stringBuilder.ToString()); } - _ = stringBuilder.Remove(stringBuilder.Length - 3, 3); - results = JsonSerializer.Deserialize(string.Concat("[", stringBuilder, "]")); + string json = $"[{string.Join(",", lines)}]"; + results = JsonSerializer.Deserialize(json); } return results; } diff --git a/Adaptation/_Tests/Shared/AdaptationTesting.cs b/Adaptation/_Tests/Shared/AdaptationTesting.cs index 8a341d4..66cf18e 100644 --- a/Adaptation/_Tests/Shared/AdaptationTesting.cs +++ b/Adaptation/_Tests/Shared/AdaptationTesting.cs @@ -1111,7 +1111,7 @@ public class AdaptationTesting : ISMTP pdsfFiles = Directory.GetFiles(searchDirectory, searchPattern, SearchOption.TopDirectoryOnly); if (pdsfFiles.Length == 0) _ = Process.Start("explorer.exe", searchDirectory); - Assert.IsTrue(pdsfFiles.Length != 0, "GetFiles check"); + Assert.AreNotEqual(0, pdsfFiles.Length, "GetFiles check"); results = GetLogisticsColumnsAndBody(pdsfFiles[0]); } Assert.IsFalse(string.IsNullOrEmpty(results.Item1)); @@ -1259,13 +1259,13 @@ public class AdaptationTesting : ISMTP Tuple pdsf = GetLogisticsColumnsAndBody(variables[2], variables[4]); Tuple pdsfNew = GetLogisticsColumnsAndBody(fileRead, logistics, extractResult, pdsf); CompareSave(variables[5], pdsf, pdsfNew); - Assert.IsTrue(pdsf.Item1 == pdsfNew.Item1, "Item1 check!"); + Assert.AreEqual(pdsfNew.Item1, pdsf.Item1, "Item1 check!"); string[] json = GetItem2(pdsf, pdsfNew); CompareSaveJSON(variables[5], json); - Assert.IsTrue(json[0] == json[1], "Item2 check!"); + Assert.AreEqual(json[1], json[0], "Item2 check!"); string[] join = GetItem3(pdsf, pdsfNew); CompareSaveTSV(variables[5], join); - Assert.IsTrue(join[0] == join[1], "Item3 (Join) check!"); + Assert.AreEqual(join[1], join[0], "Item3 (Join) check!"); } UpdatePassDirectory(variables[2]); } diff --git a/Adaptation/_Tests/Static/MET08DDUPSFS6420.cs b/Adaptation/_Tests/Static/MET08DDUPSFS6420.cs index b8d6a11..cda7af7 100644 --- a/Adaptation/_Tests/Static/MET08DDUPSFS6420.cs +++ b/Adaptation/_Tests/Static/MET08DDUPSFS6420.cs @@ -51,7 +51,7 @@ public class MET08DDUPSFS6420 : LoggingUnitTesting, IDisposable public void TestDateTime() { DateTime dateTime = DateTime.Now; - Assert.IsTrue(dateTime.ToString("M/d/yyyy h:mm:ss tt") == dateTime.ToString()); + Assert.AreEqual(dateTime.ToString(), dateTime.ToString("M/d/yyyy h:mm:ss tt")); } #if DEBUG diff --git a/Adaptation/_Tests/Static/pcl.cs b/Adaptation/_Tests/Static/pcl.cs index 81ada6d..764df3c 100644 --- a/Adaptation/_Tests/Static/pcl.cs +++ b/Adaptation/_Tests/Static/pcl.cs @@ -52,7 +52,7 @@ public class PCL : LoggingUnitTesting, IDisposable public void TestDateTime() { DateTime dateTime = DateTime.Now; - Assert.IsTrue(dateTime.ToString("M/d/yyyy h:mm:ss tt") == dateTime.ToString()); + Assert.AreEqual(dateTime.ToString(), dateTime.ToString("M/d/yyyy h:mm:ss tt")); } [TestMethod] @@ -69,22 +69,22 @@ public class PCL : LoggingUnitTesting, IDisposable Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("12-123456-1234"); - Assert.IsTrue(descriptor.Reactor is "12"); - Assert.IsTrue(descriptor.RDS is "123456"); - Assert.IsTrue(descriptor.PSN is "1234"); + Assert.AreEqual("12", descriptor.Reactor); + Assert.AreEqual("123456", descriptor.RDS); + Assert.AreEqual("1234", descriptor.PSN); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("123456"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); - Assert.IsTrue(descriptor.RDS is "123456"); + Assert.AreEqual("123456", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("1T123456"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); - Assert.IsTrue(descriptor.RDS is "123456"); + Assert.AreEqual("123456", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); @@ -93,96 +93,96 @@ public class PCL : LoggingUnitTesting, IDisposable Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.Employee is "MP"); + Assert.AreEqual("MP", descriptor.Employee); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); descriptor = ProcessData.GetDescriptor("12-123456-1234.2-1"); - Assert.IsTrue(descriptor.Reactor is "12"); - Assert.IsTrue(descriptor.RDS is "123456"); - Assert.IsTrue(descriptor.PSN is "1234"); - Assert.IsTrue(descriptor.Layer is "2"); - Assert.IsTrue(descriptor.Zone is "1"); + Assert.AreEqual("12", descriptor.Reactor); + Assert.AreEqual("123456", descriptor.RDS); + Assert.AreEqual("1234", descriptor.PSN); + Assert.AreEqual("2", descriptor.Layer); + Assert.AreEqual("1", descriptor.Zone); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("12-123456-1234.02-1"); - Assert.IsTrue(descriptor.Reactor is "12"); - Assert.IsTrue(descriptor.RDS is "123456"); - Assert.IsTrue(descriptor.PSN is "1234"); - Assert.IsTrue(descriptor.Layer is "2"); - Assert.IsTrue(descriptor.Zone is "1"); + Assert.AreEqual("12", descriptor.Reactor); + Assert.AreEqual("123456", descriptor.RDS); + Assert.AreEqual("1234", descriptor.PSN); + Assert.AreEqual("2", descriptor.Layer); + Assert.AreEqual("1", descriptor.Zone); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("20"); - Assert.IsTrue(descriptor.Reactor is "20"); + Assert.AreEqual("20", descriptor.Reactor); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("20.2"); - Assert.IsTrue(descriptor.Reactor is "20"); + Assert.AreEqual("20", descriptor.Reactor); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.Layer is "2"); + Assert.AreEqual("2", descriptor.Layer); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("20.2.1"); - Assert.IsTrue(descriptor.Layer is "2"); + Assert.AreEqual("2", descriptor.Layer); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); - Assert.IsTrue(descriptor.Reactor is "20"); - Assert.IsTrue(descriptor.Zone is "1"); + Assert.AreEqual("20", descriptor.Reactor); + Assert.AreEqual("1", descriptor.Zone); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("20.1.1"); - Assert.IsTrue(descriptor.Layer is "1"); + Assert.AreEqual("1", descriptor.Layer); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); - Assert.IsTrue(descriptor.Reactor is "20"); - Assert.IsTrue(descriptor.Zone is "1"); + Assert.AreEqual("20", descriptor.Reactor); + Assert.AreEqual("1", descriptor.Zone); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("P2-LOW-RR"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); - Assert.IsTrue(descriptor.PSN is "RR"); + Assert.AreEqual("RR", descriptor.PSN); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); - Assert.IsTrue(descriptor.Reactor is "P2"); + Assert.AreEqual("P2", descriptor.Reactor); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("i171308.1.51"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.RDS is "i171308.1.51"); + Assert.AreEqual("i171308.1.51", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("o171308.1.51"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.RDS is "o171308.1.51"); + Assert.AreEqual("o171308.1.51", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("O171308.1.51"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.RDS is "O171308.1.51"); + Assert.AreEqual("O171308.1.51", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("171308.1.51"); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); - Assert.IsTrue(descriptor.RDS is "171308.1.51"); + Assert.AreEqual("171308.1.51", descriptor.RDS); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Reactor)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("75-QP1414-SPLIT4"); - Assert.IsTrue(!string.IsNullOrEmpty(descriptor.Lot)); + Assert.IsFalse(string.IsNullOrEmpty(descriptor.Lot)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); - Assert.IsTrue(descriptor.PSN is "SPLIT4"); + Assert.AreEqual("SPLIT4", descriptor.PSN); Assert.IsTrue(string.IsNullOrEmpty(descriptor.RDS)); - Assert.IsTrue(descriptor.Reactor is "75"); + Assert.AreEqual("75", descriptor.Reactor); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Zone)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Employee)); descriptor = ProcessData.GetDescriptor("B48"); - Assert.IsTrue(descriptor.Lot == "B48"); + Assert.AreEqual("B48", descriptor.Lot); Assert.IsTrue(string.IsNullOrEmpty(descriptor.Layer)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN)); Assert.IsTrue(string.IsNullOrEmpty(descriptor.PSN));