public void SerializeAndDeserializeComponentFile()
        {
            var component = TestModels.TestComponent;

            var jsonOutput = component.Write();

            var reparsedComponent = ComponentFile.Read(jsonOutput);

            Assert.AreEqual(component.Name, reparsedComponent.Name);
            Assert.AreEqual(component.NumberOfPlies, reparsedComponent.NumberOfPlies);
            Assert.AreEqual(component.DistanceUnit, reparsedComponent.DistanceUnit);
            Assert.AreEqual(component.AngleUnit, reparsedComponent.AngleUnit);
            Assert.AreEqual(component.ComponentUsage, reparsedComponent.ComponentUsage);

            var firstMember = component.Members.First();

            Assert.AreEqual("B1", firstMember.Name);
            Assert.AreEqual(MemberType.BottomChord, firstMember.MemberType);
            Assert.AreEqual("#2 SYP 2x4", firstMember.MaterialDescription);
            Assert.AreEqual(MemberMaterialType.Lumber, firstMember.MaterialType);
            Assert.AreEqual(120, firstMember.StockLength);
        }
Example #2
0
        public void Deserialize_QualityControlFile()
        {
            var qc = ComponentFile.Read(Resources.GetResourceAsString("Test.qc"));

            Assert.IsTrue(qc != null);
        }
        public void Deserialize_ComponentFile()
        {
            var component = ComponentFile.Read(Resources.GetResourceAsString("Test.component"));

            Assert.IsTrue(component != null);
        }
        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);
        }