DomainReloadTests.cs
1.89 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
using System.Collections;
using NUnit.Framework;
using UnityEngine.TestTools;
using UnityEngine.XR.Management;
using UnityEngine.XR.Management.Tests;
using UnityEngine;
namespace UnityEditor.XR.Management.Tests
{
public class DomainReloadTests
{
[SerializeField] XRManagerSettings m_Manager;
[TearDown]
public void TearDown()
{
if (m_Manager != null)
{
Object.DestroyImmediate(m_Manager);
m_Manager = null;
}
}
private void InitializeManager()
{
m_Manager = ScriptableObject.CreateInstance<XRManagerSettings>();
m_Manager.automaticLoading = false;
var dl = ScriptableObject.CreateInstance(typeof(DummyLoader)) as DummyLoader;
dl.id = 0;
dl.shouldFail = true;
m_Manager.TryAddLoader(dl);
dl = ScriptableObject.CreateInstance(typeof(DummyLoader)) as DummyLoader;
dl.id = 1;
dl.shouldFail = false;
m_Manager.TryAddLoader(dl);
}
[UnityTest]
public IEnumerator DomainReload()
{
InitializeManager();
Assert.IsNull(m_Manager.activeLoader);
yield return m_Manager.InitializeLoader();
Assert.IsNotNull(m_Manager.activeLoader);
// Perform a domain reload and wait for it to complete
UnityEditor.EditorUtility.RequestScriptReload();
yield return new WaitForDomainReload();
Assert.IsNotNull(m_Manager.activeLoader);
// Ensure the active loader is the same loader
Assert.IsTrue(m_Manager.activeLoader.GetType() == typeof(DummyLoader));
Assert.IsTrue((m_Manager.activeLoader as DummyLoader).id == 1);
m_Manager.DeinitializeLoader();
Assert.IsNull(m_Manager.activeLoader);
}
}
}