/* tslint:disable:no-unused-variable */ // // # File System // Using the file system requires the FileSystem module. // ``` JavaScript import fs = require("file-system"); // ``` // The pre-required `fs` module is used throughout the following code snippets. // import TKUnit = require("./TKUnit"); import appModule = require("application"); import platform = require("platform"); // // ## Path // export var testPathNormalize = function () { // // ### Normalize a Path // ``` JavaScript var documents = fs.knownFolders.documents(); var testPath = "///test.txt"; //// Get a normalized path such as /test.txt from ///test.txt var normalizedPath = fs.path.normalize(documents.path + testPath); // var expected = documents.path + "/test.txt"; TKUnit.assert(normalizedPath === expected); // // ``` // }; export var testPathJoin = function () { // // ### Path Join // Concatenate a path to a file by providing multiple path arguments. // ``` JavaScript var documents = fs.knownFolders.documents(); //// Generate a path like /myFiles/test.txt var path = fs.path.join(documents.path, "myFiles", "test.txt"); // var expected = documents.path + "/myFiles/test.txt"; TKUnit.assert(path === expected); // // ``` // }; export var testPathSeparator = function () { // // ### Get the Path Separator // ``` JavaScript //// An OS dependent path separator, "\" or "/". var separator = fs.path.separator; // var expected = "/"; TKUnit.assert(separator === expected); // // ``` // }; export var testFileFromPath = function () { // // ### Get or Create a File With Path // The following example writes some text to a file created for path. // It will create a new file or overwrite an existing file. // ``` JavaScript var documents = fs.knownFolders.documents(); var path = fs.path.join(documents.path, "FileFromPath.txt"); var file = fs.File.fromPath(path); //// Writing text to the file. file.writeText("Something") .then(function () { //// Succeeded writing to the file. // file.readText() .then(function (content) { TKUnit.assert(content === "Something", "File read/write not working."); file.remove(); }, function (error) { TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); }); // }, function (error) { //// Failed to write to the file. // TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); // }); // ``` // } export var testFolderFromPath = function () { // // ### Get or Create a Folder With Path // ``` JavaScript var path = fs.path.join(fs.knownFolders.documents().path, "music"); var folder = fs.Folder.fromPath(path); // TKUnit.assert(folder, "Folder.getFolder API not working."); TKUnit.assert(fs.Folder.exists(folder.path), "Folder.getFolder API not working."); folder.remove(); // // ``` // } // // ## Create // export var testFileWrite = function () { // // ### Writing a string to a File // The following example writes some text to a file. // It will create a new file or overwrite an existing file. // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("Test_Write.txt"); //// Writing text to the file. file.writeText("Something") .then(function () { //// Succeeded writing to the file. // file.readText() .then(function (content) { TKUnit.assert(content === "Something", "File read/write not working."); file.remove(); }, function (error) { TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); }); // }, function (error) { //// Failed to write to the file. // TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); // }); // ``` // }; export var testGetFile = function () { // // ### Get or Create a File // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("NewFileToCreate.txt"); // TKUnit.assert(file, "File.getFile API not working."); TKUnit.assert(fs.File.exists(file.path), "File.getFile API not working."); file.remove(); // // ``` // } export var testGetFolder = function () { // // ### Get or Create a Folder // ``` JavaScript var documents = fs.knownFolders.documents(); var folder = documents.getFolder("NewFolderToCreate"); // TKUnit.assert(folder, "Folder.getFolder API not working."); TKUnit.assert(fs.Folder.exists(folder.path), "Folder.getFolder API not working."); folder.remove(); // // ``` // }; // // ## Read // export var testFileRead = function () { // // ### Reading from a File // The following example writes some text to a file and then reads it back. // ``` JavaScript var documents = fs.knownFolders.documents(); var myFile = documents.getFile("Test_Write.txt"); var written: boolean; //// Writing text to the file. myFile.writeText("Something") .then(function () { //// Succeeded writing to the file. //// Getting back the contents of the file. myFile.readText() .then(function (content) { //// Successfully read the file's content. // written = content === "Something"; TKUnit.assert(written, "File read/write not working."); myFile.remove(); // }, function (error) { //// Failed to read from the file. // TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); // }); }, function (error) { //// Failed to write to the file. // TKUnit.assert(false, "Failed to read/write text"); //console.dump(error); // }); // ``` // }; export var testFileReadWriteBinary = function () { // // ### Reading/writing binary data from/to a File // ``` JavaScript var fileName = "logo.png"; var error; var sourceFile = fs.File.fromPath(__dirname + "/" + fileName); var destinationFile = fs.knownFolders.documents().getFile(fileName); var source = sourceFile.readSync(e=> { error = e; }); destinationFile.writeSync(source, e=> { error = e; }); // var destination = destinationFile.readSync(e=> { error = e; }); TKUnit.assertNull(error); if (platform.device.os === platform.platformNames.ios) { TKUnit.assertTrue(source.isEqualToData(destination)); } else { TKUnit.assertEqual(new java.io.File(sourceFile.path).length(), new java.io.File(destinationFile.path).length()); } destinationFile.removeSync(); // // ``` // }; export var testGetKnownFolders = function () { // // ### Getting the Known Folders // Each app has several well known folders. This is how to access them: // ``` JavaScript //// Getting the application's 'documents' folder. var documents = fs.knownFolders.documents(); // TKUnit.assert(documents, "Could not retrieve the Documents known folder."); TKUnit.assert(documents.isKnown, "The Documents folder should have its isKnown property set to true."); // //// Getting the application's 'temp' folder. var temp = fs.knownFolders.temp(); // TKUnit.assert(temp, "Could not retrieve the Temporary known folder."); TKUnit.assert(temp.isKnown, "The Temporary folder should have its isKnown property set to true."); // // ``` // }; export var testGetEntities = function () { // // ### Getting Folder Contents // Getting all files and folders within a folder: // ``` JavaScript var documents = fs.knownFolders.documents(); // var file = documents.getFile("Test.txt"); var file1 = documents.getFile("Test1.txt"); var fileFound, file1Found; // IMPORTANT: console.log is mocked to make the snippet pretty. var globalConsole = console; var console = { log: function (file) { if (file === "Test.txt") { fileFound = true; } else if (file === "Test1.txt") { file1Found = true; } } }; // documents.getEntities() .then(function (entities) { //// entities is array with the document's files and folders. entities.forEach(function (entity) { console.log(entity.name); }); // TKUnit.assert(fileFound, "Failed to enumerate Test.txt"); TKUnit.assert(file1Found, "Failed to enumerate Test1.txt"); file.remove(); file1.remove(); // }, function (error) { //// Failed to obtain folder's contents. // globalConsole.error(error.message); }); // ``` // }; export var testEnumEntities = function () { // // ### Enumerating Folder Contents // Getting all folder entities in array may be slow with large number of files. // Enumerating the folder entities would iterate the files one by one without blocking the UI. // ``` JavaScript var documents = fs.knownFolders.documents(); // var file = documents.getFile("Test.txt"); var file1 = documents.getFile("Test1.txt"); var testFolder = documents.getFolder("testFolder"); var fileFound = false; var file1Found = false; var testFolderFound = false; var console = { log: function (file) { if (file === "Test.txt") { fileFound = true; } else if (file === "Test1.txt") { file1Found = true; } else if (file === "testFolder") { testFolderFound = true; } } } // documents.eachEntity(function (entity) { console.log(entity.name); //// Return true to continue, or return false to stop the iteration. return true; }); // TKUnit.assert(fileFound, "Failed to enumerate Test.txt"); TKUnit.assert(file1Found, "Failed to enumerate Test1.txt"); TKUnit.assert(testFolderFound, "Failed to enumerate testFolder"); file.remove(); file1.remove(); testFolder.remove(); // // ``` // }; export var testGetParent = function () { // // ### Getting Parent Folder // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("Test.txt"); // TKUnit.assert(file, "Failed to create file in the Documents folder."); // //// The parent folder of the file would be the documents folder. var parent = file.parent; // TKUnit.assert(documents === parent, "The parent folder should be the Documents folder."); file.remove(); // // ``` // }; export var testFileNameExtension = function () { // // ### Getting File Name and Extension // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("Test.txt"); //// Getting the file name "Test.txt". var fileName = file.name; //// Getting the file extension ".txt". var fileExtension = file.extension; // TKUnit.assert(fileName === "Test.txt", "Wrong file name."); TKUnit.assert(fileExtension === ".txt", "Wrong extension."); file.remove(); // // ``` // }; export var testFileExists = function () { // // ### Checking if a File Exists // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("Test.txt"); var exists = fs.File.exists(file.path); // TKUnit.assert(exists, "File.exists API not working."); exists = fs.File.exists(file.path + "_"); TKUnit.assert(!exists, "File.exists API not working."); file.remove(); // // ``` // }; export var testFolderExists = function () { // // ### Checking if a Folder Exists // ``` JavaScript var documents = fs.knownFolders.documents(); var exists = fs.Folder.exists(documents.path); // TKUnit.assert(exists, "Folder.exists API not working."); exists = fs.Folder.exists(documents.path + "_"); TKUnit.assert(!exists, "Folder.exists API not working."); // // ``` // }; export var testContainsFile = function () { var folder = fs.knownFolders.documents(); var file = folder.getFile("Test.txt"); var contains = folder.contains("Test.txt"); TKUnit.assert(contains, "Folder.contains API not working."); contains = folder.contains("Test_xxx.txt"); TKUnit.assert(!contains, "Folder.contains API not working."); file.remove(); }; // // ## Update // export var testFileRename = function () { // // ### Renaming a File // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("Test.txt"); file.rename("Test_renamed.txt") .then(function (result) { //// Successfully Renamed. // TKUnit.assert(file.name === "Test_renamed.txt", "File.rename API not working."); file.remove(); documents.getFile("Test.txt").remove(); // }, function (error) { //// Failed to rename the file. // TKUnit.assert(false, "Failed to rename file"); // }); // ``` // }; export var testFolderRename = function () { // // ### Renaming a Folder // ``` JavaScript var folder = fs.knownFolders.documents(); var myFolder = folder.getFolder("Test__"); myFolder.rename("Something") .then(function (result) { //// Successfully Renamed. // TKUnit.assert(myFolder.name === "Something", "Folder.rename API not working."); myFolder.remove(); folder.getFolder("Test__").remove(); // }, function (error) { //// Failed to rename the folder. // TKUnit.assert(false, "Folder.rename API not working."); // }); // ``` // }; // // ## Delete // export var testFileRemove = function () { // // ### Removing a File // To 'delete', 'remove' or 'unlink' a file use the file's remove method: // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFile("AFileToRemove.txt"); file.remove() .then(function (result) { //// Success removing the file. // TKUnit.assert(!fs.File.exists(file.path)); // }, function (error) { //// Failed to remove the file. // TKUnit.assert(false, "File.remove API not working."); // }); // ``` // }; export var testFolderRemove = function () { // // ### Removing a Folder // ``` JavaScript var documents = fs.knownFolders.documents(); var file = documents.getFolder("AFolderToRemove"); //// Remove a folder and recursively its content. file.remove() .then(function (result) { //// Success removing the folder. // TKUnit.assert(!fs.File.exists(file.path)); // }, function (error) { //// Failed to remove the folder. // TKUnit.assert(false, "File.remove API not working."); // }); // ``` // } export var testFolderClear = function () { // // ### Clearing the Contents of a Folder // The clear method removes all files within a folder. // ``` JavaScript var documents = fs.knownFolders.documents(); var folder = documents.getFolder("testFolderEmpty"); // folder.getFile("Test1.txt"); folder.getFile("Test2.txt"); var emptied; // folder.clear() .then(function () { //// Successfully cleared the folder. // emptied = true; // }, function (error) { //// Failed to clear the folder. // TKUnit.assert(false, error.message); // }); // folder.getEntities() .then(function (entities) { TKUnit.assert(entities.length === 0, "Failed to clear a Folder"); folder.remove(); }); // // ``` // }; // misc export var testKnownFolderRename = function () { // You can rename known folders in android - so skip this test. if (!appModule.android) { var folder = fs.knownFolders.documents(); folder.rename("Something") .then(function (result) { TKUnit.assert(false, "Known folders should not be renamed."); }, function (error) { TKUnit.assert(true); }); } }; export function testKnownFolderRemove(done) { var result; var knownFolder = fs.knownFolders.temp(); knownFolder.remove().then( function () { done(new Error("Remove known folder should resolve as error.")); }, function (error) { done(null); }); }; export function test_FSEntity_Properties() { var documents = fs.knownFolders.documents(); var file = documents.getFile("Test_File.txt"); TKUnit.assert(file.extension === ".txt", "FileEntity.extension not working."); TKUnit.assert(file.isLocked === false, "FileEntity.isLocked not working."); TKUnit.assert(file.lastModified instanceof Date, "FileEntity.lastModified not working."); TKUnit.assert(file.name === "Test_File.txt", "FileEntity.name not working."); TKUnit.assert(file.parent === documents, "FileEntity.parent not working."); file.remove(); } export function test_UnlockAfterWrite(done) { var file = fs.knownFolders.documents().getFile("Test_File_Lock.txt"); file.writeText("Hello World!").then(() => { return file.readText(); }).then(value => { TKUnit.assert(value === "Hello World!"); return file.remove(); }).then(() => done()) .catch(done); }