From: <bo...@us...> - 2010-05-17 13:38:53
|
Revision: 386 http://xmlunit.svn.sourceforge.net/xmlunit/?rev=386&view=rev Author: bodewig Date: 2010-05-17 13:38:46 +0000 (Mon, 17 May 2010) Log Message: ----------- Add SystemId to ISource, enable file-URI tests Modified Paths: -------------- trunk/xmlunit/src/main/net-core/ISource.cs trunk/xmlunit/src/main/net-core/builder/Input.cs trunk/xmlunit/src/main/net-core/input/AbstractSource.cs trunk/xmlunit/src/tests/net-core/builder/InputTest.cs Modified: trunk/xmlunit/src/main/net-core/ISource.cs =================================================================== --- trunk/xmlunit/src/main/net-core/ISource.cs 2010-05-17 12:12:14 UTC (rev 385) +++ trunk/xmlunit/src/main/net-core/ISource.cs 2010-05-17 13:38:46 UTC (rev 386) @@ -16,5 +16,6 @@ namespace net.sf.xmlunit { public interface ISource { XmlReader Reader {get;} + string SystemId {get; set;} } } Modified: trunk/xmlunit/src/main/net-core/builder/Input.cs =================================================================== --- trunk/xmlunit/src/main/net-core/builder/Input.cs 2010-05-17 12:12:14 UTC (rev 385) +++ trunk/xmlunit/src/main/net-core/builder/Input.cs 2010-05-17 13:38:46 UTC (rev 386) @@ -11,6 +11,7 @@ See the License for the specific language governing permissions and limitations under the License. */ +using System; using System.IO; using System.Xml; using System.Xml.Xsl; @@ -52,6 +53,11 @@ internal StreamBuilder(TextReader r) { source = new StreamSource(r); } + internal string SystemId { + set { + source.SystemId = value ?? string.Empty; + } + } public ISource Build() { return source; } @@ -62,11 +68,23 @@ } public static IBuilder FromStream(Stream s) { - return new StreamBuilder(s); + StreamBuilder b = new StreamBuilder(s); + if (s is FileStream) { + b.SystemId = new Uri(Path.GetFullPath((s as FileStream).Name)) + .ToString(); + } + return b; } public static IBuilder FromReader(TextReader r) { - return new StreamBuilder(r); + StreamBuilder b = new StreamBuilder(r); + StreamReader s = r as StreamReader; + if (s != null && s.BaseStream is FileStream) { + b.SystemId = + new Uri(Path.GetFullPath((s.BaseStream as FileStream).Name)) + .ToString(); + } + return b; } public static IBuilder FromMemory(string s) { Modified: trunk/xmlunit/src/main/net-core/input/AbstractSource.cs =================================================================== --- trunk/xmlunit/src/main/net-core/input/AbstractSource.cs 2010-05-17 12:12:14 UTC (rev 385) +++ trunk/xmlunit/src/main/net-core/input/AbstractSource.cs 2010-05-17 13:38:46 UTC (rev 386) @@ -15,14 +15,24 @@ namespace net.sf.xmlunit.input { public abstract class AbstractSource : ISource { + private string systemId; private readonly XmlReader reader; protected AbstractSource(XmlReader r) { reader = r; + systemId = r.BaseURI; } public XmlReader Reader { get { return reader; } } + public string SystemId { + get { + return systemId; + } + set { + systemId = value; + } + } } } Modified: trunk/xmlunit/src/tests/net-core/builder/InputTest.cs =================================================================== --- trunk/xmlunit/src/tests/net-core/builder/InputTest.cs 2010-05-17 12:12:14 UTC (rev 385) +++ trunk/xmlunit/src/tests/net-core/builder/InputTest.cs 2010-05-17 13:38:46 UTC (rev 386) @@ -35,20 +35,28 @@ } [Test] public void ShouldParseAnExistingFileByName() { - AllIsWellFor(Input.FromFile(TestResources.ANIMAL_FILE).Build()); + ISource s = Input.FromFile(TestResources.ANIMAL_FILE).Build(); + AllIsWellFor(s); + Assert.AreEqual(ToFileUri(TestResources.ANIMAL_FILE), s.SystemId); } [Test] public void ShouldParseAnExistingFileFromStream() { using (FileStream fs = new FileStream(TestResources.ANIMAL_FILE, FileMode.Open, FileAccess.Read)) { - AllIsWellFor(Input.FromStream(fs).Build()); + ISource s = Input.FromStream(fs).Build(); + AllIsWellFor(s); + Assert.AreEqual(ToFileUri(TestResources.ANIMAL_FILE), + s.SystemId); } } [Test] public void ShouldParseAnExistingFileFromReader() { using (StreamReader r = new StreamReader(TestResources.ANIMAL_FILE)) { - AllIsWellFor(Input.FromReader(r).Build()); + ISource s = Input.FromReader(r).Build(); + AllIsWellFor(s); + Assert.AreEqual(ToFileUri(TestResources.ANIMAL_FILE), + s.SystemId); } } @@ -61,17 +69,20 @@ AllIsWellFor(Input.FromMemory(ReadTestFile()).Build()); } - [Ignore("looks as if file-URIs didn't work, revisit")] [Test] public void ShouldParseFileFromURIString() { - AllIsWellFor(Input.FromURI("file:" + TestResources.ANIMAL_FILE) - .Build()); + ISource s = Input.FromURI(ToFileUri(TestResources.ANIMAL_FILE)) + .Build(); + AllIsWellFor(s); + Assert.AreEqual(ToFileUri(TestResources.ANIMAL_FILE), + s.SystemId); } - [Ignore("looks as if file-URIs didn't work, revisit")] [Test] public void ShouldParseFileFromURI() { - AllIsWellFor(Input.FromURI(new Uri("file:" - + TestResources.ANIMAL_FILE)) - .Build()); + ISource s = Input.FromURI(new Uri(ToFileUri(TestResources.ANIMAL_FILE))) + .Build(); + AllIsWellFor(s); + Assert.AreEqual(ToFileUri(TestResources.ANIMAL_FILE), + s.SystemId); } [Test] public void ShouldParseATransformationFromSource() { @@ -116,5 +127,9 @@ return ms.ToArray(); } } + + private static string ToFileUri(string path) { + return new Uri(Path.GetFullPath(path)).ToString(); + } } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |