コード例 #1
0
        private void AddReferenceCoordinateSystemForAssemblyRoot(avm.Design ad_import, CyPhy.DesignEntity cyphy_container)
        {
            foreach (var root in ad_import.DomainFeature.OfType <avm.cad.AssemblyRoot>())
            {
                CyPhyML.ComponentRef componentRef;
                if (idToComponentInstanceMap.TryGetValue(root.AssemblyRootComponentInstance, out componentRef))
                {
                    MgaFCO rcs = CreateChild((ISIS.GME.Common.Interfaces.Model)componentRef.ParentContainer, typeof(CyPhyML.ReferenceCoordinateSystem));
                    rcs.Name = "AssemblyRoot";
                    CyPhyML.ReferenceCoordinateSystem componentRcs = componentRef.Referred.Component.Children.ReferenceCoordinateSystemCollection.FirstOrDefault();
                    if (componentRcs == null)
                    {
                        componentRcs = CyPhyClasses.ReferenceCoordinateSystem.Create(componentRef.Referred.Component);
                    }

                    ((MgaModel)componentRef.ParentContainer.Impl).CreateSimpleConnDisp(((MgaMetaModel)componentRef.ParentContainer.Impl.MetaBase).RoleByName[typeof(CyPhyML.RefCoordSystem2RefCoordSystem).Name],
                                                                                       rcs, (MgaFCO)componentRcs.Impl, null, (MgaFCO)componentRef.Impl);

                    while (rcs.ParentModel.ID != cyphy_container.ID)
                    {
                        var oldrcs = rcs;
                        rcs      = CreateChild(rcs.ParentModel.ParentModel, typeof(CyPhyML.ReferenceCoordinateSystem));
                        rcs.Name = "AssemblyRoot";
                        ((MgaModel)rcs.ParentModel).CreateSimplerConnDisp(((MgaMetaModel)rcs.ParentModel.Meta).RoleByName[typeof(CyPhyML.RefCoordSystem2RefCoordSystem).Name],
                                                                          rcs, oldrcs);
                    }
                }
            }
        }
コード例 #2
0
        private CyPhy.ComponentAssembly CreateComponentAssemblyRoot(avm.Design ad_import)
        {
            CyPhy.ComponentAssemblies cyphy_cas;
            CyPhy.RootFolder          rf = CyPhyClasses.RootFolder.GetRootFolder((MgaProject)project);
            cyphy_cas = rf.Children.ComponentAssembliesCollection.Where(d => d.Name == typeof(CyPhyClasses.ComponentAssemblies).Name).FirstOrDefault();
            if (cyphy_cas == null)
            {
                cyphy_cas      = CyPhyClasses.ComponentAssemblies.Create(rf);
                cyphy_cas.Name = typeof(CyPhyClasses.ComponentAssemblies).Name;
            }
            CyPhy.ComponentAssembly cyphy_container = CyPhyClasses.ComponentAssembly.Create(cyphy_cas);
            // container.Name = ad_import.Name; RootContainer has a name too
            // TODO: check ad_import.SchemaVersion
            int designID;

            if (int.TryParse(ad_import.DesignID, out designID))
            {
                cyphy_container.Attributes.ID = designID;
            }
            if (string.IsNullOrEmpty(ad_import.RootContainer.Description) == false)
            {
                cyphy_container.Attributes.Description = ad_import.RootContainer.Description;
            }
            return(cyphy_container);
        }
コード例 #3
0
        public void Export()
        {
            avm.Design design = null;
            proj.PerformInTransaction(delegate
            {
                // Retrieve design contain as MgaObject
                MgaObject objDesignContainer = null;
                objDesignContainer           = proj.get_ObjectByPath(@"DesignSpaces/DesignContainer");
                Assert.NotNull(objDesignContainer);

                // Cast as DesignContainer and run converter
                var designContainer = ISIS.GME.Dsml.CyPhyML.Classes.DesignContainer.Cast(objDesignContainer);
                design = CyPhy2DesignInterchange.CyPhy2DesignInterchange.Convert(designContainer);
            });
            Assert.NotNull(design);

            String pathXmlOut = Path.Combine(fixture.PathTest, "DesignContainer.adm");

            using (StreamWriter sw = new StreamWriter(pathXmlOut, false))
            {
                sw.Write(design.Serialize());
            }

            var checker = new LayoutDataChecker();
            var result  = checker.Check(design.RootContainer);

            if (result.Any())
            {
                String msg = Environment.NewLine +
                             String.Join(Environment.NewLine,
                                         result);
                Assert.True(false, msg);
            }
        }
