public void SerializeAndDeserialize_QualityControlFile() { var qcFile = TestModels.TestQualityControlFile; var jsonOutput = qcFile.Write(); var reparsedQc = QualityControlFile.Read(jsonOutput); Assert.AreEqual(qcFile.ComponentName, reparsedQc.ComponentName); }
public static UnifiedDataStandardFile Read(ZipArchive archive) { var newUDSFile = new UnifiedDataStandardFile(); foreach (var zippedFile in archive.Entries.Where(entry => entry.Name.EndsWith(".component"))) { var contents = new StreamReader(zippedFile.Open()).ReadToEnd(); var component = ComponentFile.Read(contents); foreach (var member in component.Members) { var matchingMaterial = component.Lumbers.Single(material => material.Guid == member.MaterialGuid); member.Lumber = matchingMaterial; } foreach (var platePair in component.ConnectorPlatePairs) { foreach (var plate in platePair.ConnectorPlates) { var matchingMaterial = component.ConnectorPlateTypes.Single(material => material.Guid == plate.MaterialGuid); plate.ConnectorPlateType = matchingMaterial; } } foreach (var hanger in component.Hangers) { var matchingMaterial = component.HangerTypes.Single(material => material.Guid == hanger.MaterialGuid); hanger.HangerType = matchingMaterial; } foreach (var bearing in component.Bearings) { foreach (var guid in bearing.InstallationHardwareGuids) { var matchingHardware = component.AllInstallationHardwares.Single(hardware => hardware.Guid == guid); bearing.InstallationHardwares.Add(matchingHardware); } } newUDSFile.ComponentFiles.Add(component); } foreach (var zippedFile in archive.Entries.Where(entry => entry.Name.EndsWith(".qc"))) { var contents = new StreamReader(zippedFile.Open()).ReadToEnd(); var qcFile = QualityControlFile.Read(contents); var matchingComponent = newUDSFile.ComponentFiles.Single(componentFile => componentFile.Name.Contains(qcFile.ComponentName)); qcFile.Component = matchingComponent; foreach (var plateData in qcFile.PlateQualityControlDatas) { plateData.ConnectorPlatePair = matchingComponent.ConnectorPlatePairs.Single(connectorSet => connectorSet.Guid == plateData.PlatePairGuid); foreach (var contactArea in plateData.ContactAreas) { contactArea.Member = matchingComponent.Members.Single(member => member.Guid == contactArea.MemberGuid); } } newUDSFile.QualityControlFiles.Add(qcFile); } return(newUDSFile); }