public void IsolatedStorageFileSystemAtSubDirectory_AccessesIsolatedStorageSubDirectory()
        {
            using (var store = IsolatedStorageFile.GetMachineStoreForAssembly())
            {
                store.CreateDirectory("sub");
                using (var writer = new StreamWriter(store.OpenFile("sub\\test.txt", FileMode.Create, FileAccess.Write)))
                {
                    writer.Write("test");
                    writer.Flush();
                }

                var directory = new IsolatedStorageDirectory(store);
                var subDirectory = directory.GetDirectory("sub", false);

                var file = subDirectory.GetFile("test.txt");
                file.Exists.ShouldBeTrue();
                using (var reader = new StreamReader(file.Open(FileMode.Open, FileAccess.Read, FileShare.ReadWrite)))
                {
                    reader.ReadToEnd().ShouldEqual("test");
                }

                subDirectory.DeleteContents();
                store.FileExists("sub\\test.txt").ShouldBeFalse();
            }
        }
 public IsolatedStorageFile(string filename, Func<Storage> getStorage, IsolatedStorageDirectory directory)
 {
     this.filename = filename;
     this.getStorage = getStorage;
     this.directory = directory;
     systemFilename = filename.Substring(2); // Skip the "~/" prefix.
 }
 public IsolatedStorageFile(string filename, System.IO.IsolatedStorage.IsolatedStorageFile storage, IsolatedStorageDirectory directory)
 {
     this.filename = filename;
     this.storage = storage;
     this.directory = directory;
     systemFilename = filename.Substring(2); // Skip the "~/" prefix.
 }
 public IsolatedStorageFileWrapper_Tests()
 {
     storage = System.IO.IsolatedStorage.IsolatedStorageFile.GetUserStoreForAssembly();
     directory = new IsolatedStorageDirectory(storage);
     using (var stream = storage.CreateFile("exists.js"))
     {
         "content".AsStream().CopyTo(stream);
         stream.Flush();
     }
 }
        public void GetFileReturnsWrapper()
        {
            storage.CreateFile("test.js").Close();

            var directory = new IsolatedStorageDirectory(storage);
            var file = directory.GetFile("test.js");

            file.ShouldBeType<IsolatedStorageFile>();
            file.FullPath.ShouldEqual("~/test.js");
            file.Directory.ShouldBeSameAs(directory);
        }
        public void GetFilesReturnsFileWrappers()
        {
            storage.CreateFile("test1.js").Close();
            storage.CreateFile("test2.js").Close();

            var directory = new IsolatedStorageDirectory(storage);
            var files = directory.GetFiles("*", SearchOption.AllDirectories).ToArray();

            files[0].ShouldBeType<IsolatedStorageFile>();
            files[0].FullPath.ShouldEqual("~/test1.js");
            files[1].ShouldBeType<IsolatedStorageFile>();
            files[1].FullPath.ShouldEqual("~/test2.js");
        }
        public void CanDeleteSubDirectoryWithContents()
        {
            storage.CreateDirectory("test");
            WriteFile("test/file.txt");
            storage.CreateDirectory("test/sub");
            WriteFile("test/sub/file.txt");

            var directory = new IsolatedStorageDirectory(() => storage);
            var subDirectory = directory.GetDirectory("test");
            subDirectory.Delete();

            storage.GetDirectoryNames("*").ShouldBeEmpty();
        }
 public IsolatedStorageFile(string filename, Storage storage, IsolatedStorageDirectory directory)
     : this(filename, () => storage, directory)
 {
 }
 public IFile GetFile(string filename)
 {
     filename = GetAbsolutePath(filename);
     var parts = filename.Split('/', '\\');
     IsolatedStorageDirectory directory;
     if (parts.Length > 2)
     {
         var subDirectory = string.Join("/", parts.Reverse().Skip(1).Reverse().ToArray());
         directory = new IsolatedStorageDirectory(getStorage, subDirectory);
     }
     else
     {
         directory = this;
     }
     return new IsolatedStorageFile(filename, getStorage, directory);
 }
 public void FullPathDefaultsToForwardSlash()
 {
     var directory = new IsolatedStorageDirectory(storage);
     directory.FullPath.ShouldEqual("~/");
 }
        public void WhenGetFileInSubDirectoryFromRoot_ThenFilesDirectoryIsTheSubDirectory()
        {
            storage.CreateDirectory("test/sub");
            WriteFile("test/sub/file.txt");

            var root = new IsolatedStorageDirectory(() => storage);
            var file = root.GetFile("test/sub/file.txt");
            file.Directory.FullPath.ShouldEqual("~/test/sub");
        }