コード例 #4
0
ファイル: DupComponentIDs.cs プロジェクト: landunin/meta-core
        public void DupPortIds()
        {
            String pathCA = "ComponentAssemblies/DupPortIds";

            Xunit.Assert.Throws(typeof(ApplicationException), () =>
            {
                avm.Design design = Convert(pathCA);
            });
        }
コード例 #5
0
        public Model ImportFile(string inputFilePath, DesignImportMode mode = DesignImportMode.CREATE_DS)
        {
            writeMessage(String.Format("Importing {0}", inputFilePath), MessageType.INFO);

            UnzipToTemp unzip       = null;
            bool        bZipArchive = Path.GetExtension(inputFilePath).Equals(".adp");

            if (bZipArchive)
            {
                unzip = new UnzipToTemp(null);
                List <string> entries = unzip.UnzipFile(inputFilePath);
                inputFilePath = entries.Where(entry => Path.GetDirectoryName(entry) == "" && entry.ToLower().EndsWith(".adm")).FirstOrDefault();
                if (inputFilePath != null)
                {
                    inputFilePath = Path.Combine(unzip.TempDirDestination, inputFilePath);
                }
            }

            Model rtn = null;

            avm.Design ad_import = null;
            using (unzip)
            {
                using (StreamReader streamReader = new StreamReader(inputFilePath))
                {
                    ad_import = CyPhyDesignImporterInterpreter.DeserializeAvmDesignXml(streamReader);
                }
                if (ad_import == null)
                {
                    throw new Exception("Could not load ADM file.");
                }

                rtn = ImportDesign(ad_import, mode);

                // Copy artifacts
                if (bZipArchive)
                {
                    // Delete ADM file from tmp folder
                    File.Delete(inputFilePath);

                    foreach (var keyAndEntity in id2DesignEntity)
                    {
                        string id       = keyAndEntity.Key;
                        var    ca       = keyAndEntity.Value as CyPhy.ComponentAssembly;
                        string tempPath = Path.Combine(unzip.TempDirDestination, id);
                        if (Directory.Exists(tempPath))
                        {
                            var pathCA = ca.GetDirectoryPath(ComponentLibraryManager.PathConvention.ABSOLUTE);
                            DirectoryCopy(tempPath, pathCA, true);
                        }
                    }
                }
            }

            return(rtn);
        }
コード例 #6
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void DS_CustomFormula()
        {
            String pathDS = "DesignSpaces/DC_CustomFormula";

            avm.Design design = Convert(pathDS);

            // Get objects
            var rc = design.RootContainer;

            Assert.NotNull(rc);
            var cf1 = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name == "CustomFormula1");

            Assert.NotNull(cf1);
            var cf2 = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name == "CustomFormula2");

            Assert.NotNull(cf2);
            var prop1 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop1");

            Assert.NotNull(prop1);
            var prop2 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop2");

            Assert.NotNull(prop2);
            var prop3 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop3");

            Assert.NotNull(prop3);

            // Check Value Flows
            Assert.Equal(2, cf1.Operand.Count);

            var op1_cf1 = cf1.Operand.FirstOrDefault(op => op.ValueSource == prop1.Value.ID);

            Assert.NotNull(op1_cf1);
            Assert.Equal(prop1.Name, op1_cf1.Symbol);

            var op2_cf1 = cf1.Operand.FirstOrDefault(op => op.ValueSource == prop2.Value.ID);

            Assert.NotNull(op2_cf1);
            Assert.Equal("A", op2_cf1.Symbol);

            var op1_cf2 = cf2.Operand.FirstOrDefault(op => op.ValueSource == prop1.Value.ID);

            Assert.NotNull(op1_cf2);
            Assert.Equal(prop1.Name, op1_cf2.Symbol);

            var op2_cf2 = cf2.Operand.FirstOrDefault(op => op.ValueSource == cf1.ID);

            Assert.NotNull(op2_cf2);
            Assert.Equal("C", op2_cf2.Symbol);

            var dv = prop3.Value.ValueExpression as avm.DerivedValue;

            Assert.NotNull(dv);
            Assert.Equal(cf2.ID, dv.ValueSource);
        }
