diff --git a/Assets/UniGLTF/Runtime/UniGLTF/IO/UnityPath.cs b/Assets/UniGLTF/Runtime/UniGLTF/IO/UnityPath.cs index 70876d1f5..8e051c001 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/IO/UnityPath.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/IO/UnityPath.cs @@ -40,7 +40,8 @@ namespace UniGLTF } /// - /// If under Assets or under an editable Package return true + /// If under Assets or under an editable Package return true. + /// For historical reasons "Assets" is true. /// public bool IsUnderWritableFolder { @@ -152,13 +153,18 @@ namespace UniGLTF { get { - if (string.IsNullOrEmpty(Value)) return PathType.Unsuported; + if (string.IsNullOrEmpty(Value)) + { + return PathType.Unsupported; + } + if (Value == "Assets" || Value.FastStartsWith("Assets/")) + { + // #1941 + return PathType.Assets; + } var directory = Path.GetDirectoryName(Value); - if (string.IsNullOrEmpty(directory)) return PathType.Unsuported; - var rootDirectoryName = directory.Split(Path.DirectorySeparatorChar); - switch (rootDirectoryName[0]) { case "Assets": @@ -166,7 +172,7 @@ namespace UniGLTF case "Packages": return PathType.Packages; default: - return PathType.Unsuported; + return PathType.Unsupported; } } } @@ -531,6 +537,6 @@ namespace UniGLTF { Assets, Packages, - Unsuported, + Unsupported, } } diff --git a/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs b/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs index 14692ee7f..71b44cdcc 100644 --- a/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs +++ b/Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs @@ -159,6 +159,7 @@ namespace UniGLTF } [Test] + [Category("UnityPath")] public void UnityPathTest() { // 不正なパス @@ -215,6 +216,32 @@ namespace UniGLTF //var children = root.TraverseDir().ToArray(); } + [Test] + [Category("UnityPath")] + [TestCase("", PathType.Unsupported)] + [TestCase("Assets", PathType.Assets)] + [TestCase("Assets/何らかの/パス", PathType.Assets)] + [TestCase("Packages", PathType.Unsupported)] + [TestCase("Packages/ローカルパッケージ", PathType.Packages)] + public void UnityPathPathType(string path, PathType pathType) + { + var assets = UnityPath.FromUnityPath(path); + Assert.AreEqual(pathType, assets.PathType); + } + + [Test] + [Category("UnityPath")] + [TestCase("", false)] + [TestCase("Assets", true)] + [TestCase("Assets/何らかの/パス", true)] + [TestCase("Packages", false)] + // [TestCase("Packages/存在するローカルパッケージ", true)] + public void UnityPathWritableTest(string path, bool expected) + { + var assets = UnityPath.FromUnityPath(path); + Assert.AreEqual(expected, assets.IsUnderWritableFolder); + } + [Test] public void VersionChecker() {