From: Charles C. <cch...@us...> - 2010-05-23 17:49:26
|
Update of /cvsroot/nant/nant/tests/NAnt.Core/Tasks In directory sfp-cvsdas-3.v30.ch3.sourceforge.com:/tmp/cvs-serv22487/tests/NAnt.Core/Tasks Modified Files: XmlPeekTest.cs Log Message: Feature 1560566 - Enhanced <xmlpeek> task. To support XPath functions such as count(). Index: XmlPeekTest.cs =================================================================== RCS file: /cvsroot/nant/nant/tests/NAnt.Core/Tasks/XmlPeekTest.cs,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** XmlPeekTest.cs 8 Apr 2010 14:15:22 -0000 1.6 --- XmlPeekTest.cs 23 May 2010 17:49:17 -0000 1.7 *************** *** 16,19 **** --- 16,21 ---- // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // + // Ian McLean (ia...@ac...) + // Mitch Denny (mit...@mo...) // Gert Driesen (dr...@us...) *************** *** 55,58 **** --- 57,73 ---- + "</appSettings>" + "</configuration>"; + + private const string _validXmlWithMultipleNodes = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + + "<configuration>" + + "<appSettings>" + + "<add key=\"server\" value=\"testhost.somecompany.com\" />" + + "<add key=\"server.backup\" value=\"backuphost1.somecompany.com\" />" + + "<add key=\"server.backup\" value=\"backuphost2.somecompany.com\" />" + + "</appSettings>" + + "<constants>" + + "<pi>3.14159265</pi>" + + "<c>2.99E8</c>" // speed of light + + "</constants>" + + "</configuration>"; private const string _validXmlWithNamespace = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" *************** *** 87,90 **** --- 102,194 ---- [Test] + public void Test_PeekValidXmlRetrieveDoubleValue() { + // write xml content to file + string xmlFile = CreateTempFile("validxml.xml", _validXmlWithMultipleNodes); + + // set-up task attributes + string taskAttributes = string.Format(CultureInfo.InvariantCulture, + "file=\"{0}\" xpath=\"/configuration/constants/pi\"", + xmlFile); + + // execute build + string buildLog = RunBuild(string.Format(CultureInfo.InvariantCulture, _projectXml, + taskAttributes, "${configuration.server}")); + + // ensure the correct node was read + Assert.IsTrue(buildLog.IndexOf("configuration.server=3.14159265") != -1, + "XPath count() failed."); + + // set-up task attributes + taskAttributes = string.Format(CultureInfo.InvariantCulture, + "file=\"{0}\" xpath=\"/configuration/constants/c\"", + xmlFile); + + // execute build + buildLog = RunBuild(string.Format(CultureInfo.InvariantCulture, _projectXml, + taskAttributes, "${configuration.server}")); + + // ensure the correct node was read + Assert.IsTrue(buildLog.IndexOf("configuration.server=2.99E8") != -1, + "XPath count() failed."); + } + + [Test] + public void Test_PeekValidXmlUsingXPathNumericFunction() { + // write xml content to file + string xmlFile = CreateTempFile("validxml.xml", _validXmlWithMultipleNodes); + + // set-up task attributes + string taskAttributes = string.Format(CultureInfo.InvariantCulture, + "file=\"{0}\" xpath=\"count(/configuration/appSettings/add)\"", + xmlFile); + + // execute build + string buildLog = RunBuild(string.Format(CultureInfo.InvariantCulture, _projectXml, + taskAttributes, "${configuration.server}")); + + // ensure the correct node was read + Assert.IsTrue(buildLog.IndexOf("configuration.server=3") != -1, + "XPath count() failed."); + } + + [Test] + public void Test_PeekValidXmlUsingXPathBooleanFunction() { + // write xml content to file + string xmlFile = CreateTempFile("validxml.xml", _validXmlWithMultipleNodes); + + // set-up task attributes + string taskAttributes = string.Format(CultureInfo.InvariantCulture, + "file=\"{0}\" xpath=\"boolean(count(/configuration/appSettings/add) = 3)\"", + xmlFile); + + // execute build + string buildLog = RunBuild(string.Format(CultureInfo.InvariantCulture, _projectXml, + taskAttributes, "${configuration.server}")); + + // ensure the correct node was read + Assert.IsTrue(buildLog.IndexOf("configuration.server=True") != -1, + "XPath count() failed."); + } + + [Test] + public void Test_PeekValidXmlUsingXPathNodeExpression() { + // write xml content to file + string xmlFile = CreateTempFile("validxml.xml", _validXmlWithMultipleNodes); + + // set-up task attributes + string taskAttributes = string.Format(CultureInfo.InvariantCulture, + "file=\"{0}\" xpath=\"/configuration/appSettings/add[@key='server.backup'][2]/@value\"", + xmlFile); + + // execute build + string buildLog = RunBuild(string.Format(CultureInfo.InvariantCulture, _projectXml, + taskAttributes, "${configuration.server}")); + + // ensure the correct node was read + Assert.IsTrue(buildLog.IndexOf("configuration.server=backuphost2.somecompany.com") != -1, + "XPath expression failed."); + } + + [Test] public void Test_PeekValidXmlWithNamespace() { // write xml content to file |