コード例 #7
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void CA_SimpleFormula()
        {
            String pathCA = "ComponentAssemblies/SimpleFormula";

            avm.Design design = Convert(pathCA);

            // Get objects
            var rc = design.RootContainer;

            Assert.NotNull(rc);
            var sf1 = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name == "SimpleFormula1");

            Assert.NotNull(sf1);
            var sf2 = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name == "SimpleFormula2");

            Assert.NotNull(sf2);
            var prop1 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop1");

            Assert.NotNull(prop1);
            var prop2 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop2");

            Assert.NotNull(prop2);
            var prop3 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop3");

            Assert.NotNull(prop3);
            var param = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Param");

            Assert.NotNull(param);

            // Check Value Flows
            Assert.Equal(2, sf1.Operand.Count);
            Assert.True(sf1.Operand.Contains(prop1.Value.ID));
            Assert.True(sf1.Operand.Contains(prop2.Value.ID));

            Assert.Equal(2, sf2.Operand.Count);
            Assert.True(sf2.Operand.Contains(prop2.Value.ID));
            Assert.True(sf2.Operand.Contains(sf1.ID));

            var dv = prop3.Value.ValueExpression as avm.DerivedValue;

            Assert.NotNull(dv);
            Assert.Equal(sf2.ID, dv.ValueSource);

            Assert.NotNull(param.Value.ValueExpression);
            Assert.IsType <avm.ParametricValue>(param.Value.ValueExpression);
            var pv_param = param.Value.ValueExpression as avm.ParametricValue;

            Assert.NotNull(pv_param.AssignedValue);
            Assert.IsType <avm.DerivedValue>(pv_param.AssignedValue);
            Assert.Equal(sf2.ID, (pv_param.AssignedValue as avm.DerivedValue).ValueSource);
        }
コード例 #8
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void CA_SubAsmFlowToComponentInstance()
        {
            String pathCA = "ComponentAssemblies/SubAsmFlowToComponentInstance";

            avm.Design design = Convert(pathCA);
            var        rc     = design.RootContainer;

            Assert.NotNull(rc);

            #region Get Objects
            var CompA = rc.ComponentInstance.FirstOrDefault(ci => ci.Name.Equals("CompA"));
            Assert.NotNull(CompA);
            var CompA_Prop1 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Prop1"));
            Assert.NotNull(CompA_Prop1);
            var CompA_Param1 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Param1"));
            Assert.NotNull(CompA_Param1);
            var CompA_Prop2 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Prop2"));
            Assert.NotNull(CompA_Prop2);
            var CompA_Param2 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Param2"));
            Assert.NotNull(CompA_Param2);

            var subAsm = rc.Container1.OfType <avm.Compound>().FirstOrDefault(c => c.Name.Equals("SubAsm"));
            Assert.NotNull(subAsm);
            var in_prop_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_prop"));
            Assert.NotNull(in_prop_prop);
            var in_param_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_prop"));
            Assert.NotNull(in_param_prop);
            var in_prop_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_param"));
            Assert.NotNull(in_prop_param);
            var in_param_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_param"));
            Assert.NotNull(in_param_param);
            var out_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("out_prop"));
            Assert.NotNull(out_prop);
            var out_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("out_param"));
            Assert.NotNull(out_param);
            #endregion

            VerifyComponentPropertySource(out_param.Value.ID, CompA_Param2);
            VerifyComponentPropertySource(out_prop.Value.ID, CompA_Prop2);

            Assert.NotNull(in_param_prop.Value.ValueExpression);
            Assert.IsType <avm.ParametricValue>(in_param_prop.Value.ValueExpression);
            var pv_in_param_prop = in_param_prop.Value.ValueExpression as avm.ParametricValue;
            Assert.NotNull(pv_in_param_prop.AssignedValue);
            Assert.IsType <avm.DerivedValue>(pv_in_param_prop.AssignedValue);
            Assert.Equal(CompA_Prop1.Value.ID, (pv_in_param_prop.AssignedValue as avm.DerivedValue).ValueSource);
        }
