コード例 #1
0
        public bool verify(KnowledgeBase knowledge)
        {
            NTripleListVerifier verifier = new NTripleListVerifier();

            foreach (string nTriple in itsTriples)
            {
                verifier.Expect(nTriple);
            }

            StringWriter  received = new StringWriter();
            NTripleWriter writer   = new NTripleWriter(received);

            knowledge.Write(writer);

            StringReader receivedReader = new StringReader(received.ToString());
            string       receivedLine   = receivedReader.ReadLine();

            while (receivedLine != null)
            {
                string trimmed = receivedLine.Trim();
                if (trimmed.Length > 0 && !trimmed.StartsWith("#"))
                {
                    verifier.Receive(trimmed);
                }
                receivedLine = receivedReader.ReadLine();
            }

            bool verifyResult = verifier.Verify();

            lastFailureDescription = verifier.GetLastFailureDescription();
            return(verifyResult);
        }
コード例 #2
0
            public RdfXmlWriterTestHarness()
            {
                itsOutputWriter = new StringWriter();
                XmlTextWriter xmlWriter = new XmlTextWriter(itsOutputWriter);

                itsRdfWriter = new RdfXmlWriter(xmlWriter);
                itsVerifier  = new NTripleListVerifier();
            }
コード例 #3
0
        public void parseStreamWithEntitiesInNamespaceDeclarationOfRootElementNamespace()
        {
            string rdf = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<!DOCTYPE rdf:RDF [
	<!ENTITY ex 'http://example.com/ns/'>
	<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
]>
<rdf:RDF xmlns:rdf=""&rdf;"" xmlns:ex=""&ex;"">
	<rdf:Description rdf:about=""http://example.com"">
		<ex:value>Test</ex:value>
	</rdf:Description>
</rdf:RDF>";


            SimpleModel model = new SimpleModel(new XsltParserFactory());

            XsltParserFactory parserFactory = new XsltParserFactory();
            Parser            parser        = parserFactory.MakeParser(new ResourceFactory(), new StatementFactory());

            parser.NewStatement += new StatementHandler(model.Add);

            MemoryStream stream = new MemoryStream();
            StreamWriter writer = new StreamWriter(stream);

            writer.Write(rdf);
            writer.Flush();
            stream.Position = 0;

            try {
                parser.Parse(stream, "");
            }
            catch (Exception) { }


            NTripleListVerifier verifier = new NTripleListVerifier();

            verifier.Expect(@"<http://example.com> <http://example.com/ns/value> ""Test"" .");
            foreach (string ntriple in model)
            {
                verifier.Receive(ntriple);
            }

            bool   testPassed         = verifier.Verify();
            string failureDescription = verifier.GetLastFailureDescription() + "\r\nTriples received:\r\n" + model.ToString();

            if (testPassed)
            {
                Console.WriteLine("XsltParserTest.parseWithEntities UNEXPECTEDLY PASSED - entity in namespace declaration problem might have been fixed ");
            }

            Assert.IsTrue(!testPassed); // We exoect this to fail
        }
コード例 #4
0
        public void acidTest()
        {
            SimpleModel expectedModel = new SimpleModel(new XsltParserFactory());

            expectedModel.ParseString(COMPLEX_DOCUMENT, "http://example.com/");

/*
 *    RdfXmlWriter rdfWriterDump = new RdfXmlWriter( new XmlWriterDumper() );
 *    expectedModel.write( rdfWriterDump );
 */

            StringWriter  outputWriter = new StringWriter();
            XmlTextWriter xmlWriter    = new XmlTextWriter(outputWriter);


            RdfXmlWriter rdfWriter = new RdfXmlWriter(xmlWriter);

            // Pass the expected triples through the writer
            expectedModel.Write(rdfWriter);

            SimpleModel receivedModel = new SimpleModel(new XsltParserFactory());

            receivedModel.ParseString(outputWriter.ToString(), "http://example.com/");

/*
 * Console.WriteLine();
 * Console.WriteLine(  outputWriter.ToString() );
 * Console.WriteLine();
 */
            NTripleListVerifier verifier = new NTripleListVerifier();

            foreach (string ntriple in expectedModel)
            {
                verifier.Expect(ntriple);
            }
            foreach (string ntriple in receivedModel)
            {
                verifier.Receive(ntriple);
            }

            // NTripleListVerifier can't do full verify with large numbers of blank nodes
            Assert.IsTrue(verifier.VerifyCounts());
        }
コード例 #5
0
        public void parseReaderWithoutEntities()
        {
            string rdf = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<rdf:RDF xmlns:rdf=""http://www.w3.org/1999/02/22-rdf-syntax-ns#"">
	<rdf:Description rdf:about=""http://example.com"">
		<rdf:value>Test</rdf:value>
	</rdf:Description>
</rdf:RDF>";


            SimpleModel model = new SimpleModel(new XsltParserFactory());

            XsltParserFactory parserFactory = new XsltParserFactory();
            Parser            parser        = parserFactory.MakeParser(new ResourceFactory(), new StatementFactory());

            parser.NewStatement += new StatementHandler(model.Add);
            parser.Parse(new StringReader(rdf), "");


            NTripleListVerifier verifier = new NTripleListVerifier();

            verifier.Expect(@"<http://example.com> <http://www.w3.org/1999/02/22-rdf-syntax-ns#value> ""Test"" .");

            foreach (string ntriple in model)
            {
                verifier.Receive(ntriple);
            }

            bool   testPassed         = verifier.Verify();
            string failureDescription = verifier.GetLastFailureDescription() + "\r\nTriples received:\r\n" + model.ToString();

            if (!testPassed)
            {
                Console.WriteLine("XsltParserTest.parseWithEntities FAILED because ");
                Console.WriteLine(failureDescription);
            }

            Assert.IsTrue(testPassed);
        }