com.alicizax.unity.tuyoogam.../Samples~/Test Sample/Runtime/T2_TestBuldinFileSystem/T2_TestBuldinFileSystem.cs

229 lines
8.2 KiB
C#
Raw Normal View History

2025-01-09 11:31:04 +08:00
using System;
using System.IO;
using System.Text;
using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.U2D;
using UnityEngine.TestTools;
using NUnit.Framework;
using YooAsset;
2025-04-01 21:12:28 +08:00
public class T2_TestBuldinFileSystem : IPrebuildSetup, IPostBuildCleanup
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
private const string ASSET_BUNDLE_PACKAGE_ROOT_KEY = "T2_ASSET_BUNDLE_PACKAGE_ROOT_KEY";
private const string RAW_BUNDLE_PACKAGE_ROOT_KEY = "T2_RAW_BUNDLE_PACKAGE_ROOT_KEY";
2025-01-09 11:31:04 +08:00
void IPrebuildSetup.Setup()
{
#if UNITY_EDITOR
2025-04-01 21:12:28 +08:00
// 构建AssetBundlePackage
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
var buildParams = new PackageInvokeBuildParam(TestDefine.AssetBundlePackageName);
2025-02-05 13:06:28 +08:00
buildParams.BuildPipelineName = "ScriptableBuildPipeline";
buildParams.InvokeAssmeblyName = "YooAsset.Test.Editor";
buildParams.InvokeClassFullName = "TestPackageBuilder";
buildParams.InvokeMethodName = "BuildPackage";
var simulateResult = PakcageInvokeBuilder.InvokeBuilder(buildParams);
2025-04-01 21:12:28 +08:00
UnityEditor.EditorPrefs.SetString(ASSET_BUNDLE_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory);
2025-01-09 11:31:04 +08:00
}
2025-04-01 21:12:28 +08:00
// 构建RawBundlePackage
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
var buildParams = new PackageInvokeBuildParam(TestDefine.RawBundlePackageName);
2025-02-05 13:06:28 +08:00
buildParams.BuildPipelineName = "RawFileBuildPipeline";
buildParams.InvokeAssmeblyName = "YooAsset.Test.Editor";
buildParams.InvokeClassFullName = "TestPackageBuilder";
buildParams.InvokeMethodName = "BuildPackage";
var simulateResult = PakcageInvokeBuilder.InvokeBuilder(buildParams);
2025-04-01 21:12:28 +08:00
UnityEditor.EditorPrefs.SetString(RAW_BUNDLE_PACKAGE_ROOT_KEY, simulateResult.PackageRootDirectory);
2025-01-09 11:31:04 +08:00
}
#endif
}
void IPostBuildCleanup.Cleanup()
{
}
2025-04-01 21:12:28 +08:00
2025-01-09 11:31:04 +08:00
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator A_InitializePackage()
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
// 初始化资源包
2025-01-09 11:31:04 +08:00
{
string packageRoot = string.Empty;
#if UNITY_EDITOR
2025-04-01 21:12:28 +08:00
packageRoot = UnityEditor.EditorPrefs.GetString(ASSET_BUNDLE_PACKAGE_ROOT_KEY);
2025-01-09 11:31:04 +08:00
#endif
if (Directory.Exists(packageRoot) == false)
throw new Exception($"Not found package root : {packageRoot}");
2025-04-01 21:12:28 +08:00
var package = YooAssets.CreatePackage(TestDefine.AssetBundlePackageName);
2025-01-09 11:31:04 +08:00
// 初始化资源包
var initParams = new OfflinePlayModeParameters();
2025-04-01 21:12:28 +08:00
var decryption = new FileStreamTestDecryption();
initParams.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(decryption, packageRoot);
2025-01-09 11:31:04 +08:00
var initializeOp = package.InitializeAsync(initParams);
yield return initializeOp;
if (initializeOp.Status != EOperationStatus.Succeed)
Debug.LogError(initializeOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, initializeOp.Status);
// 请求资源版本
var requetVersionOp = package.RequestPackageVersionAsync();
yield return requetVersionOp;
if (requetVersionOp.Status != EOperationStatus.Succeed)
Debug.LogError(requetVersionOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status);
// 更新资源清单
var updateManifestOp = package.UpdatePackageManifestAsync(requetVersionOp.PackageVersion);
yield return updateManifestOp;
if (updateManifestOp.Status != EOperationStatus.Succeed)
Debug.LogError(updateManifestOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status);
}
2025-04-01 21:12:28 +08:00
// 初始化资源包
2025-01-09 11:31:04 +08:00
{
string packageRoot = string.Empty;
#if UNITY_EDITOR
2025-04-01 21:12:28 +08:00
packageRoot = UnityEditor.EditorPrefs.GetString(RAW_BUNDLE_PACKAGE_ROOT_KEY);
2025-01-09 11:31:04 +08:00
#endif
if (Directory.Exists(packageRoot) == false)
throw new Exception($"Not found package root : {packageRoot}");
2025-04-01 21:12:28 +08:00
var package = YooAssets.CreatePackage(TestDefine.RawBundlePackageName);
2025-01-09 11:31:04 +08:00
// 初始化资源包
var initParams = new OfflinePlayModeParameters();
initParams.BuildinFileSystemParameters = FileSystemParameters.CreateDefaultBuildinFileSystemParameters(null, packageRoot);
initParams.BuildinFileSystemParameters.AddParameter(FileSystemParametersDefine.APPEND_FILE_EXTENSION, true);
var initializeOp = package.InitializeAsync(initParams);
yield return initializeOp;
if (initializeOp.Status != EOperationStatus.Succeed)
Debug.LogError(initializeOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, initializeOp.Status);
// 请求资源版本
var requetVersionOp = package.RequestPackageVersionAsync();
yield return requetVersionOp;
if (requetVersionOp.Status != EOperationStatus.Succeed)
Debug.LogError(requetVersionOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, requetVersionOp.Status);
// 更新资源清单
var updateManifestOp = package.UpdatePackageManifestAsync(requetVersionOp.PackageVersion);
yield return updateManifestOp;
if (updateManifestOp.Status != EOperationStatus.Succeed)
Debug.LogError(updateManifestOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, updateManifestOp.Status);
}
}
2025-02-05 13:06:28 +08:00
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B1_TestLoadAsyncTask()
2025-02-05 13:06:28 +08:00
{
var tester = new TestLoadPanel();
yield return tester.RuntimeTester();
}
2025-01-09 11:31:04 +08:00
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B2_TestLoadAudio()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadAudio();
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B3_TestLoadImage()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadImage();
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B4_TestLoadPrefab()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadPrefab();
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B5_TestLoadSpriteAtlas()
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
var tester = new TestLoadSpriteAtlas();
2025-01-09 11:31:04 +08:00
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B6_TestLoadScriptableObject()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadScriptableObject();
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B7_TestLoadScene()
2025-01-09 11:31:04 +08:00
{
2025-04-01 21:12:28 +08:00
var tester = new TestLoadScene();
2025-01-09 11:31:04 +08:00
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B8_TestLoadRawFile()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadRawFile();
yield return tester.RuntimeTester();
}
[UnityTest]
2025-04-01 21:12:28 +08:00
public IEnumerator B9_TestLoadVideo()
2025-01-09 11:31:04 +08:00
{
var tester = new TestLoadVideo();
yield return tester.RuntimeTester();
}
2025-04-01 21:12:28 +08:00
[UnityTest]
public IEnumerator C1_TestBundleReference()
{
var tester = new TestBundleReference();
yield return tester.RuntimeTester();
}
[UnityTest]
public IEnumerator C2_TestBundleEncryption()
{
var tester = new TestBundleEncryption();
yield return tester.RuntimeTester();
}
[UnityTest]
public IEnumerator D_DestroyPackage()
{
// 销毁旧资源包
{
var package = YooAssets.GetPackage(TestDefine.AssetBundlePackageName);
var destroyOp = package.DestroyAsync();
yield return destroyOp;
if (destroyOp.Status != EOperationStatus.Succeed)
Debug.LogError(destroyOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, destroyOp.Status);
bool result = YooAssets.RemovePackage(TestDefine.AssetBundlePackageName);
Assert.IsTrue(result);
}
// 销毁旧资源包
{
var package = YooAssets.GetPackage(TestDefine.RawBundlePackageName);
var destroyOp = package.DestroyAsync();
yield return destroyOp;
if (destroyOp.Status != EOperationStatus.Succeed)
Debug.LogError(destroyOp.Error);
Assert.AreEqual(EOperationStatus.Succeed, destroyOp.Status);
bool result = YooAssets.RemovePackage(TestDefine.RawBundlePackageName);
Assert.IsTrue(result);
}
}
2025-01-09 11:31:04 +08:00
}