WuhuIslandTesting/Library/PackageCache/com.unity.scriptablebuildpipeline@1.21.5/Tests/ContentLoadTests.cs

109 lines
3.5 KiB
C#
Raw Normal View History

2025-01-07 02:06:59 +01:00
#if UNITY_2022_2_OR_NEWER
using System.Collections;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using Unity.Loading;
using Unity.Collections;
using Unity.Content;
using System.IO;
using Unity.IO.Archive;
#if UNITY_EDITOR
using UnityEditor.TestTools;
#endif
namespace UnityEditor.Build.Pipeline.Tests.ContentLoad
{
abstract public class ContentFileTests : ContentFileFixture
{
const string kCatalogTextData = "TextData";
[UnityTest]
public IEnumerator LoadFileAsync_CanLoadText()
{
LoadCatalog(kCatalogTextData);
Catalog.AddressableLocation p1Loc = m_Catalog.GetLocation("Text");
Catalog.ContentFileInfo fInfo = m_Catalog.GetFileInfo(p1Loc.Filename);
ArchiveHandle aHandle = ArchiveFileInterface.MountAsync(ContentNamespace.Default, GetVFSFilename(fInfo.Filename), "a:");
aHandle.JobHandle.Complete();
Assert.True(aHandle.JobHandle.IsCompleted);
Assert.True(aHandle.Status == ArchiveStatus.Complete);
try
{
var mountPath = aHandle.GetMountPath();
var vfsPath = Path.Combine(mountPath, fInfo.Filename);
ContentFile fileHandle = ContentLoadInterface.LoadContentFileAsync(m_NS, vfsPath, new NativeArray<ContentFile>());
while (fileHandle.LoadingStatus == LoadingStatus.InProgress)
yield return null;
TextAsset text = (TextAsset)fileHandle.GetObject(p1Loc.LFID);
Assert.NotZero(text.bytes.Length);
fileHandle.UnloadAsync().WaitForCompletion(0);
}
finally
{
aHandle.Unmount();
}
}
#if UNITY_EDITOR
private static System.Int32 randomSeed = 1;
protected override void PrepareBuildLayout()
{
Directory.CreateDirectory("Assets/Temp");
using (var c = CreateCatalog(kCatalogTextData))
{
var path = AssetDatabase.GenerateUniqueAssetPath("Assets/Temp/textfile.txt");
using (var fs = File.Create(path))
{
var bytes = new byte[64 * 1024];
var rand = new System.Random(++randomSeed);
rand.NextBytes(bytes);
for (System.UInt32 j = 0; j < 10; j++)
fs.Write(bytes, 0, bytes.Length);
}
AssetDatabase.ImportAsset(path);
c.Add(new AssetBundleBuild()
{
assetNames = new string[] { path },
addressableNames = new string[] { "Text" }
});
}
}
#endif
}
[UnityPlatform(exclude = new RuntimePlatform[]
{RuntimePlatform.LinuxEditor, RuntimePlatform.OSXEditor, RuntimePlatform.WindowsEditor})]
class ContentFileTests_Standalone : ContentFileTests
{
}
#if UNITY_EDITOR
[UnityPlatform(RuntimePlatform.WindowsEditor)]
[RequirePlatformSupport(BuildTarget.StandaloneWindows64)]
class ContentFileTests_WindowsEditor : ContentFileTests
{
}
[UnityPlatform(RuntimePlatform.OSXEditor)]
[RequirePlatformSupport(BuildTarget.StandaloneOSX)]
class ContentFileTests_OSXEditor : ContentFileTests
{
}
[UnityPlatform(RuntimePlatform.LinuxEditor)]
[RequirePlatformSupport(BuildTarget.StandaloneLinux64)]
class ContentFileTests_LinuxEditor : ContentFileTests
{
}
#endif
}
#endif