52 lines
1.6 KiB
C#

#if TEST_FRAMEWORK_INSTALLED
using System;
using System.Collections;
using System.Text.RegularExpressions;
using PrimeTween;
using UnityEngine;
using UnityEngine.TestTools;
using Assert = NUnit.Framework.Assert;
public partial class Tests {
[UnityTest]
public IEnumerator ExceptionInTheMiddle() {
expectTweenWasStoppedBecauseException();
expectOnCompleteIgnored();
var onCompleteCalled = false;
var tweener = Tween.Custom(transform, 0, 1, 0.1f, delegate {
throw new Exception("TEST");
}).OnComplete(() => {
onCompleteCalled = true;
});
while (tweener.isAlive) {
yield return null;
}
Assert.IsFalse(onCompleteCalled);
}
[UnityTest]
public IEnumerator ExceptionOnLastFrame() {
expectTweenWasStoppedBecauseException();
expectOnCompleteIgnored();
var onCompleteDidCalled = false;
var tweener = Tween.Custom(transform, 0, 1, getDt() * 4f, (_, val) => {
if (val > 0.99f) {
throw new Exception("TEST");
}
}).OnComplete(() => {
onCompleteDidCalled = true;
});
while (tweener.isAlive) {
yield return null;
}
Assert.IsFalse(onCompleteDidCalled);
}
static void expectOnCompleteIgnored() => LogAssert.Expect(LogType.Error, new Regex(Constants.onCompleteCallbackIgnored));
static void expectTweenWasStoppedBecauseException() {
LogAssert.Expect(LogType.Exception, new Regex(".*"));
LogAssert.Expect(LogType.Warning, new Regex("Tween was stopped because of exception"));
}
}
#endif