public void SimpleAbstractDocument()
        {
            XmlSerializer serializer = new XmlSerializer(typeof(NCSchematron.Types.Schema), "http://purl.oclc.org/dsdl/schematron");

            NCSchematron.Types.Schema schema = NCSchematron.Types.Schema.FromFile(FileHelper.FindSchema("abstract-test.sch"));

            XmlDocument doc = new XmlDocument();

            doc.Load(FileHelper.FindDocument("abstract-test.xml"));

            var result = schema.Evaluate(doc.CreateNavigator());

            Assert.IsNotNull(result);
            Assert.AreEqual(2, result.Count);

            // HTML test pattern
            var res = result[0];

            Assert.IsTrue(res.PatternFired);
            Assert.AreEqual(2, res.RuleResults.Length);
            Assert.IsTrue(res.RuleResults[0].RuleFired);
            Assert.AreEqual(2, res.RuleResults[0].ExecutedAssertions.Length);
            Assert.IsFalse(res.RuleResults[0].ExecutedAssertions[0].IsError);
            Assert.AreEqual("A table has at least one row", res.RuleResults[0].ExecutedAssertions[0].Message);
            Assert.IsTrue(res.RuleResults[0].ExecutedAssertions[1].IsError);
            Assert.AreEqual("A table has at least one row", res.RuleResults[0].ExecutedAssertions[1].Message);
            Assert.IsTrue(res.RuleResults[1].RuleFired);
            Assert.AreEqual(2, res.RuleResults[1].ExecutedAssertions.Length);
            Assert.IsFalse(res.RuleResults[1].ExecutedAssertions[0].IsError);
            Assert.AreEqual("A table row has at least one cell", res.RuleResults[1].ExecutedAssertions[0].Message);
            Assert.IsTrue(res.RuleResults[1].ExecutedAssertions[1].IsError);
            Assert.AreEqual("A table row has at least one cell", res.RuleResults[1].ExecutedAssertions[1].Message);

            // cals test pattern
            res = result[1];
            Assert.IsTrue(res.PatternFired);
            Assert.AreEqual(2, res.RuleResults.Length);
            Assert.IsTrue(res.RuleResults[0].RuleFired);
            Assert.AreEqual(2, res.RuleResults[0].ExecutedAssertions.Length);
            Assert.IsFalse(res.RuleResults[0].ExecutedAssertions[0].IsError);
            Assert.AreEqual("A table has at least one row", res.RuleResults[0].ExecutedAssertions[0].Message);
            Assert.IsTrue(res.RuleResults[0].ExecutedAssertions[1].IsError);
            Assert.AreEqual("A table has at least one row", res.RuleResults[0].ExecutedAssertions[1].Message);
            Assert.IsTrue(res.RuleResults[1].RuleFired);
            Assert.AreEqual(2, res.RuleResults[1].ExecutedAssertions.Length);
            Assert.IsFalse(res.RuleResults[1].ExecutedAssertions[0].IsError);
            Assert.AreEqual("A table row has at least one cell", res.RuleResults[1].ExecutedAssertions[0].Message);
            Assert.IsTrue(res.RuleResults[1].ExecutedAssertions[1].IsError);
            Assert.AreEqual("A table row has at least one cell", res.RuleResults[1].ExecutedAssertions[1].Message);
        }
        public void SimpleVariableTest()
        {
            NCSchematron.Types.Schema schema = NCSchematron.Types.Schema.FromFile(FileHelper.FindSchema("VariableTests.sch"));

            XmlDocument doc = new XmlDocument();

            doc.Load(FileHelper.FindDocument("VariableTests.xml"));

            var result = schema.Evaluate(doc.CreateNavigator());

            Assert.IsNotNull(result);
            Assert.AreEqual(1, result.Count);
            Assert.IsTrue(result[0].PatternFired);
            Assert.AreEqual(1, result[0].RuleResults.Length);
            Assert.IsTrue(result[0].RuleResults[0].RuleFired);
            Assert.AreEqual(1, result[0].RuleResults[0].ExecutedAssertions.Length);
            Assert.IsTrue(result[0].RuleResults[0].ExecutedAssertions[0].IsError);
            var expected = "Var1: '1234'\nVar2: 1234\nVar3: 'ABCD'\nVar4: ABCD\nVar5: 'XYZ'\nVar6: XYZ";

            Assert.AreEqual(expected, result[0].RuleResults[0].ExecutedAssertions[0].Message.Trim());
        }