コード例 #9
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void CA_SimpleFormula_OpTypes()
        {
            String pathCA = "ComponentAssemblies/SimpleFormula_OpTypes";

            avm.Design design = Convert(pathCA);
            var        rc     = design.RootContainer;

            Assert.NotNull(rc);

            Assert.Equal(6, rc.Formula.OfType <avm.SimpleFormula>().Count());

            foreach (var sf in rc.Formula.OfType <avm.SimpleFormula>())
            {
                Assert.True(sf.OperationSpecified);
                // The name of the SimpleFormula object will match the operation type.
                Assert.Equal(sf.Name, sf.Operation.ToString());
            }
        }
コード例 #10
0
        private void TestPortsAndConnections <T>() where T : avm.Port
        {
            String pathCA = "ca/Tonka";

            avm.Design design = fixture.Convert(pathCA);

            var rc = design.RootContainer;

            Assert.NotNull(rc);

            #region get components and containers
            var topconnector = rc.Connector.First(c => c.Name.Equals("topconnector"));
            var comp1        = rc.ComponentInstance.First(ci => ci.Name.Equals("comp1"));
            var comp2        = rc.ComponentInstance.First(ci => ci.Name.Equals("comp2"));
            var subasm       = rc.Container1.OfType <avm.Compound>().First();
            var comp3        = subasm.ComponentInstance.First();
            #endregion

            var domainPortTypeName = typeof(T).Name;

            #region get ports
            var top_domainport          = rc.Port.OfType <T>().First();
            var topconnector_domainport = topconnector.Role.OfType <T>().First();
            var comp1_domainport        = comp1.PortInstance.First(pi => pi.IDinComponentModel.Equals(domainPortTypeName));
            var comp2_domainport        = comp2.PortInstance.First(pi => pi.IDinComponentModel.Equals(domainPortTypeName));
            var subasm_domainport       = subasm.Port.OfType <T>().First();
            var comp3_domainport        = comp3.PortInstance.First(pi => pi.IDinComponentModel.Equals(domainPortTypeName));
            #endregion

            #region assert connections
            top_domainport.IsConnectedTo(topconnector_domainport);
            top_domainport.IsConnectedTo(subasm_domainport);

            topconnector_domainport.IsConnectedTo(comp1_domainport);

            comp1_domainport.IsConnectedTo(comp2_domainport);
            comp1_domainport.IsConnectedTo(subasm_domainport);

            subasm_domainport.IsConnectedTo(comp3_domainport);
            #endregion
        }
コード例 #11
0
        public bool CheckForDuplicateIDs(avm.Design d)
        {
            //String str = d.Serialize();
            String str = OpenMETA.Interchange.AvmXmlSerializer.Serialize(d);

            XmlDocument doc = new XmlDocument();

            doc.LoadXml(str);
            XmlNode root = doc.DocumentElement;

            var ls_EncounteredIDs = new List <String>();

            foreach (XmlAttribute node in root.SelectNodes("//@ID"))
            {
                ls_EncounteredIDs.Add(node.Value);
            }

            // Get all duplicate IDs that aren't empty/whitespace
            var duplicates = ls_EncounteredIDs.Where(s => !String.IsNullOrWhiteSpace(s))
                             .GroupBy(s => s)
                             .Where(g => g.Count() > 1)
                             .Select(g => g.Key)
                             .ToList();

            if (duplicates.Any())
            {
                String msg = "Duplicate IDs found in exported design: ";
                foreach (var dupe in duplicates)
                {
                    msg += String.Format("{0}\"{1}\", ", Environment.NewLine, dupe);
                }

                if (Logger != null)
                {
                    Logger.WriteError(msg);
                }
                return(true);
            }

            return(false);
        }
コード例 #12
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void CA_FlowBetweenComponentInstances()
        {
            String pathCA = "ComponentAssemblies/FlowBetweenComponentInstances";

            avm.Design design = Convert(pathCA);
            var        rc     = design.RootContainer;

            Assert.NotNull(rc);

            var CompA = rc.ComponentInstance.FirstOrDefault(ci => ci.Name.Equals("CompA"));

            Assert.NotNull(CompA);
            var CompA_Prop1 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Prop1"));

            Assert.NotNull(CompA_Prop1);
            var CompA_Param1 = CompA.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Param1"));

            Assert.NotNull(CompA_Param1);

            var CompB = rc.ComponentInstance.FirstOrDefault(ci => ci.Name.Equals("CompB"));

            Assert.NotNull(CompB);
            var CompB_Prop1 = CompB.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Prop1"));

            Assert.NotNull(CompB_Prop1);
            var CompB_Prop2 = CompB.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Prop2"));

            Assert.NotNull(CompB_Prop2);
            var CompB_Param1 = CompB.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Param1"));

            Assert.NotNull(CompB_Param1);
            var CompB_Param2 = CompB.PrimitivePropertyInstance.FirstOrDefault(ppi => ppi.IDinComponentModel.Equals("Param2"));

            Assert.NotNull(CompB_Param2);

            VerifyComponentPropertySource(CompA_Prop1.Value.ID, CompB_Prop1);
            VerifyComponentPropertySource(CompA_Prop1.Value.ID, CompB_Param2);
            VerifyComponentPropertySource(CompA_Param1.Value.ID, CompB_Param1);
            VerifyComponentPropertySource(CompA_Param1.Value.ID, CompB_Prop2);
        }
