public void GetCoverage_TwoMethodsSomeCoverage_100()
        {
            CoveredAssembly ca = new CoveredAssembly();
            CoveredMethod method1 = new CoveredMethod() { CodeSize = 100, CoveredCodeSize = 100 };
            CoveredMethod method2 = new CoveredMethod() { CodeSize = 100, CoveredCodeSize = 0 };
            ca.Methods.Add(method1);
            ca.Methods.Add(method2);

            double coverage = ca.GetCoverage();
            Assert.AreEqual(50, coverage);
        }
        public static CoveredAssemblySet AnalyzeCoverage(XmlDocument doc)
        {
            XmlNodeList assemblyNodes = doc.SelectNodes("PartCoverReport/Assembly");
            CoveredAssemblySet assemblies = new CoveredAssemblySet();
            foreach (XmlNode assemblyNode in assemblyNodes)
            {
                CoveredAssembly assembly = new CoveredAssembly();
                assemblies.Add(assembly);
                assembly.Name = assemblyNode.Attributes["name"].Value;
                string id = assemblyNode.Attributes["id"].Value;

                string xpath = "//Type[@asmref=" + id + "]/Method";
                XmlNodeList methods = doc.SelectNodes(xpath);

                foreach (XmlNode method in methods)
                {

                    string typeName = method.ParentNode.Attributes["name"].Value;

                    CoveredMethod m = new CoveredMethod();
                    m.Name = method.Attributes["name"].Value;
                    m.TypeName = typeName;
                    assembly.Methods.Add(m);

                    XmlNodeList ptNodes = method.SelectNodes("pt");

                    if (ptNodes.Count == 0)
                    {
                        m.CodeSize += int.Parse(method.Attributes["bodysize"].Value);
                    }
                    else
                    {
                        foreach (XmlNode ptNode in ptNodes)
                        {
                            int length = int.Parse(ptNode.Attributes["len"].Value);
                            int visit = int.Parse(ptNode.Attributes["visit"].Value);
                            m.CodeSize += length;
                            if (visit > 0)
                            {
                                m.CoveredCodeSize += length;
                            }
                        }
                    }
                }
            }
            return assemblies;
        }