Skip to content

Commit

Permalink
Merge pull request #1918 from ousttrue/fix/UnityPath
Browse files Browse the repository at this point in the history
UnityPath の UnitTest が失敗するのを修正
  • Loading branch information
ousttrue authored Nov 9, 2022
2 parents 802d0f6 + a278ea8 commit 1e8a6b3
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 14 deletions.
29 changes: 18 additions & 11 deletions Assets/UniGLTF/Runtime/UniGLTF/IO/UnityPath.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public struct UnityPath
{
#if UNITY_EDITOR
#region UnityPath

public string Value
{
get;
Expand Down Expand Up @@ -60,7 +60,7 @@ public bool IsUnderWritableFolder

var packageInfo = GetPackageInfo(packageDirectory);
if (packageInfo == null) return false;

// Local and Embedded packages are editable
if (packageInfo.source == PackageSource.Local
|| packageInfo.source == PackageSource.Embedded) return true;
Expand All @@ -87,7 +87,7 @@ private static PackageInfo GetPackageInfo(string path)

return GetPackageInfo(Path.GetDirectoryName(path));
}

/// <summary>
/// List of packages loaded in unity
/// </summary>
Expand Down Expand Up @@ -147,18 +147,18 @@ public bool HasParent
return !string.IsNullOrEmpty(Value);
}
}

public PathType PathType
{
get
{
if (string.IsNullOrEmpty(Value)) return PathType.Unsuported;

var directory = Path.GetDirectoryName(Value);
if (string.IsNullOrEmpty(directory)) return PathType.Unsuported;

var rootDirectoryName = directory.Split(Path.DirectorySeparatorChar);

switch (rootDirectoryName[0])
{
case "Assets":
Expand Down Expand Up @@ -279,7 +279,14 @@ public UnityPath GetAssetFolder(string suffix)
/// <returns></returns>
public static UnityPath FromUnityPath(string unityPath)
{
if (String.IsNullOrEmpty(unityPath) || unityPath == ".")
if (unityPath == null)
{
return new UnityPath
{
Value = null
};
}
if (unityPath == "" || unityPath == ".")
{
return new UnityPath
{
Expand Down Expand Up @@ -312,7 +319,7 @@ public string FullPath
{
throw new NotImplementedException();
}
return Path.GetFullPath(Value).Replace("\\", "/");
return Path.GetFullPath(Value == "" ? "." : Value).Replace("\\", "/");
}
}

Expand Down Expand Up @@ -343,7 +350,7 @@ public static UnityPath FromFullpath(string fullPath)
{
return new UnityPath("");
}

if (fullPath.FastStartsWith($"{BaseFullPath}/Assets"))
{
return new UnityPath(fullPath.Substring(BaseFullPath.Length + 1));
Expand Down Expand Up @@ -434,7 +441,7 @@ public void EnsureFolder()
{
if (IsNull)
{
throw new NotImplementedException();
return;
}

if (HasParent)
Expand Down Expand Up @@ -519,7 +526,7 @@ public UnityPath GenerateUniqueAssetPath()
}
#endif
}

public enum PathType
{
Assets,
Expand Down
19 changes: 16 additions & 3 deletions Assets/UniGLTF/Tests/UniGLTF/UniGLTFTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,23 @@ public void BufferTest()
[Test]
public void UnityPathTest()
{
// 不正なパス
var nullPath = UnityPath.FromUnityPath(null);
Assert.IsTrue(nullPath.IsNull);
Assert.IsFalse(nullPath.IsUnderWritableFolder);
Assert.AreEqual(UnityPath.FromUnityPath(null), nullPath);

// Application.dataPath のひとつ上
var dataPath = UnityPath.FromUnityPath("");
Assert.IsFalse(dataPath.IsNull);
Assert.IsFalse(dataPath.IsUnderWritableFolder);
Assert.AreNotEqual(nullPath, dataPath);

// Application.dataPath のひとつ上
var root = UnityPath.FromUnityPath(".");
Assert.IsFalse(root.IsNull);
Assert.IsFalse(root.IsUnderWritableFolder);
Assert.AreEqual(UnityPath.FromUnityPath("."), root);
Assert.AreEqual(dataPath, root);

var assets = UnityPath.FromUnityPath("Assets");
Assert.IsFalse(assets.IsNull);
Expand All @@ -178,7 +191,7 @@ public void UnityPathTest()
Assert.IsTrue(assetsChildHoge.IsUnderWritableFolder);
Assert.IsTrue(assetsHoge.IsUnderWritableFolder);
Assert.AreEqual(assetsChildHoge, assetsHoge);


var packages = UnityPath.FromUnityPath("Packages");
Assert.IsFalse(packages.IsNull);
Expand All @@ -192,7 +205,7 @@ public void UnityPathTest()
Assert.IsFalse(packages.IsUnderWritableFolder);
Assert.IsFalse(packagesNUnit.IsUnderWritableFolder);
Assert.AreEqual(packagesChildNUnit, packagesNUnit);

var packagesChildHoge = packages.Child("Hoge");
var packagesHoge = UnityPath.FromUnityPath("Packages/Hoge");
Assert.IsFalse(packagesChildHoge.IsUnderWritableFolder);
Expand Down

0 comments on commit 1e8a6b3

Please sign in to comment.