コード例 #13
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void DS_SimpleFormula()
        {
            String pathDS = "DesignSpaces/DC_SimpleFormula";

            avm.Design design = Convert(pathDS);

            // Get objects
            var rc = design.RootContainer;

            Assert.NotNull(rc);
            var sf1 = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name == "SimpleFormula1");

            Assert.NotNull(sf1);
            var sf2 = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name == "SimpleFormula2");

            Assert.NotNull(sf2);
            var prop1 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop1");

            Assert.NotNull(prop1);
            var prop2 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop2");

            Assert.NotNull(prop2);
            var prop3 = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name == "Prop3");

            Assert.NotNull(prop3);

            // Check Value Flows
            Assert.Equal(2, sf1.Operand.Count);
            Assert.True(sf1.Operand.Contains(prop1.Value.ID));
            Assert.True(sf1.Operand.Contains(prop2.Value.ID));

            Assert.Equal(2, sf2.Operand.Count);
            Assert.True(sf2.Operand.Contains(prop2.Value.ID));
            Assert.True(sf2.Operand.Contains(sf1.ID));

            var dv = prop3.Value.ValueExpression as avm.DerivedValue;

            Assert.NotNull(dv);
            Assert.Equal(sf2.ID, dv.ValueSource);
        }
コード例 #14
0
        private CyPhy.DesignContainer CreateDesignSpaceRoot(avm.Design ad_import)
        {
            CyPhy.DesignSpace ds;
            CyPhy.RootFolder  rf = CyPhyClasses.RootFolder.GetRootFolder((MgaProject)project);
            ds = rf.Children.DesignSpaceCollection.Where(d => d.Name == "DesignSpaces").FirstOrDefault();
            if (ds == null)
            {
                ds      = CyPhyClasses.DesignSpace.Create(rf);
                ds.Name = "DesignSpaces";
            }

            CyPhy.DesignContainer cyphy_container = CyPhyClasses.DesignContainer.Create(ds);
            // container.Name = ad_import.Name; RootContainer has a name too
            int designID;

            if (int.TryParse(ad_import.DesignID, out designID))
            {
                cyphy_container.Attributes.ID = designID;
            }
            cyphy_container.Attributes.ContainerType = CyPhyClasses.DesignContainer.AttributesClass.ContainerType_enum.Compound;
            return(cyphy_container);
        }
コード例 #15
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void DS_FlowToComponentInstance()
        {
            String pathDS = "DesignSpaces/DC_FlowToComponentInstance";

            avm.Design design = Convert(pathDS);

            #region Get Objects
            var rc = design.RootContainer;
            Assert.NotNull(rc);
            var InSF = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name.Equals("InSF"));
            Assert.NotNull(InSF);
            var InCF = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name.Equals("InCF"));
            Assert.NotNull(InCF);
            var InProp = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("InProp"));
            Assert.NotNull(InProp);
            var InParam = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("InParam"));
            Assert.NotNull(InParam);

            var OutSF = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name.Equals("OutSF"));
            Assert.NotNull(OutSF);
            var OutCF = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name.Equals("OutCF"));
            Assert.NotNull(OutCF);
            var OutProp = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("OutProp"));
            Assert.NotNull(OutProp);
            var OutParam = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("OutParam"));
            Assert.NotNull(OutParam);

            Assert.Equal(1, rc.ComponentInstance.Count);
            var compInst = rc.ComponentInstance.First();

            Assert.NotNull(compInst);
            var in_prop_sf = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_prop_sf"));
            Assert.NotNull(in_prop_sf);
            var in_param_sf = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_param_sf"));
            Assert.NotNull(in_param_sf);
            var in_prop_cf = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_prop_cf"));
            Assert.NotNull(in_prop_cf);
            var in_param_cf = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_param_cf"));
            Assert.NotNull(in_param_cf);
            var in_prop_prop = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_prop_prop"));
            Assert.NotNull(in_prop_prop);
            var in_param_prop = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_param_prop"));
            Assert.NotNull(in_param_prop);
            var in_prop_param = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_prop_param"));
            Assert.NotNull(in_prop_param);
            var in_param_param = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("in_param_param"));
            Assert.NotNull(in_param_param);
            var out_prop = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("out_prop"));
            Assert.NotNull(out_prop);
            var out_param = compInst.PrimitivePropertyInstance.FirstOrDefault(p => p.IDinComponentModel.Equals("out_param"));
            Assert.NotNull(out_param);
            #endregion

            Assert.Equal(4, OutCF.Operand.Count);
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("param_alias") && op.ValueSource.Equals(out_param.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("prop_alias") && op.ValueSource.Equals(out_prop.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("out_param") && op.ValueSource.Equals(out_param.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("out_prop") && op.ValueSource.Equals(out_prop.Value.ID)));

            Assert.Equal(2, OutSF.Operand.Count);
            Assert.Equal(1, OutSF.Operand.Count(op => op.Equals(out_prop.Value.ID)));
            Assert.Equal(1, OutSF.Operand.Count(op => op.Equals(out_param.Value.ID)));

            var dv_outProp = OutProp.Value.ValueExpression as avm.DerivedValue;
            Assert.NotNull(dv_outProp);
            Assert.Equal(out_prop.Value.ID, dv_outProp.ValueSource);

            var pv_outParam = OutParam.Value.ValueExpression as avm.ParametricValue;
            Assert.NotNull(pv_outParam);
            var dv_outParam = pv_outParam.AssignedValue as avm.DerivedValue;
            Assert.NotNull(dv_outParam);
            Assert.Equal(out_param.Value.ID, dv_outParam.ValueSource);

            VerifyComponentPropertySource(InSF.ID, in_prop_sf);
            VerifyComponentPropertySource(InSF.ID, in_param_sf);
            VerifyComponentPropertySource(InCF.ID, in_prop_cf);
            VerifyComponentPropertySource(InCF.ID, in_param_cf);
            VerifyComponentPropertySource(InProp.Value.ID, in_param_prop);
            VerifyComponentPropertySource(InProp.Value.ID, in_prop_prop);
            VerifyComponentPropertySource(InParam.Value.ID, in_param_param);
            VerifyComponentPropertySource(InParam.Value.ID, in_prop_param);

            Assert.Equal("kg", OutParam.Value.Unit);
            Assert.Equal("kg", OutProp.Value.Unit);
            Assert.Equal("kg", InParam.Value.Unit);
            Assert.Equal("kg", InProp.Value.Unit);
        }
