// Not used by GME public void ObjectsInvokeEx( MgaProject Project, MgaObject currentobj, MgaObjects selectedobjs, int param) { throw new NotImplementedException(); }
public void NullObjectAndInteractiveMode() { MgaProject project = null; MgaFCO currentObj = null; MgaFCOs fcos = null; MgaObject obj = null; MgaObjects objs = null; IMgaComponentEx interpreter = GetInterpreterByProgID(ProgID); Assert.Throws <ArgumentNullException>(() => { interpreter.Initialize(project); }); Assert.Throws <NotImplementedException>(() => { interpreter.ObjectsInvokeEx(project, obj, objs, 128); }); Assert.Throws <ArgumentNullException>(() => { interpreter.InvokeEx(project, currentObj, fcos, 128); }); Assert.True(File.Exists(this.mgaFile), "Project file does not exist."); string ProjectConnStr = "MGA=" + Path.GetFullPath(this.mgaFile); project = new MgaProject(); project.OpenEx(ProjectConnStr, "CyPhyML", null); try { // project is set, but fcos are not Assert.DoesNotThrow(() => { interpreter.Initialize(project); }); Assert.Throws <ArgumentNullException>(() => { interpreter.InvokeEx(project, currentObj, fcos, 128); }); // fcos are set fcos = (MgaFCOs)Activator.CreateInstance(Type.GetTypeFromProgID("Mga.MgaFCOs")); Assert.DoesNotThrow(() => { interpreter.InvokeEx(project, currentObj, fcos, 128); }); Assert.True(interpreter.InteractiveMode == false, "Interactive is not set correctly. (128) silent mode"); Assert.DoesNotThrow(() => { interpreter.InvokeEx(project, currentObj, fcos, 16); }); Assert.True(interpreter.InteractiveMode == true, "Interactive is not set correctly. (16)"); } finally { project.Close(true); } }
private static void VisitChildren(Statistics.Statistics stats, IMgaObject mgaObject, object subtree) { var tree = (Dictionary <string, object>)subtree; if (mgaObject is MgaFCO && (mgaObject as MgaFCO).ArcheType != null) { stats.Model.InheritanceTree[(new Guid(mgaObject.GetGuidDisp())).ToString("D")] = (new Guid((mgaObject as MgaFCO).ArcheType.GetGuidDisp())).ToString("D"); } else { stats.Model.InheritanceTree[(new Guid(mgaObject.GetGuidDisp())).ToString("D")] = GetGUIDFromInt(mgaObject.MetaBase.MetaRef); } if (mgaObject is MgaFCO) { var numAttr = (mgaObject as MgaFCO).Attributes.Count.ToString(); int num = 0; if (stats.Model.Attributes.TryGetValue(numAttr, out num)) { stats.Model.Attributes[numAttr] = num + 1; } else { stats.Model.Attributes[numAttr] = 1; } } if (mgaObject.ObjType == GME.MGA.Meta.objtype_enum.OBJTYPE_FOLDER || mgaObject.ObjType == GME.MGA.Meta.objtype_enum.OBJTYPE_MODEL) { MgaObjects children = mgaObject.ChildObjects; int numChildren = children.Count; int number = 0; if (stats.Model.Children.TryGetValue(numChildren.ToString(), out number)) { stats.Model.Children[numChildren.ToString()] = number + 1; } else { stats.Model.Children[numChildren.ToString()] = 1; } foreach (MgaObject child in children) { string id = new Guid(child.GetGuidDisp()).ToString("D"); tree[id] = new Dictionary <string, object>(); VisitChildren(stats, child, tree[id]); } } else { int number = 0; if (stats.Model.Children.TryGetValue("0", out number)) { stats.Model.Children["0"] = number + 1; } else { stats.Model.Children["0"] = 1; } } switch (mgaObject.ObjType) { case objtype_enum.OBJTYPE_ATOM: stats.Model.NumberOfAtoms++; break; case objtype_enum.OBJTYPE_MODEL: stats.Model.NumberOfModels++; break; case objtype_enum.OBJTYPE_FOLDER: stats.Model.NumberOfFolders++; break; case objtype_enum.OBJTYPE_CONNECTION: stats.Model.NumberOfConnections++; break; case objtype_enum.OBJTYPE_REFERENCE: stats.Model.NumberOfReferences++; break; case objtype_enum.OBJTYPE_SET: stats.Model.NumberOfSets++; break; default: // TODO: ... break; } }