SW 중심대학 OSS GIT 서버
박건태, 이승준, 고기완, 이준호
새로운 배포
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
using System;using System.Collections;using System.Collections.Generic;using NUnit.Framework;using NUnit.Framework.Interfaces;using NUnit.Framework.Internal;using NUnit.Framework.Internal.Commands;using NUnit.Framework.Internal.Execution;using UnityEngine.TestRunner.NUnitExtensions.Runner;using UnityEngine.TestTools.TestRunner;
namespace UnityEngine.TestTools{ internal class EnumerableTestMethodCommand : TestCommand, IEnumerableTestMethodCommand { private readonly TestMethod testMethod;
public EnumerableTestMethodCommand(TestMethod testMethod) : base(testMethod) { this.testMethod = testMethod; }
public IEnumerable ExecuteEnumerable(ITestExecutionContext context) { yield return null;
var currentExecutingTestEnumerator = new TestEnumeratorWrapper(testMethod).GetEnumerator(context); if (currentExecutingTestEnumerator != null) { var testEnumeraterYieldInstruction = new TestEnumerator(context, currentExecutingTestEnumerator);
yield return testEnumeraterYieldInstruction;
var enumerator = testEnumeraterYieldInstruction.Execute();
var executingEnumerator = ExecuteEnumerableAndRecordExceptions(enumerator, context); while (executingEnumerator.MoveNext()) { yield return executingEnumerator.Current; } } else { if (context.CurrentResult.ResultState != ResultState.Ignored) { context.CurrentResult.SetResult(ResultState.Success); } } }
private static IEnumerator ExecuteEnumerableAndRecordExceptions(IEnumerator enumerator, ITestExecutionContext context) { while (true) { try { if (!enumerator.MoveNext()) { break; } } catch (Exception ex) { context.CurrentResult.RecordException(ex); break; }
if (enumerator.Current is IEnumerator) { var current = (IEnumerator)enumerator.Current; yield return ExecuteEnumerableAndRecordExceptions(current, context); } else { yield return enumerator.Current; } } }
public override TestResult Execute(ITestExecutionContext context) { throw new NotImplementedException("Use ExecuteEnumerable"); } }}
|