コード例 #16
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void DS_FlowToSubAsm()
        {
            String pathDS = "DesignSpaces/DC_FlowToDesignContainer";

            avm.Design design = Convert(pathDS);

            #region Get Objects
            var rc = design.RootContainer;
            Assert.NotNull(rc);
            var InSF = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name.Equals("InSF"));
            Assert.NotNull(InSF);
            var InCF = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name.Equals("InCF"));
            Assert.NotNull(InCF);
            var InProp = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("InProp"));
            Assert.NotNull(InProp);
            var InParam = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("InParam"));
            Assert.NotNull(InParam);

            var OutSF = rc.Formula.OfType <avm.SimpleFormula>().FirstOrDefault(f => f.Name.Equals("OutSF"));
            Assert.NotNull(OutSF);
            var OutCF = rc.Formula.OfType <avm.ComplexFormula>().FirstOrDefault(f => f.Name.Equals("OutCF"));
            Assert.NotNull(OutCF);
            var OutProp = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("OutProp"));
            Assert.NotNull(OutProp);
            var OutParam = rc.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("OutParam"));
            Assert.NotNull(OutParam);

            var subAsm = rc.Container1.OfType <avm.Compound>().FirstOrDefault(c => c.Name.Equals("SubDC"));
            Assert.NotNull(subAsm);
            var in_prop_sf = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_sf"));
            Assert.NotNull(in_prop_sf);
            var in_param_sf = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_sf"));
            Assert.NotNull(in_param_sf);
            var in_prop_cf = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_cf"));
            Assert.NotNull(in_prop_cf);
            var in_param_cf = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_cf"));
            Assert.NotNull(in_param_cf);
            var in_prop_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_prop"));
            Assert.NotNull(in_prop_prop);
            var in_param_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_prop"));
            Assert.NotNull(in_param_prop);
            var in_prop_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_prop_param"));
            Assert.NotNull(in_prop_param);
            var in_param_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("in_param_param"));
            Assert.NotNull(in_param_param);
            var out_prop = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("out_prop"));
            Assert.NotNull(out_prop);
            var out_param = subAsm.Property.OfType <avm.PrimitiveProperty>().FirstOrDefault(p => p.Name.Equals("out_param"));
            Assert.NotNull(out_param);
            #endregion

            Assert.Equal(4, OutCF.Operand.Count);
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("param_alias") && op.ValueSource.Equals(out_param.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("prop_alias") && op.ValueSource.Equals(out_prop.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("out_param") && op.ValueSource.Equals(out_param.Value.ID)));
            Assert.Equal(1, OutCF.Operand.Count(op => op.Symbol.Equals("out_prop") && op.ValueSource.Equals(out_prop.Value.ID)));

            Assert.Equal(2, OutSF.Operand.Count);
            Assert.Equal(1, OutSF.Operand.Count(op => op.Equals(out_prop.Value.ID)));
            Assert.Equal(1, OutSF.Operand.Count(op => op.Equals(out_param.Value.ID)));

            var dv_outProp = OutProp.Value.ValueExpression as avm.DerivedValue;
            Assert.NotNull(dv_outProp);
            Assert.Equal(out_prop.Value.ID, dv_outProp.ValueSource);

            var pv_outParam = OutParam.Value.ValueExpression as avm.ParametricValue;
            Assert.NotNull(pv_outParam);
            var dv_outParam = pv_outParam.AssignedValue as avm.DerivedValue;
            Assert.NotNull(dv_outParam);
            Assert.Equal(out_param.Value.ID, dv_outParam.ValueSource);
        }
コード例 #17
0
        public Model ImportDesign(avm.Design ad_import, DesignImportMode mode = DesignImportMode.CREATE_DS)
        {
            TellCyPhyAddonDontAssignIds();

            // TODO: check ad_import.SchemaVersion
            CyPhy.DesignEntity cyphy_container;

            if (mode == DesignImportMode.CREATE_CA_IF_NO_DS_CONCEPTS)
            {
                bool containsNonCompound         = false;
                Queue <avm.Container> containers = new Queue <avm.Container>();
                containers.Enqueue(ad_import.RootContainer);
                if (ad_import.RootContainer == null)
                {
                    throw new ApplicationException("No RootContainer, or unknown RootContainer type");
                }
                while (containers.Count > 0)
                {
                    avm.Container container = containers.Dequeue();
                    containsNonCompound |= container is avm.Optional || container is avm.Alternative;
                    foreach (var subcontainer in container.Container1)
                    {
                        containers.Enqueue(subcontainer);
                    }
                }
                if (containsNonCompound)
                {
                    cyphy_container = CreateDesignSpaceRoot(ad_import);
                }
                else
                {
                    cyphy_container = CreateComponentAssemblyRoot(ad_import);
                }
            }
            else if (mode == DesignImportMode.CREATE_CAS)
            {
                cyphy_container = CreateComponentAssemblyRoot(ad_import);
            }
            else if (mode == DesignImportMode.CREATE_DS)
            {
                cyphy_container = CreateDesignSpaceRoot(ad_import);
            }
            else
            {
                throw new ArgumentOutOfRangeException("Unrecognized mode " + mode.ToString());
            }

            var ad_container = ad_import.RootContainer;

            ImportContainer(cyphy_container, ad_container);

            processValues();
            processPorts();

            Dictionary <avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget> connectorMap = new Dictionary <avm.ConnectorCompositionTarget, avm.ConnectorCompositionTarget>();

            foreach (var obj in this._avmCyPhyMLObjectMap)
            {
                if (obj.Key is avm.ConnectorCompositionTarget)
                {
                    avm.ConnectorCompositionTarget ad_compositionTarget1 = (avm.ConnectorCompositionTarget)obj.Key;
                    foreach (var ad_compositionTarget2ID in ad_compositionTarget1.ConnectorComposition.Where(id => string.IsNullOrEmpty(id) == false))
                    {
                        var ad_compositionTarget2 = _idConnectorMap[ad_compositionTarget2ID];
                        var cyphy_target          = _avmCyPhyMLObjectMap[ad_compositionTarget2]; // TODO: handle lookup failure
                        if (string.Compare(ad_compositionTarget1.ID, ad_compositionTarget2.ID) < 0)
                        {
                            continue;
                        }
                        connectAcrossHierarchy(obj.Value, cyphy_target, typeof(CyPhy.ConnectorComposition).Name);
                    }
                }
            }

            AddReferenceCoordinateSystemForAssemblyRoot(ad_import, cyphy_container);

            DoLayout();

            return((Model)cyphy_container);
        }
