LoaderTestSetup.cs
2.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System.IO;
using NUnit.Framework;
using UnityEditor;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.XR;
using UnityEngine.XR.Management;
namespace Unity.XR.TestTooling
{
public abstract class LoaderTestSetup<L, S> : ManagementTestSetup, IPrebuildSetup, IPostBuildCleanup
where L : XRLoader
where S : ScriptableObject
{
protected abstract string settingsKey { get; }
protected L loader = null;
protected S settings = null;
private bool isRunning = false;
public override void SetupTest()
{
base.SetupTest();
Assert.IsNotNull(xrGeneralSettings);
// Deleted by ManagementSetup - deletes whole Temp folder
// Setup Loader
loader = ScriptableObject.CreateInstance<L>();
var path = GetAssetPathForComponents(s_TempSettingsPath);
AssetDatabase.CreateAsset(loader, Path.Combine(path, $"Test_{typeof(L).Name}.asset"));
xrGeneralSettings.Manager.loaders.Add(loader);
// Setup Settings
settings = ScriptableObject.CreateInstance<S>();
AssetDatabase.CreateAsset(settings, Path.Combine(path, $"Test_{typeof(S).Name}.asset"));
EditorBuildSettings.AddConfigObject(settingsKey, settings, true);
AssetDatabase.SaveAssets();
}
public override void TearDownTest()
{
if (isRunning)
StopAndShutdown();
xrGeneralSettings.Manager.loaders.Remove(loader);
loader = null;
base.TearDownTest();
}
protected void InitializeAndStart()
{
if (loader != null)
{
if (loader.Initialize())
isRunning = loader.Start();
}
}
protected void StopAndShutdown()
{
if (loader != null)
{
loader.Stop();
loader.Deinitialize();
isRunning = false;
}
}
protected void RestartProvider()
{
StopAndShutdown();
InitializeAndStart();
}
// IPrebuildSetup - Build time setup
void IPrebuildSetup.Setup()
{
if (XRGeneralSettings.Instance != null)
XRGeneralSettings.Instance.InitManagerOnStart = false;
}
// IPostBuildCleanup - Build time cleanup
void IPostBuildCleanup.Cleanup()
{
if (XRGeneralSettings.Instance != null)
XRGeneralSettings.Instance.InitManagerOnStart = true;
}
}
}