Example #1
0
        public void TestSanitizedFilenameUniqueness()
        {
            CreateTestDirectory();

            string[] similarFilenames =
            {
                "foobar.txt",
                "barfoo.txt",
                "foo_bar.txt",
                "foo/bar.txt",
                "foo\\bar.txt",
                "フーバー.txt",
                "バーフー.txt",
                "フー_バー.txt",
                "フー/バー.txt",
                "フー\\バー.txt",
            };

            Dictionary <string, string> mapFromSanitizedToOriginal = new Dictionary <string, string>();

            foreach (string filename in similarFilenames)
            {
                string sanitizedFilename = FileUtils.SanitizeFilenameAndPreserveUniqueness(filename);

                // Test the sanitization.
                try
                {
                    File.WriteAllText(Path.Combine(sm_TestDirectory, sanitizedFilename), "test");
                }
                catch (System.Exception e)
                {
                    Assert.Fail("\"{0}\" > \"{1}\" not sanitized, {2}.", filename, sanitizedFilename, e.Message);
                }

                // Test uniqueness.
                Debug.LogFormat("{0} maps to {1}", filename, sanitizedFilename);
                if (mapFromSanitizedToOriginal.ContainsKey(sanitizedFilename))
                {
                    Assert.Fail("\"{0}\" and \"{1}\" both sanitize to \"{2}\".",
                                filename,
                                mapFromSanitizedToOriginal[sanitizedFilename],
                                sanitizedFilename);
                }
                else
                {
                    mapFromSanitizedToOriginal.Add(sanitizedFilename, filename);
                }
            }

            DeleteTestDirectory();
        }
Example #2
0
 /// Like the other CreateLocal but passes the name through a sanitizer.
 /// Use this if you don't control where "name" comes from.
 public static ExportFileReference CreateSafeLocal(string originalLocation, string unsafeName)
 {
     return(CreateLocal(originalLocation,
                        FileUtils.SanitizeFilenameAndPreserveUniqueness(unsafeName)));
 }