コード例 #18
0
ファイル: ValueFlow.cs プロジェクト: daoos/meta-core
        public void CA_Parameters()
        {
            String pathCA = "ComponentAssemblies/Parameters";

            avm.Design design = Convert(pathCA);
            var        rc     = design.RootContainer;

            Assert.NotNull(rc);

            // HasDefault
            var pv_HasDefault = GetValueExpression(rc, "HasDefault");

            Assert.IsType <avm.FixedValue>(pv_HasDefault.Default);
            Assert.Equal("1", (pv_HasDefault.Default as avm.FixedValue).Value);

            // HasRangeIntegers
            CheckParameterRange(rc, "-2", "2", "HasRangeIntegers");

            // HasRangeReals
            CheckParameterRange(rc, "-2.3", "2.93", "HasRangeReals");

            // HasValue
            var pv_HasValue = GetValueExpression(rc, "HasValue");

            Assert.IsType <avm.FixedValue>(pv_HasValue.AssignedValue);
            var fv_HasValue = pv_HasValue.AssignedValue as avm.FixedValue;

            Assert.Equal("1", fv_HasValue.Value);

            var val_HasValue = GetValue(rc, "HasValue");

            // DerivedValue_HasRangeReals
            CheckParameterRange(rc, "-2.3", "2.93", "DerivedValue_HasRangeReals");
            MustHaveNullDefault(rc, "DerivedValue_HasRangeReals");

            // DerivedValue_HasRangeIntegers
            CheckParameterRange(rc, "-2", "2", "DerivedValue_HasRangeIntegers");
            MustHaveNullDefault(rc, "DerivedValue_HasRangeIntegers");

            // DerivedValue_HasDefault
            var pv_DerivedValue_HasDefault = GetValueExpression(rc, "DerivedValue_HasDefault");

            Assert.NotNull(pv_DerivedValue_HasDefault.Default);
            Assert.IsType <avm.FixedValue>(pv_DerivedValue_HasDefault.Default);
            Assert.Equal("4", (pv_DerivedValue_HasDefault.Default as avm.FixedValue).Value);

            // DerivedValue_HasValue
            var pv_DerivedValue_HasValue = GetValueExpression(rc, "DerivedValue_HasValue");

            Assert.NotNull(pv_DerivedValue_HasValue.AssignedValue);
            Assert.IsType <avm.DerivedValue>(pv_DerivedValue_HasValue.AssignedValue);
            Assert.Equal(val_HasValue.ID, (pv_DerivedValue_HasValue.AssignedValue as avm.DerivedValue).ValueSource);
            MustHaveNullDefault(rc, "DerivedValue_HasValue");

            // InvalidRange_Whitespace
            var pv_InvalidRange_Whitespace = GetValueExpression(rc, "InvalidRange_Whitespace");

            Assert.Null(pv_InvalidRange_Whitespace.Minimum);
            Assert.Null(pv_InvalidRange_Whitespace.Maximum);

            // InvalidRange_OneNumber
            var pv_InvalidRange_OneNumber = GetValueExpression(rc, "InvalidRange_OneNumber");

            Assert.Null(pv_InvalidRange_OneNumber.Minimum);
            Assert.Null(pv_InvalidRange_OneNumber.Maximum);

            // InvalidRange_String
            var pv_InvalidRange_String = GetValueExpression(rc, "InvalidRange_String");

            Assert.Null(pv_InvalidRange_String.Minimum);
            Assert.Null(pv_InvalidRange_String.Maximum);
        }