public void WriteManyFiles()
        {
            fileIOManager.Begin();

            // generate a large dictionary
            var dict = new Dictionary <string, object>();

            var largeArray = new int[10000];

            for (int i = 0; i < largeArray.Length; i++)
            {
                largeArray[i] = i;
            }

            dict["large_array"] = largeArray;


            if (!System.IO.Directory.Exists(path))
            {
                System.IO.Directory.CreateDirectory(path);
            }


            // write lots of JSON files
            int n = 100;

            for (int i = 0; i < n; i++)
            {
                string        fileName = string.Format("{0:000}.json", i);
                WriteFileInfo fileInfo = new WriteFileInfo(WriteFileType.Test, path, fileName);
                Debug.LogFormat("Queueing {0}", fileName);
                fileIOManager.ManageInWorker(() => fileIOManager.WriteJson(dict, fileInfo));
            }

            fileIOManager.End();

            // cleanup files
            var files = System.IO.Directory.GetFiles(path, "*.json");

            foreach (var file in files)
            {
                System.IO.File.Delete(file);
            }
        }
        public void WriteFileEventTest()
        {
            writtenFiles = new List <WriteFileInfo>();
            fileIOManager.onWriteFile.AddListener(new UnityAction <WriteFileInfo>(DoSomethingWithFile));
            fileIOManager.Begin();

            // generate a dictionary
            var dict = new Dictionary <string, object>();

            var intArray = new int[10];

            for (int i = 0; i < intArray.Length; i++)
            {
                intArray[i] = i;
            }
            dict["int_array"] = intArray;

            // write lots of JSON files
            int n = 100;

            WriteFileInfo[] fileInfos = new WriteFileInfo[n];
            for (int i = 0; i < n; i++)
            {
                string        fileName = string.Format("{0:000}.json", i);
                WriteFileInfo fileInfo = new WriteFileInfo(WriteFileType.Test, path, fileName);
                fileInfos[i] = fileInfo;
                Debug.LogFormat("Queueing {0}", fileName);
                fileIOManager.ManageInWorker(() => fileIOManager.WriteJson(dict, fileInfo));
            }

            // end and join
            fileIOManager.End();

            // now check each file was passed to the event (i.e. added to the written files list)
            for (int i = 0; i < n; i++)
            {
                Assert.AreEqual(fileInfos[i], writtenFiles[i]);
            }

            writtenFiles.Clear();
        }
 void DoSomethingWithFile(WriteFileInfo writeFileInfo)
 {
     Debug.LogFormat("Received {0} file: {1}", writeFileInfo.fileType, writeFileInfo.paths[writeFileInfo.paths.Length - 1]);
     System.Threading.Thread.Sleep(100); // sleep here to force producer loop to end early
     writtenFiles.Add(writeFileInfo);
 }