You've already forked FateViewer
Add project files.
This commit is contained in:
@@ -0,0 +1,288 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
|
||||
public class BaseConditionsTests
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator AnimatePhysics_False_DoesntApplyVelocity([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.InstantiateCube(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
var rb = animation.gameObject.AddComponent<Rigidbody>();
|
||||
rb.useGravity = false;
|
||||
animation.gameObject.GetComponent<BoxCollider>().enabled = false;
|
||||
animation.animatePhysics = false;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return null;
|
||||
yield return null;
|
||||
Assert.AreEqual(0f, rb.velocity.x);
|
||||
Assert.AreEqual(0f, rb.velocity.z);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CullingMode_AlwaysAnimate_Animates_InvisibleObject([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.InstantiateCube(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.cullingMode = AnimatorCullingMode.AlwaysAnimate;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.gameObject.GetComponent<MeshRenderer>().enabled = false;
|
||||
animation.Play("test");
|
||||
|
||||
yield return null;
|
||||
yield return null;
|
||||
Assert.AreNotEqual(Vector3.zero, animation.gameObject.transform.localPosition);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CullingMode_CullCompletely_Doesnt_Animate_InvisibleObject([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.InstantiateCube(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.cullingMode = AnimatorCullingMode.CullCompletely;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.gameObject.GetComponent<MeshRenderer>().enabled = false;
|
||||
animation.Play("test");
|
||||
|
||||
yield return null;
|
||||
yield return null;
|
||||
Assert.AreEqual(Vector3.zero, animation.gameObject.transform.localPosition);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IsPlaying_BeforePlay_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IsPlaying_AfterPlay_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
Assert.AreEqual(true, animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator IsPlaying_AfterStop_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
yield return null;
|
||||
animation.Stop();
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator IsPlaying_AfterClipDone_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Once;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
yield return new WaitForSeconds(2f);
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator IsPlaying_AfterCrossfadeDone_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Once;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.AddClip(clipInstance, "test2");
|
||||
animation.Play("test");
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
animation.CrossFade("test2", 1.5f);
|
||||
yield return new WaitForSeconds(2.0f);
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DefaultClip_DoesntPlay_When_IsPlayingAutomatically_IsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.clip = clipInstance;
|
||||
animation.playAutomatically = false;
|
||||
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
Assert.AreEqual(false, animation.IsPlaying(animation.clip.name));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DefaultClip_Plays_When_IsPlayingAutomatically_IsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.clip = clipInstance;
|
||||
animation.playAutomatically = true;
|
||||
|
||||
var newGO = Object.Instantiate<GameObject>(animation.gameObject);
|
||||
animation = newGO.GetComponent<IAnimation>();
|
||||
|
||||
Assert.AreEqual(true, animation.isPlaying);
|
||||
var defaultName = animation.usesLegacy ? animation.clip.name : "Default";
|
||||
Assert.AreEqual(true, animation.IsPlaying(defaultName));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_HasNoEffect_WhenThereIsNo_DefaultClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
animation.playAutomatically = true;
|
||||
|
||||
var newGO = Object.Instantiate<GameObject>(animation.gameObject);
|
||||
animation = newGO.GetComponent<IAnimation>();
|
||||
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_WithNo_DefaultClip_HasNoEffect_OnOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.playAutomatically = true;
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
|
||||
var newGO = Object.Instantiate<GameObject>(animation.gameObject);
|
||||
animation = newGO.GetComponent<IAnimation>();
|
||||
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_With_DefaultClip_HasNoEffect_OnOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.clip = clipInstance;
|
||||
animation.playAutomatically = true;
|
||||
animation.AddClip(clipInstance, "OtherClip");
|
||||
|
||||
Assert.AreEqual(false, animation.IsPlaying("OtherClip"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_BeforeSet_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
Assert.AreEqual(true, animation.playAutomatically);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_AfterSet_True_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
animation.playAutomatically = true;
|
||||
Assert.AreEqual(true, animation.playAutomatically);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PlayAutomatically_AfterSet_False_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
animation.playAutomatically = false;
|
||||
Assert.AreEqual(false, animation.playAutomatically);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator WrapMode_Default_UsesClipSetting([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Loop;
|
||||
|
||||
animation.wrapMode = WrapMode.Default;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return new WaitForSeconds(1.2f);
|
||||
Assert.AreEqual(true, animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator WrapMode_OverridesClipsWithDefaultSetting([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Default;
|
||||
|
||||
animation.wrapMode = WrapMode.Loop;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return new WaitForSeconds(1.2f);
|
||||
Assert.AreEqual(true, animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator WrapMode_DoesntOverrideClipsSetting([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Once;
|
||||
|
||||
animation.wrapMode = WrapMode.Loop;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return new WaitForSeconds(1.2f);
|
||||
Assert.AreEqual(false, animation.isPlaying);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 94d35051e65be294187c9630c79078d1
|
||||
timeCreated: 1494560140
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,202 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class ClipManagementTests
|
||||
{
|
||||
public class GetClipCount
|
||||
{
|
||||
[Test]
|
||||
public void GetClipCount_BeforeAdd_ReturnsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should have no clips connected at this point");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetClipCount_AfterAddOne_ReturnsOne([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
|
||||
Assert.AreEqual(1, animation.GetClipCount(), "Component should have 1 clip connected after add");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetClipCount_AfterRemoveSingleClip_ReturnsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.RemoveClip("test");
|
||||
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should have no clips after remove");
|
||||
}
|
||||
}
|
||||
|
||||
public class AddClip
|
||||
{
|
||||
[Test]
|
||||
public void AddClip_WithNullClip_Throws_NullReferenceException([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
Assert.Throws<System.NullReferenceException> (() => { animation.AddClip(null, "test"); });
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddClip_TwiceWithSameName_GetClipCount_ReturnsOne([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
LogAssert.ignoreFailingMessages = true; //The error message here is irrelevant
|
||||
animation.AddClip(clipInstance, "test");
|
||||
LogAssert.ignoreFailingMessages = false;
|
||||
|
||||
Assert.AreEqual(1, animation.GetClipCount(), "Component should have no clips after remove");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddClip_TwiceDifferentName_GetClipCount_ReturnsTwo([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.AddClip(clipInstance, "test2");
|
||||
Assert.AreEqual(2, animation.GetClipCount(), "Component should have no clips after remove");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AddClip_WithSameName_AsClip_DoenstCreateNewClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
IAnimationState state = animation.GetState(clipInstance.name);
|
||||
Assert.AreEqual(clipInstance, state.clip, "Component should have no clips after remove");
|
||||
}
|
||||
}
|
||||
|
||||
public class RemoveClip_ByAnimationClip
|
||||
{
|
||||
[Test]
|
||||
public void RemoveClip_AnimationClip_WithNullClip_Throws_NullReferenceException([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
AnimationClip clip = null;
|
||||
Assert.Throws<System.NullReferenceException> (() => { animation.RemoveClip(clip); });
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Description("AddClip always duplicates clips in the Animation Component, making it very hard to remove clips")]
|
||||
public void RemoveClip_AnimationClip_RemovesClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
animation.RemoveClip(clipInstance);
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should have no clips after remove");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RemoveClip_AnimationClip_DoesntRemoveUnrelatedClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clip2 = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
var clipInstance2 = Object.Instantiate<AnimationClip>(clip2);
|
||||
clipInstance2.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
animation.AddClip(clipInstance2, clipInstance2.name);
|
||||
animation.RemoveClip(clipInstance);
|
||||
Assert.AreEqual(1, animation.GetClipCount(), "Component should still have 1 connected clip after remove");
|
||||
Assert.NotNull(animation.GetState(clipInstance2.name));
|
||||
}
|
||||
}
|
||||
|
||||
public class RemoveClip_ByName
|
||||
{
|
||||
[Test]
|
||||
public void RemoveClip_ByName_WithEmptyName_Works([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "");
|
||||
animation.RemoveClip("");
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should still have 1 connected clip after remove");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RemoveClip_ByName_DoesntRemoveOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
var legacyClip2 = Object.Instantiate<AnimationClip>(clipInstance);
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.AddClip(legacyClip2, "test2");
|
||||
animation.RemoveClip("test");
|
||||
Assert.AreEqual(1, animation.GetClipCount(), "Component should still have 1 connected clip after remove");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void RemoveClip_ByName_RemovesClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.RemoveClip("test");
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should still have 1 connected clip after remove");
|
||||
}
|
||||
}
|
||||
|
||||
public class RemoveClip
|
||||
{
|
||||
[Test]
|
||||
public void RemoveClip_Invalidates_ExistingState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
IAnimationState state = animation.GetState(clipInstance.name);
|
||||
animation.RemoveClip(clipInstance);
|
||||
Assert.IsFalse(state.isValid);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b00cae6d5f62bb41a1a48f5c48069fe
|
||||
timeCreated: 1494560140
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
|
||||
class ComparativeTestFixture
|
||||
{
|
||||
private static System.Type[] Sources()
|
||||
{
|
||||
return new Type [] { typeof(AnimationProxy), typeof(SimpleAnimationProxy) };
|
||||
}
|
||||
|
||||
public static IAnimation Instantiate(System.Type type)
|
||||
{
|
||||
var go = new GameObject();
|
||||
var component = go.AddComponent(type);
|
||||
return component as IAnimation;
|
||||
}
|
||||
|
||||
public static IAnimation InstantiateCube(System.Type type)
|
||||
{
|
||||
var go = GameObject.CreatePrimitive(PrimitiveType.Cube);
|
||||
var component = go.AddComponent(type);
|
||||
return component as IAnimation;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 98de67babe968c640aa589d5b3a449c2
|
||||
timeCreated: 1496940236
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,189 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class DifferencesTests
|
||||
{
|
||||
[Test]
|
||||
[Ignore("The Animation Component creates a new internal clip instance when a state has a different name than the name of the clip. This was deemed an undesirable behavior")]
|
||||
public void AddClip_WithNewName_CreatesNewClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "NewName");
|
||||
IAnimationState state = animation.GetState("NewName");
|
||||
Assert.AreNotEqual(clipInstance, state.clip, "AddClip should have created a new clip instance");
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("This is where the new component differs. Animation won't let you remove multiple states with the same clip, because it's not possible to have the same clip twice")]
|
||||
public void RemoveClip_AnimationClip_RemovesAllInstances([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.AddClip(clipInstance, "test2");
|
||||
animation.RemoveClip(clipInstance);
|
||||
Assert.AreEqual(0, animation.GetClipCount(), "Component should have no clips after remove");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("Time does not advance on the frame on which Rewind is called on SimpleAnimation")]
|
||||
public IEnumerator Rewind_PlaysFrameZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
animation.Play("ValidName");
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
animation.Rewind("ValidName");
|
||||
yield return null;
|
||||
Assert.AreEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("Check were added to SimpleAnimation to prevent using invalid names")]
|
||||
public void Rewind_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.Rewind("InvalidName");
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("Check were added to SimpleAnimation to prevent using invalid names")]
|
||||
public void Stop_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.Stop("InvalidName");
|
||||
}
|
||||
|
||||
[Test]
|
||||
[Ignore("The Animation Component accepts null as a valid name")]
|
||||
public void State_Name_NullString_Throws_ArgumentNullException([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.Throws<System.ArgumentNullException>(() => { state.name = null; });
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("Setting time guarantees you that the next automatic evaluation will use the time you supplied with Playables, whereas Animation Component will update the frame time")]
|
||||
public IEnumerator State_Time_SetTime_PreventsUpdatingTimeAutomatically([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
float time = Time.time;
|
||||
state.time = 0.1f; //empty run for the Animation component, probably a side effect of reenabling the component
|
||||
yield return null;
|
||||
|
||||
state.time = 0.1f;
|
||||
yield return null;
|
||||
|
||||
Assert.AreEqual(0.1f, state.time);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("The Animation Component doesn't advance on the first frame")]
|
||||
public IEnumerator State_Time_IsSynchronizedWith_GameTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
float previousTime = Time.time;
|
||||
yield return null;
|
||||
yield return null;
|
||||
yield return null;
|
||||
float elapsedTime = Time.time - previousTime;
|
||||
Assert.AreEqual(elapsedTime, state.time, 0.001f, "State time should be equal to elapsed time");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("In the Animation Component, RemoveClip doesn't remove queued instances of the removed clip, whereas Stop stops both the queued instances and the playing instances. This inconsistency was deemed undesirable")]
|
||||
public IEnumerator Queue_RemoveClip_StopsQueuedClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "PlayAndQueue");
|
||||
animation.Play("PlayAndQueue");
|
||||
animation.PlayQueued("PlayAndQueue", QueueMode.CompleteOthers);
|
||||
yield return null;
|
||||
animation.RemoveClip("PlayAndQueue");
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
yield return null;
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("States that play backwards should still be Queue-compatible, which is not the case in the Animation Component")]
|
||||
public IEnumerator NegativeSpeed_Does_Trigger_Crossfade([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "PlayBackwards");
|
||||
animation.AddClip(clipInstance, "Crossfade");
|
||||
IAnimationState state = animation.GetState("PlayBackwards");
|
||||
state.enabled = true;
|
||||
state.time = 0.5f;
|
||||
state.speed = -1f;
|
||||
animation.PlayQueued("Crossfade", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
|
||||
Assert.IsTrue(state.enabled);
|
||||
Assert.IsTrue(animation.IsPlaying("Crossfade"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("The Animation Component doesn't apply velocities to rigidbodies with AnimatePhysics on")]
|
||||
public IEnumerator AnimatePhysics_True_AppliesVelocity([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.InstantiateCube(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
var rb = animation.gameObject.AddComponent<Rigidbody>();
|
||||
rb.useGravity = false;
|
||||
animation.animatePhysics = true;
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return null;
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
Assert.AreNotEqual(rb.velocity, Vector3.zero);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0b19f00406c66144ab1f66fe9c78fabb
|
||||
timeCreated: 1499370755
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,57 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class MiscTests
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator StateSpeed_Affects_WhenCrossfadeHappens([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "PlaySlowly");
|
||||
animation.AddClip(clipInstance, "Queued");
|
||||
IAnimationState state = animation.GetState("PlaySlowly");
|
||||
state.enabled = true;
|
||||
state.speed = 0.1f;
|
||||
animation.PlayQueued("Queued", QueueMode.CompleteOthers);
|
||||
|
||||
//Wait for the original length of PlaySlowly
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
Assert.IsFalse(animation.IsPlaying("Queued"), "Clip 'Queued' should not be playing yet. Speed is probably applied wrong.");
|
||||
state.speed = 1000.0f;
|
||||
yield return null;
|
||||
yield return null;
|
||||
Assert.IsTrue(animation.IsPlaying("Queued"), "Clip 'PlaySlowly' should now be done, and clip 'Queued' should have started playing.");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueue_WithLoopedAnimation_Prevents_StateAccess_OfOriginalState_FromWorking_Correctly([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
var loopedClipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
loopedClipInstance.legacy = animation.usesLegacy;
|
||||
loopedClipInstance.wrapMode = WrapMode.Loop;
|
||||
|
||||
animation.AddClip(clipInstance, "FirstClip");
|
||||
animation.AddClip(loopedClipInstance, "LoopedClip");
|
||||
animation.Play("FirstClip");
|
||||
animation.PlayQueued("LoopedClip", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
Assert.IsTrue(animation.IsPlaying("LoopedClip"), "Clip 'LoopedClip' should be playing");
|
||||
IAnimationState state = animation.GetState("LoopedClip");
|
||||
|
||||
Assert.IsFalse(state.enabled, "We should be playing a copy of LoopedClip, not the LoopedClip State");
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
state = animation.GetState("LoopedClip");
|
||||
Assert.IsFalse(state.enabled, "We should still be playing a copy of LoopedClip, not the LoopedClip State");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d6e209b2d0c68024ebd0ce0df3d50480
|
||||
timeCreated: 1499452822
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,806 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class PlaybackTests
|
||||
{
|
||||
public class Play
|
||||
{
|
||||
[Test]
|
||||
public void Play_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.Play("WrongState");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Play_ValidName_IsPlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "RightName");
|
||||
animation.Play("RightName");
|
||||
Assert.IsTrue(animation.isPlaying, "The clip RightName should be playing");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Play_ValidName_MovesObject([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
animation.Play("ValidName");
|
||||
|
||||
//TODO: replace by Seek(time)
|
||||
yield return null;
|
||||
yield return null;
|
||||
yield return null;
|
||||
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x, "LocalPosition.x should have been moved by the clip");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Play_OtherClip_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
var clipInstance2 = Object.Instantiate<AnimationClip>(clipInstance);
|
||||
clipInstance2.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ClipToPlayOver");
|
||||
animation.AddClip(clipInstance2, "ClipThatPlaysOver");
|
||||
animation.Play("ClipToPlayOver");
|
||||
yield return null;
|
||||
animation.Play("ClipThatPlaysOver");
|
||||
|
||||
Assert.IsFalse(animation.IsPlaying("ClipToPlayOver"), "ClipToPlayOver should be stopped by playing ClipThatPlaysOver");
|
||||
Assert.IsTrue(animation.IsPlaying("ClipThatPlaysOver"), "ClipThatPlaysOver should now be the only playing clip");
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Play_SameClip_StateTime_DoesntChange([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return null;
|
||||
|
||||
float time = animation.GetState("test").time;
|
||||
animation.Play("test");
|
||||
Assert.AreEqual(time, animation.GetState("test").time);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Play_SameClip_Done_StateTime_Resets([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "test");
|
||||
animation.Play("test");
|
||||
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
|
||||
float time = animation.GetState("test").time;
|
||||
animation.Play("test");
|
||||
Assert.AreEqual(0f, animation.GetState("test").time);
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayQueue_CompleteOthers
|
||||
{
|
||||
[Test]
|
||||
public void PlayQueue_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.PlayQueued("InvalidName", QueueMode.CompleteOthers);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueue_WithNoClipPlaying_IsStatePlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlayQueue");
|
||||
animation.PlayQueued("ToPlayQueue", QueueMode.CompleteOthers);
|
||||
|
||||
yield return null;
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlayQueue"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueue_WithClipPlaying_IsStatePlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToPlayQueue");
|
||||
animation.Play("ToPlay");
|
||||
animation.PlayQueued("ToPlayQueue", QueueMode.CompleteOthers);
|
||||
|
||||
Assert.IsFalse(animation.IsPlaying("ToPlayQueue"));
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueue_WithClipPlaying_IsStatePlaying_AfterOriginalClipDone_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToPlayQueue");
|
||||
animation.Play("ToPlay");
|
||||
animation.PlayQueued("ToPlayQueue", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlayQueue"));
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueue_Queueing_SameClip_AfterFirstClipIsDone_IsPlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlayAndPlayQueue");
|
||||
animation.Play("ToPlayAndPlayQueue");
|
||||
animation.PlayQueued("ToPlayAndPlayQueue", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlayAndPlayQueue"));
|
||||
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayQueue_PlayNow
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public class Crossfade
|
||||
{
|
||||
|
||||
[Test]
|
||||
public void Crossfade_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.CrossFade("InvalidName", 0);
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Crossfade_WithValidName_IsPlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.CrossFade("ToCrossfade", 0f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToCrossfade"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Crossfade_WithValidName_MovesObject([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.CrossFade("ToCrossfade", 0f);
|
||||
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Crossfade_LengthZero_StopsOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.CrossFade("ToPlay", 0f);
|
||||
animation.CrossFade("ToCrossfade", 0.0f);
|
||||
|
||||
Assert.IsFalse(animation.IsPlaying("ToPlay"));
|
||||
}
|
||||
[Test]
|
||||
public void Crossfade_DoesntStopOtherClips([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.CrossFade("ToPlay", 0f);
|
||||
animation.CrossFade("ToCrossfade", 0.2f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlay"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadedOut_Clips_AreStopped([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
animation.CrossFade("ToCrossfade", 0.1f);
|
||||
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
|
||||
Assert.IsFalse(animation.IsPlaying("ToPlay"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadedOut_Clips_AreTimeReset([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
animation.CrossFade("ToCrossfade", 0.1f);
|
||||
|
||||
yield return new WaitForSeconds(0.2f);
|
||||
|
||||
Assert.AreEqual(0.0f, animation.GetState("ToPlay").normalizedTime);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Crossfade_MultipleTimes_DoesntReset_Crossfade_Duration([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clip2 = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
var clipInstance2 = Object.Instantiate<AnimationClip>(clip2);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance2.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.AddClip(clipInstance2, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
animation.CrossFade("ToCrossfade", 0.2f);
|
||||
yield return new WaitForSeconds(0.1f);
|
||||
animation.CrossFade("ToCrossfade", 0.2f);
|
||||
yield return new WaitForSeconds(0.11f);
|
||||
Assert.AreEqual(0.0f, animation.GetState("ToPlay").weight);
|
||||
Assert.AreEqual(1.0f, animation.GetState("ToCrossfade").weight);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("Wrong Assumption; clips don't get kept alive by crossfade")]
|
||||
public IEnumerator Crossfade_FromFinishingClip_KeepsClipAlive_UntilCrossfadeDone([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var xClip = Object.Instantiate<AnimationClip>(clipX);
|
||||
var yClip = Object.Instantiate<AnimationClip>(clipY);
|
||||
xClip.legacy = animation.usesLegacy;
|
||||
yClip.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(xClip, "ToPlay");
|
||||
animation.AddClip(yClip, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
|
||||
yield return new WaitForSeconds(0.9f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlay"));
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.y);
|
||||
animation.CrossFade("ToCrossfade", 0.5f);
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.y);
|
||||
Assert.IsTrue(animation.IsPlaying("ToCrossfade"));
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
[Ignore("Wrong Assumption; clips don't get kept alive by crossfade")]
|
||||
public IEnumerator Crossfade_LongerThanClip_KeepsClipAlive_UntilCrossfadeDone([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var xClip = Object.Instantiate<AnimationClip>(clipX);
|
||||
var yClip = Object.Instantiate<AnimationClip>(clipY);
|
||||
xClip.legacy = animation.usesLegacy;
|
||||
yClip.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(yClip, "ToPlay");
|
||||
animation.AddClip(xClip, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
|
||||
yield return new WaitForSeconds(0.9f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlay"));
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.y);
|
||||
animation.CrossFade("ToCrossfade", 1.2f);
|
||||
yield return new WaitForSeconds(1.5f);
|
||||
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.y);
|
||||
Assert.IsTrue(animation.IsPlaying("ToCrossfade"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class CrossfadeQueue
|
||||
{
|
||||
[Test]
|
||||
public void CrossfadeQueue_WithNoClipAttached_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.CrossFadeQueued("UnknownState", 0f, QueueMode.CompleteOthers);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadeQueue_WithInvalidName_FailsOnCall([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
LogAssert.Expect(LogType.Error, new Regex(""));
|
||||
animation.CrossFadeQueued("invalidName", 0f, QueueMode.CompleteOthers);
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadeQueue_WithNoClipPlaying_IsStatePlaying_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToPlay");
|
||||
animation.CrossFadeQueued("ToPlay", 0f, QueueMode.CompleteOthers);
|
||||
|
||||
yield return null;
|
||||
Assert.IsTrue(animation.IsPlaying("ToPlay"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadeQueue_WithClipPlaying_IsStatePlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
var clipInstanceY = Object.Instantiate<AnimationClip>(clipY);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
clipInstanceY.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceY, "ToPlay");
|
||||
animation.AddClip(clipInstanceX, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
animation.CrossFadeQueued("ToCrossfade", 0.5f, QueueMode.CompleteOthers);
|
||||
yield return null;
|
||||
|
||||
Assert.IsFalse(animation.IsPlaying("ToCrossfade"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator CrossfadeQueue_WithClipPlaying_IsStatePlaying_AfterOriginalClipDone_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
var clipInstanceY = Object.Instantiate<AnimationClip>(clipY);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
clipInstanceY.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceY, "ToPlay");
|
||||
animation.AddClip(clipInstanceX, "ToCrossfade");
|
||||
animation.Play("ToPlay");
|
||||
animation.CrossFadeQueued("ToCrossfade", 0.0f, QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToCrossfade"));
|
||||
}
|
||||
}
|
||||
|
||||
public class Stop
|
||||
{
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_ValidName_NotPlaying_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
|
||||
yield return null;
|
||||
|
||||
animation.Stop("ValidName");
|
||||
Assert.IsFalse(animation.IsPlaying("ValidName"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_ValidName_Playing_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
animation.Play("ValidName");
|
||||
|
||||
yield return null;
|
||||
|
||||
animation.Stop("ValidName");
|
||||
Assert.IsFalse(animation.IsPlaying("ValidName"));
|
||||
}
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_ValidName_DoesntMoveObject([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
animation.Play("ValidName");
|
||||
|
||||
yield return null;
|
||||
|
||||
Vector3 localPos = animation.gameObject.transform.localPosition;
|
||||
animation.Stop("ValidName");
|
||||
Assert.AreEqual(localPos, animation.gameObject.transform.localPosition);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_WithName_OtherClip_IsPlaying_DoesntChange([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
var clipInstanceY = Object.Instantiate<AnimationClip>(clipY);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
clipInstanceY.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceY, "ClipToStop");
|
||||
animation.AddClip(clipInstanceX, "OtherClip");
|
||||
var stateToStop = animation.GetState("ClipToStop");
|
||||
var otherState = animation.GetState("OtherClip");
|
||||
|
||||
stateToStop.weight = 1f;
|
||||
stateToStop.enabled = true;
|
||||
otherState.weight = 1f;
|
||||
otherState.enabled = true;
|
||||
|
||||
yield return null;
|
||||
|
||||
animation.Stop("ClipToStop");
|
||||
Assert.IsFalse(animation.IsPlaying("ClipToStop"));
|
||||
Assert.IsTrue(animation.IsPlaying("OtherClip"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_WithoutName_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipY = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
var clipInstanceY = Object.Instantiate<AnimationClip>(clipY);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
clipInstanceY.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceY, "clip1");
|
||||
animation.AddClip(clipInstanceX, "clip2");
|
||||
|
||||
animation.GetState("clip1").enabled = true;
|
||||
animation.GetState("clip1").weight = 0.5f;
|
||||
|
||||
animation.GetState("clip2").enabled = true;
|
||||
animation.GetState("clip2").weight = 0.5f;
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("clip1"));
|
||||
Assert.IsTrue(animation.IsPlaying("clip2"));
|
||||
yield return null;
|
||||
|
||||
animation.Stop();
|
||||
Assert.IsFalse(animation.IsPlaying("clip1"));
|
||||
Assert.IsFalse(animation.IsPlaying("clip2"));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Stop_Playing_StoppedState_DoesntFire_AnyEvents([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var eventReceiver = animation.gameObject.AddComponent<SimpleAnimationTests.ReceivesEvent>();
|
||||
var clip = Resources.Load<AnimationClip>("FiresEvent");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "FiresEvent");
|
||||
animation.Play("FiresEvent");
|
||||
yield return new WaitForSeconds(0.6f);
|
||||
|
||||
Assert.AreEqual(1, eventReceiver.eventCount, "Event at 0.5 should have fired");
|
||||
animation.Stop("FiresEvent");
|
||||
animation.Play("FiresEvent");
|
||||
Assert.AreEqual(0.0f, animation.GetState("FiresEvent").time, "Time should have reset to 0");
|
||||
Assert.AreEqual(1, eventReceiver.eventCount, "No new event should have fired");
|
||||
yield return null;
|
||||
Assert.AreEqual(1, eventReceiver.eventCount, "No new event should have fired after update");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public class Rewind
|
||||
{
|
||||
[Test]
|
||||
public void Rewind_ValidName_NotPlaying_StateTime_IsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.time = 0.5f;
|
||||
animation.Rewind("ValidName");
|
||||
Assert.AreEqual(0f, state.time);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Rewind_ValidName_Playing_StateTime_IsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
animation.AddClip(clipInstanceX, "ValidName");
|
||||
animation.Play("ValidName");
|
||||
yield return new WaitForSeconds(0.5f);
|
||||
|
||||
animation.Rewind("ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreEqual(0f, state.time);
|
||||
}
|
||||
|
||||
|
||||
[Test]
|
||||
public void Rewind_WithName_OtherClip_Time_DoesntChange([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToRewind");
|
||||
animation.AddClip(clipInstance, "ToLeaveAlone");
|
||||
IAnimationState toRewind = animation.GetState("ToRewind");
|
||||
toRewind.time = 0.5f;
|
||||
IAnimationState toLeaveAlone = animation.GetState("ToLeaveAlone");
|
||||
toLeaveAlone.time = 0.5f;
|
||||
|
||||
animation.Rewind("ToRewind");
|
||||
Assert.AreNotEqual(0f, toLeaveAlone.time);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Rewind_WithoutName_AllStateTimes_AreZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ToRewind");
|
||||
animation.AddClip(clipInstance, "ToRewindToo");
|
||||
IAnimationState toRewind = animation.GetState("ToRewind");
|
||||
toRewind.time = 0.5f;
|
||||
IAnimationState toRewindToo = animation.GetState("ToRewindToo");
|
||||
toRewindToo.time = 0.5f;
|
||||
|
||||
animation.Rewind();
|
||||
Assert.AreEqual(0f, toRewind.time);
|
||||
Assert.AreEqual(0f, toRewindToo.time);
|
||||
}
|
||||
}
|
||||
|
||||
public class Sample
|
||||
{
|
||||
[Test]
|
||||
public void Sample_DoesntChange_StateTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceX, "clip1");
|
||||
|
||||
animation.GetState("clip1").enabled = true;
|
||||
animation.GetState("clip1").weight = 1f;
|
||||
animation.GetState("clip1").time = 0.5f;
|
||||
animation.Sample();
|
||||
|
||||
Assert.AreEqual(0.5f, animation.gameObject.transform.localPosition.x);
|
||||
Assert.IsTrue(Mathf.Approximately(0.5f, animation.GetState("clip1").time));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Sample_EvaluatesAt_StateTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceX, "ToSample");
|
||||
IAnimationState state = animation.GetState("ToSample");
|
||||
|
||||
state.enabled = true;
|
||||
state.weight = 1f;
|
||||
state.time = 0.5f;
|
||||
animation.Sample();
|
||||
|
||||
Assert.AreEqual(0.5f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
}
|
||||
|
||||
public class Blend
|
||||
{
|
||||
[Test]
|
||||
public void Blend_AfterBlend_Instant_State_IsPlaying([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceX, "ToBlend");
|
||||
animation.Blend("ToBlend", 1, 0);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToBlend"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Blend_AfterBlend_NonInstant_State_IsPlaying([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceX, "ToBlend");
|
||||
animation.Blend("ToBlend", 1, 0.5f);
|
||||
|
||||
Assert.IsTrue(animation.IsPlaying("ToBlend"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void Blend_DoesntChange_OtherState_Weight([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance1 = Object.Instantiate<AnimationClip>(clipX);
|
||||
var clipInstance2 = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstance1.legacy = animation.usesLegacy;
|
||||
clipInstance2.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance1, "ToBlend");
|
||||
animation.AddClip(clipInstance2, "ToLeaveAlone");
|
||||
animation.Play("ToLeaveAlone");
|
||||
animation.Blend("ToBlend", 1f, 0f);
|
||||
|
||||
Assert.AreEqual(1f, animation.GetState("ToLeaveAlone").weight);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Blend_Instant_WithWeightZero_State_DoesntStop_State([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstanceX, "ToBlend");
|
||||
animation.Blend("ToBlend", 0, 0);
|
||||
yield return null;
|
||||
Assert.IsTrue(animation.IsPlaying("ToBlend"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class PlayQueued
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator PlayQueued_Only_Plays_QueuedAnimations_Once([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clipX = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstanceX = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceX.legacy = animation.usesLegacy;
|
||||
var clipInstanceXOnce = Object.Instantiate<AnimationClip>(clipX);
|
||||
clipInstanceXOnce.legacy = animation.usesLegacy;
|
||||
clipInstanceXOnce.wrapMode = WrapMode.Once;
|
||||
|
||||
animation.AddClip(clipInstanceX, "A");
|
||||
animation.AddClip(clipInstanceX, "B");
|
||||
animation.AddClip(clipInstanceX, "C");
|
||||
|
||||
animation.Play("A");
|
||||
animation.PlayQueued("B", QueueMode.CompleteOthers);
|
||||
animation.PlayQueued("C", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(2.8f);
|
||||
Assert.IsTrue(animation.IsPlaying("C"));
|
||||
yield return new WaitForSeconds(0.3f);
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
}
|
||||
//TODO: Crossfade and Play clears queued animations
|
||||
//TODO: Stop clears queued animations
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2fd08db4a0ee3ce47b1e4f8a0913f89d
|
||||
timeCreated: 1494560140
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,61 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
public class QueueTests
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator Queue_Stop_Clip_StopsQueuedClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "PlayAndQueue");
|
||||
animation.Play("PlayAndQueue");
|
||||
animation.PlayQueued("PlayAndQueue", QueueMode.CompleteOthers);
|
||||
yield return null;
|
||||
animation.Stop("PlayAndQueue");
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
yield return null;
|
||||
//Queued animation would have started if it was going to.
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Enabled_DoesntCover_QueuedState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "PlayAndQueue");
|
||||
animation.Play("PlayAndQueue");
|
||||
animation.PlayQueued("PlayAndQueue", QueueMode.CompleteOthers);
|
||||
IAnimationState state = animation.GetState("PlayAndQueue");
|
||||
Assert.IsTrue(state.enabled);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator Queue_Looped_Clips_Block_QueuedAnimations([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Loop;
|
||||
|
||||
animation.AddClip(clipInstance, "Play");
|
||||
animation.AddClip(clipInstance, "Queued");
|
||||
animation.Play("Play");
|
||||
animation.PlayQueued("Queued", QueueMode.CompleteOthers);
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
Assert.IsFalse(animation.IsPlaying("Queued"));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 92ce3265af6ad694c9d214d1b4fd6adc
|
||||
timeCreated: 1499439871
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,693 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.TestTools;
|
||||
using NUnit.Framework;
|
||||
using System.Collections;
|
||||
|
||||
public class StateAccessTests
|
||||
{
|
||||
public class BaseTests
|
||||
{
|
||||
[Test]
|
||||
public void GetState_WithNoState_ReturnsNull([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
|
||||
IAnimationState state = animation.GetState("InvalidName");
|
||||
Assert.AreEqual(null, state);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetState_WithState_ReturnsState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreNotEqual(null, state);
|
||||
Assert.AreEqual("ValidName", state.name);
|
||||
}
|
||||
}
|
||||
|
||||
public class TimeTests
|
||||
{
|
||||
[Test]
|
||||
public void State_Time_Equals_Zero_BeforePlay([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreEqual(0f, state.time);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Time_Equals_Zero_AfterPlay([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
Assert.AreEqual(0f, state.time);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Time_Affects_ClipPlayback([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
state.weight = 1f;
|
||||
state.time = 0.5f;
|
||||
animation.Sample();
|
||||
Assert.AreEqual(animation.gameObject.transform.localPosition.x, state.time, "Sampling should have updated the position of the object at time 0.5");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Time_ChangesWith_GameTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
float previousTime = Time.time;
|
||||
yield return null;
|
||||
yield return null; //Since the Animation Component doesn't update the time on the first frame, we must wait two frames to see an effect
|
||||
float elapsedTime = Time.time - previousTime;
|
||||
Assert.AreNotEqual(elapsedTime, state.time, "State time should have changed");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Time_SetPast_ClipEnd_StopsState_AfterOneFrame([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.time = 2.0f;
|
||||
yield return null;
|
||||
Assert.IsFalse(state.enabled, "State should be disabled");
|
||||
Assert.IsFalse(animation.IsPlaying(state.name), "State should be disabled");
|
||||
Assert.IsFalse(animation.isPlaying, "State should be disabled");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Time_SetPast_ClipEnd_ThenBack_DoesntStopState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.time = 2.0f;
|
||||
state.time = 0.2f;
|
||||
yield return null;
|
||||
Assert.IsTrue(state.enabled, "State should be enabled");
|
||||
Assert.IsTrue(animation.IsPlaying(state.name), "State should be playing");
|
||||
Assert.IsTrue(animation.isPlaying, "Component should be playing");
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Time_SetPast_ClipEnd_Doesnt_Immediately_StopState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.time = 2.0f;
|
||||
Assert.IsTrue(state.enabled, "State should be enabled");
|
||||
Assert.IsTrue(animation.IsPlaying(state.name), "State should be playing");
|
||||
Assert.IsTrue(animation.isPlaying, "Component should be playing");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Time_SetTime_DoesntStartState([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.time = 2.0f;
|
||||
state.time = 0.2f;
|
||||
yield return null;
|
||||
Assert.IsTrue(state.enabled, "State should be disabled");
|
||||
Assert.IsTrue(animation.IsPlaying(state.name), "State should be disabled");
|
||||
Assert.IsTrue(animation.isPlaying, "State should be disabled");
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Time_SetTime_DoesntPlayEvents([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("FiresEvent");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
var eventReceiver = animation.gameObject.AddComponent<SimpleAnimationTests.ReceivesEvent>();
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.time = 0.1f;
|
||||
yield return null;
|
||||
Assert.AreEqual(0, eventReceiver.eventCount, "Event should not have been received");
|
||||
state.time = 0.6f;
|
||||
yield return null;
|
||||
Assert.AreEqual(0, eventReceiver.eventCount, "Event should have been received after setting the time on the state");
|
||||
}
|
||||
}
|
||||
|
||||
public class NormalizedTime
|
||||
{
|
||||
[Test]
|
||||
public void State_NormalizedTime_AffectsTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
//Create event to extend clip
|
||||
var evt = new AnimationEvent();
|
||||
evt.time = 2.0f;
|
||||
clipInstance.AddEvent(evt);
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.normalizedTime = 0.5f;
|
||||
Assert.AreEqual(state.normalizedTime*state.length, state.time);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Time_AffectsNormalizedTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
//Create event to extend clip
|
||||
var evt = new AnimationEvent();
|
||||
evt.time = 2.0f;
|
||||
clipInstance.AddEvent(evt);
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.time = 0.5f;
|
||||
Assert.AreEqual(state.time / state.length, state.normalizedTime);
|
||||
}
|
||||
}
|
||||
|
||||
public class Enabled
|
||||
{
|
||||
[Test]
|
||||
public void State_Enabled_InitialValue_False([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Enabled_SetTrue_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
Assert.IsTrue(state.enabled);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Enabled_AfterPlay_ReturnsTrue([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
Assert.IsTrue(state.enabled);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Enabled_AfterStop_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
animation.Stop(state.name);
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Enabled_AfterStateEnd_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
yield return new WaitForSeconds(1.1f);
|
||||
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Enabled_AfterSetTime_ToStateEnd_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
state.time = 2f;
|
||||
yield return null;
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Enabled_False_IsPlaying_ReturnsFalse([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
animation.Play(state.name);
|
||||
state.enabled = false;
|
||||
Assert.IsFalse(animation.isPlaying);
|
||||
Assert.IsFalse(animation.IsPlaying(state.name));
|
||||
}
|
||||
}
|
||||
|
||||
public class Speed
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator State_Speed_SetTo_Zero_Time_DoesntAdvance([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.speed = 0f;
|
||||
state.enabled = true;
|
||||
yield return null;
|
||||
yield return null; //Second frame to allow Animation Component to advance time
|
||||
Assert.AreEqual(0f, state.time);
|
||||
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Speed_Negative_StopsState_WhenTime_Reaches_Negative([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.speed = -1f;
|
||||
state.enabled = true;
|
||||
yield return null;
|
||||
yield return null; //Second frame to allow Animation Component to advance time
|
||||
Assert.IsFalse(state.enabled);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Speed_Negative_DoesntStopsState_WhenTime_Reaches_Negative_OnLoopedClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Loop;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.speed = -1f;
|
||||
state.enabled = true;
|
||||
yield return null;
|
||||
yield return null; //Second frame to allow Animation Component to advance time
|
||||
Assert.IsTrue(state.enabled);
|
||||
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Speed_DoesntAffect_NormalizedTime([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance.wrapMode = WrapMode.Loop;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.time = 0.5f;
|
||||
float normalizedTime = state.normalizedTime;
|
||||
state.speed = 10.0f;
|
||||
Assert.AreEqual(normalizedTime, state.normalizedTime);
|
||||
}
|
||||
}
|
||||
|
||||
public class Name
|
||||
{
|
||||
[Test]
|
||||
public void State_Name_Equals_AddClip_Name([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreEqual("ValidName", state.name);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Name_ChangingName_Name_Equals_NewName([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.name = "NewName";
|
||||
Assert.AreEqual("NewName", state.name);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Name_ChangingName_DoesntInvalidate_State([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.name = "NewName";
|
||||
Assert.IsTrue(state.isValid);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Name_RenamedState_CantBeFound_ByOldName([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.name = "NewName";
|
||||
state = animation.GetState("ValidName");
|
||||
Assert.IsNull(state);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Name_RenamedState_CanBeFound_ByNewName([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.name = "NewName";
|
||||
state = animation.GetState("NewName");
|
||||
Assert.IsNotNull(state);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Name_EmptyString_CanBeFound([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.name = "";
|
||||
state = animation.GetState("");
|
||||
Assert.IsNotNull(state);
|
||||
}
|
||||
}
|
||||
|
||||
public class Weight
|
||||
{
|
||||
[UnityTest]
|
||||
public IEnumerator State_Weight_EqualZero_DoesntWrite([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
state.weight = 0f;
|
||||
state.time = 0.5f; //Seek the clip so that values should be written;
|
||||
yield return null;
|
||||
Assert.AreEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Weight_FlipFlopTest([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
state.weight = 0f;
|
||||
state.time = 0.5f; //Seek the clip so that values should be written;
|
||||
yield return null;
|
||||
Assert.AreEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
state.weight = 1f;
|
||||
yield return null;
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Weight_Normalizes([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clip2 = Resources.Load<AnimationClip>("LinearY");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
var clipInstance2 = Object.Instantiate<AnimationClip>(clip2);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
clipInstance2.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "State1");
|
||||
animation.AddClip(clipInstance2, "State2");
|
||||
IAnimationState state1 = animation.GetState("State1");
|
||||
IAnimationState state2 = animation.GetState("State2");
|
||||
state1.enabled = true;
|
||||
state2.enabled = true;
|
||||
state1.weight = 1f;
|
||||
state2.weight = 1f;
|
||||
state1.time = 0.5f; //Seek the clip so that values should be written;
|
||||
state2.time = 0.5f; //Seek the clip so that values should be written;
|
||||
yield return null;
|
||||
Assert.AreEqual(0.25f, animation.gameObject.transform.localPosition.x);
|
||||
Assert.AreEqual(0.25f, animation.gameObject.transform.localPosition.y);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator State_Weight_NonZero_Writes([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
state.weight = 1f;
|
||||
state.time = 0.5f; //Seek the clip so that values should be written;
|
||||
yield return null;
|
||||
Assert.AreNotEqual(0f, animation.gameObject.transform.localPosition.x);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Weight_SetWeight_Equals_GetWeight([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.weight = 1f;
|
||||
Assert.AreEqual(1f, state.weight);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Weight_InitialValue_IsZero([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreEqual(0f, state.weight);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Weight_SetEnable_DoesntChange_Weight([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.enabled = true;
|
||||
Assert.AreEqual(0f, state.weight);
|
||||
state.weight = 1f;
|
||||
state.enabled = false;
|
||||
Assert.AreEqual(1f, state.weight);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void State_Weight_SetWeight_DoesntChange_Enable([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
state.weight = 1f;
|
||||
Assert.IsFalse(state.enabled);
|
||||
state.enabled = true;
|
||||
state.weight = 0f;
|
||||
Assert.IsTrue(state.enabled);
|
||||
}
|
||||
}
|
||||
|
||||
public class Length
|
||||
{
|
||||
[Test]
|
||||
public void State_Length_Equals_ClipLength([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, "ValidName");
|
||||
IAnimationState state = animation.GetState("ValidName");
|
||||
Assert.AreEqual(clipInstance.length, state.length);
|
||||
}
|
||||
}
|
||||
|
||||
public class Clip
|
||||
{
|
||||
[Test]
|
||||
public void State_Clip_Equals_SetClip([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
IAnimationState state = animation.GetState(clipInstance.name);
|
||||
Assert.AreEqual(clipInstance, state.clip);
|
||||
}
|
||||
}
|
||||
|
||||
public class WrapModeTests
|
||||
{
|
||||
[Test]
|
||||
public void WrapMode_Equals_Clip_WrapMode([ValueSource(typeof(ComparativeTestFixture), "Sources")]System.Type type)
|
||||
{
|
||||
IAnimation animation = ComparativeTestFixture.Instantiate(type);
|
||||
var clip = Resources.Load<AnimationClip>("LinearX");
|
||||
var clipInstance = Object.Instantiate<AnimationClip>(clip);
|
||||
clipInstance.legacy = animation.usesLegacy;
|
||||
|
||||
animation.AddClip(clipInstance, clipInstance.name);
|
||||
IAnimationState state = animation.GetState(clipInstance.name);
|
||||
Assert.AreEqual(clipInstance.wrapMode, state.wrapMode);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8cb3c934bf3f0534a8b954abe8c4984d
|
||||
timeCreated: 1498676303
|
||||
licenseType: Pro
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user