<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- NCoverExplorer (c) 2007 Grant Drake.  -->
<!-- Schema for configuration file to be passed to NCoverExplorer-Console.exe using /config: switch  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="ConsoleSetting">
    <xs:complexType>
      <xs:sequence>
		<!-- Title name to appear on the report (equivalent to /project:xx). Default is blank. -->
		<xs:element name="ProjectName" type="xs:string" minOccurs="0" maxOccurs="1" />
        <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage levels. Default is 95% -->
        <xs:element name="SatisfactoryCoverageThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
        <!-- Threshold for acceptance criteria for coverage reports detailing acceptable coverage as #seqPts rather than %. Default is 0. -->
        <xs:element name="SatisfactoryUnvisitedSequencePoints" type="xs:decimal" minOccurs="0" maxOccurs="1" />
        <!-- Threshold for acceptance criteria for coverage reports detailing acceptable function coverage levels. Default is 80% -->
        <xs:element name="SatisfactoryFunctionThreshold" type="xs:decimal" minOccurs="0" maxOccurs="1" />
        <!-- Filtering to be applied to the results. Use integer (starting from 0=None) or named value. Default is "None". -->
        <xs:element name="TreeFilterStyle" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="None" />
              <xs:enumeration value="HideUnvisited" />
              <xs:enumeration value="HideFullyCovered" />
              <xs:enumeration value="HideThresholdCovered" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <!-- Sorting to be applied to the results. Use integer (starting from 0=Name) or named value. Default is "Name". -->
        <xs:element name="TreeSortStyle" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Name" />
              <xs:enumeration value="ClassLine" />
              <xs:enumeration value="CoveragePercentageAscending" />
              <xs:enumeration value="CoveragePercentageDescending" />
              <xs:enumeration value="UnvisitedSequencePointsAscending" />
              <xs:enumeration value="UnvisitedSequencePointsDescending" />
              <xs:enumeration value="VisitCountAscending" />
              <xs:enumeration value="VisitCountDescending" />
              <xs:enumeration value="FunctionCoverageAscending" />
              <xs:enumeration value="FunctionCoverageDescending" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <!-- Coverage exclusions to exclude specified assemblies, namespaces, classes and/or methods. -->
        <xs:element name="CoverageExclusions" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="CoverageExclusion" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <!-- Module specific coverage thresholds if wanting more granular coverage tolerances. -->
        <xs:element name="ModuleThresholds" minOccurs="0" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
              <xs:element ref="ModuleThreshold" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <!-- Names of the coverage files to merge/report on. Wildcards can be used. -->
        <xs:element name="CoverageFileNames" minOccurs="1" maxOccurs="1">
          <xs:complexType>
            <xs:sequence>
			  <xs:element name="CoverageFileName" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <!-- Report to be generated by running NCoverExplorer.Console. Default is "None". -->
        <xs:element name="ReportType" minOccurs="0" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="None" />
              <xs:enumeration value="ModuleSummary" />
              <xs:enumeration value="ModuleNamespaceSummary" />
              <xs:enumeration value="ModuleClassSummary" />
              <xs:enumeration value="ModuleClassFunctionSummary" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
		<!-- File name for the output HTML report if wanting to generate one. -->
		<xs:element name="HtmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
		<!-- File name for the output XML report if wanting to generate one. -->
		<xs:element name="XmlReportFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
		<!-- File name for the output merged coverage.xml file if any resulting from merging the inputs. -->
		<xs:element name="MergeFileName" type="xs:string" minOccurs="0" maxOccurs="1" />
		<!-- Whether to show the excluded elements in the footer of the output report if being generated. Default is false. -->
		<xs:element name="ShowExcludedFooter" type="xs:boolean" minOccurs="0" maxOccurs="1" />
		<!-- Whether to return a failure exit code if any module is below the minimum coverage threshold. Default is false. -->
		<xs:element name="FailIfBelowMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
		<!-- Whether to return a failure exit code if total coverage is below the minimum coverage threshold. Default is false. -->
		<xs:element name="FailIfBelowCombinedMinimum" type="xs:boolean" minOccurs="0" maxOccurs="1" />
		<!-- For use with the FailIfXXX options - the minimum coverage threshold if not specifying at the module level. -->
		<xs:element name="MinimumCoverage" type="xs:decimal" minOccurs="0" maxOccurs="1" />
		<!-- Whether to suppress virtually all console output when running. Default is false. -->
		<xs:element name="NoLog" type="xs:boolean" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="CoverageExclusion">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="ExclusionType" minOccurs="1" maxOccurs="1">
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="Assembly" />
              <xs:enumeration value="Namespace" />
              <xs:enumeration value="Class" />
              <xs:enumeration value="Method" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="Pattern" type="xs:string" minOccurs="1" maxOccurs="1" />
        <xs:element name="IsRegex" type="xs:boolean" minOccurs="0" maxOccurs="1" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="ModuleThreshold">
    <xs:complexType>
      <xs:attribute name="ModuleName" use="required" type="xs:string" />
      <xs:attribute name="SatisfactoryCoverage" use="required" type="xs:decimal" />
    </xs:complexType>
  </xs:element>
</xs:schema>