public void CreateRelativeInNotStraightParentNamespace()
        {
            IResource res  = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Core.IO/TestResource.txt");
            IResource res2 = res.CreateRelative("../../Objects/Factory/TestResource.txt");

            AssertResourceContent(res2, "Oragon.Spring.Objects.Factory.TestResource.txt");
        }
        public void CreateRelativeInParentNamespace()
        {
            IResource res  = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Core.IO/TestResource.txt");
            IResource res2 = res.CreateRelative("../../TestResource.txt");

            AssertResourceContent(res2, "Oragon.Spring.TestResource.txt");
        }
        public void CreateRelativeToRoot()
        {
            IResource res  = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Spring/TestResource.txt");
            IResource res2 = res.CreateRelative("/Oragon.Spring.Core.IO/TestResource.txt");

            AssertResourceContent(res2, "Oragon.Spring.Core.IO.TestResource.txt");
        }
        public void CreateRelativeInChildNamespaceWithoutPrefix()
        {
            IResource res  = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Spring/TestResource.txt");
            IResource res2 = res.CreateRelative("Core.IO/TestResource.txt");

            AssertResourceContent(res2, "Oragon.Spring.Core.IO.TestResource.txt");
        }
        public void CreateInvalidAssemblyResource()
        {
            IResource res = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Xyz/InvalidResource.txt");

            Assert.IsFalse(res.Exists, "Exists should return false");
            Assert.IsNull(res.InputStream, "Stream should be null");
        }
        public void CreateValidAssemblyResource()
        {
            IResource res = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Spring/TestResource.txt");

            AssertResourceContent(res, "Oragon.Spring.TestResource.txt");
            IResource res2 = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Core.IO/TestResource.txt");

            AssertResourceContent(res2, "Oragon.Spring.Core.IO.TestResource.txt");
        }
        public void CreateRelativeWithAReferenceToAFileResource()
        {
            IResource res  = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Core.IO/TestResource.txt");
            string    path = "Spring/Objects/Factory/Xml/abstract.xml";
            IResource res2 = res.CreateRelative("file://~/" + path);

            using (StreamReader r = File.OpenText(path))
            {
                string content = r.ReadToEnd();
                using (StreamReader reader = new StreamReader(res2.InputStream))
                {
                    Assert.AreEqual(content, reader.ReadToEnd(), "Resource content is not as expected");
                }
            }
        }
        public void TooMuchParentNamespacesAbove()
        {
            IResource res = new AssemblyResource("assembly://Oragon.Spring.Core.Tests/Oragon.Spring.Core.IO/TestResource.txt");

            Assert.Throws <UriFormatException>(() => res.CreateRelative("../../../../TestResource.txt"));
        }