diff options
| author | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
|---|---|---|
| committer | Andrew Lee <alee14498@protonmail.com> | 2020-04-19 17:19:32 -0400 |
| commit | c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78 (patch) | |
| tree | ee4d51c7c1d633e11f46453ef1edd3c77c4ef9f7 /Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs | |
| download | Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.gz Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.tar.bz2 Project-Sandbox-c55fba8ab2a1c9d3df65eda4a5a1e957f4aa1f78.zip | |
Inital commit
Diffstat (limited to 'Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs')
| -rw-r--r-- | Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs new file mode 100644 index 0000000..0809a6f --- /dev/null +++ b/Library/PackageCache/com.unity.test-framework@1.1.11/UnityEditor.TestRunner/TestRunner/EnumeratorStepHelper.cs @@ -0,0 +1,51 @@ +using System.Collections;
+using System.Reflection;
+
+namespace UnityEditor.TestTools.TestRunner
+{
+ internal class EnumeratorStepHelper
+ {
+ private static int m_PC;
+
+ public static void SetEnumeratorPC(int pc)
+ {
+ m_PC = pc;
+ }
+
+ /// <summary>
+ /// Gets the current enumerator PC
+ /// </summary>
+ /// <returns>
+ /// The PC
+ /// 0 if no current Enumeration
+ /// </returns>
+ public static int GetEnumeratorPC(IEnumerator enumerator)
+ {
+ if (enumerator == null)
+ {
+ return 0;
+ }
+ return (int)GetPCFieldInfo(enumerator).GetValue(enumerator);
+ }
+
+ public static bool UpdateEnumeratorPcIfNeeded(IEnumerator enumerator)
+ {
+ if (m_PC > 0)
+ {
+ GetPCFieldInfo(enumerator).SetValue(enumerator, m_PC);
+ m_PC = 0;
+ return true;
+ }
+ return false;
+ }
+
+ private static FieldInfo GetPCFieldInfo(IEnumerator enumerator)
+ {
+ var field = enumerator.GetType().GetField("$PC", BindingFlags.NonPublic | BindingFlags.Instance);
+ if (field == null) // Roslyn
+ field = enumerator.GetType().GetField("<>1__state", BindingFlags.NonPublic | BindingFlags.Instance);
+
+ return field;
+ }
+ }
+}
|
