Пример #1
0
      public static void AddMethodNode(ClassNode classNode, CoverageReport.MethodDescriptor md)
      {
         MethodNode mNode = new MethodNode(md);
         classNode.Nodes.Add(mNode);

         if (md.insBlocks.Length > 1)
         {
            foreach (CoverageReport.InnerBlockData bData in md.insBlocks)
               mNode.Nodes.Add(new BlockVariantTreeNode(bData));
         }
      }
Пример #2
0
      public static TreeView ShowReport(CoverageReport report, TreeView tvItems)
      {
         tvItems.BeginUpdate();

         if (report == null)
            return tvItems;

         foreach (string assemblyName in ReportHelper.GetAssemblies(report))
         {
            AssemblyNode asmNode = new AssemblyNode(assemblyName);

            tvItems.Nodes.Add(asmNode);

            foreach (CoverageReport.TypeDescriptor dType in ReportHelper.GetTypes(report, assemblyName))
            {
               TreeNode namespaceNode = ReportTreeHelper.GetNamespaceNode(asmNode, dType.typeName);
               ClassNode classNode = new ClassNode(dType);

               namespaceNode.Nodes.Add(classNode);

               Dictionary<string, PropertyTreeNode> props = new Dictionary<string, PropertyTreeNode>();

               foreach (CoverageReport.MethodDescriptor md in dType.methods)
               {
                  if ((md.flags & 0x0800) == 0)
                  {
                     ReportTreeHelper.AddMethodNode(classNode, md);
                     continue;
                  }

                  //has special meaning
                  MdSpecial mdSpecial = DefineMdSpecial(md.methodName);
                  string propName = ExtractProperty(mdSpecial, md.methodName);

                  if (mdSpecial == MdSpecial.Unknown)
                  {
                     ReportTreeHelper.AddMethodNode(classNode, md);
                     continue;
                  }

                  PropertyTreeNode propertyNode;
                  if (!props.TryGetValue(propName, out propertyNode))
                  {
                     propertyNode = new PropertyTreeNode(propName);
                     props[propName] = propertyNode;
                     classNode.Nodes.Add(propertyNode);
                  }

                  MethodNode mdNode = new MethodNode(md);
                  switch (mdSpecial)
                  {
                     case MdSpecial.Get:
                     case MdSpecial.Remove:
                        propertyNode.Getter = mdNode;
                        break;
                     case MdSpecial.Set:
                     case MdSpecial.Add:
                        propertyNode.Setter = mdNode;
                        break;
                  }
               }

               foreach (KeyValuePair<string, PropertyTreeNode> kv in props)
               {
                  if (kv.Value.Getter != null) kv.Value.Nodes.Add(kv.Value.Getter);
                  if (kv.Value.Setter != null) kv.Value.Nodes.Add(kv.Value.Setter);
               }
            }

            asmNode.UpdateCoverageInfo();
         }

         tvItems.EndUpdate();


         return tvItems;

      }