124 lines
3.7 KiB
C#
124 lines
3.7 KiB
C#
using T3.Core.Animation;
|
|
using Xunit;
|
|
|
|
namespace Core.Tests;
|
|
|
|
public class VDefinitionCloneTests
|
|
{
|
|
[Fact]
|
|
public void CloneCopiesAllProperties()
|
|
{
|
|
var original = CreateNonDefaultVDefinition();
|
|
|
|
var clone = original.Clone();
|
|
|
|
Assert.Equal(original.U, clone.U);
|
|
Assert.Equal(original.Value, clone.Value);
|
|
Assert.Equal(original.InInterpolation, clone.InInterpolation);
|
|
Assert.Equal(original.OutInterpolation, clone.OutInterpolation);
|
|
Assert.Equal(original.InTangentAngle, clone.InTangentAngle);
|
|
Assert.Equal(original.OutTangentAngle, clone.OutTangentAngle);
|
|
Assert.Equal(original.Weighted, clone.Weighted);
|
|
Assert.Equal(original.BrokenTangents, clone.BrokenTangents);
|
|
}
|
|
|
|
[Fact]
|
|
public void CloneIsIndependent()
|
|
{
|
|
var original = CreateNonDefaultVDefinition();
|
|
var clone = original.Clone();
|
|
|
|
original.BrokenTangents = false;
|
|
original.Weighted = false;
|
|
original.Value = 999.0;
|
|
|
|
Assert.True(clone.BrokenTangents);
|
|
Assert.True(clone.Weighted);
|
|
Assert.Equal(42.0, clone.Value);
|
|
}
|
|
|
|
[Fact]
|
|
public void CloneGetsNewUniqueId()
|
|
{
|
|
var original = CreateNonDefaultVDefinition();
|
|
var clone = original.Clone();
|
|
|
|
Assert.NotEqual(original.UniqueId, clone.UniqueId);
|
|
}
|
|
|
|
[Fact]
|
|
public void UniqueIdsAreUnique()
|
|
{
|
|
var a = new VDefinition();
|
|
var b = new VDefinition();
|
|
var c = new VDefinition();
|
|
|
|
Assert.NotEqual(a.UniqueId, b.UniqueId);
|
|
Assert.NotEqual(b.UniqueId, c.UniqueId);
|
|
Assert.NotEqual(a.UniqueId, c.UniqueId);
|
|
}
|
|
|
|
[Fact]
|
|
public void CopyValuesFromCopiesAllProperties()
|
|
{
|
|
var source = CreateNonDefaultVDefinition();
|
|
var target = new VDefinition();
|
|
|
|
target.CopyValuesFrom(source);
|
|
|
|
Assert.Equal(source.U, target.U);
|
|
Assert.Equal(source.Value, target.Value);
|
|
Assert.Equal(source.InInterpolation, target.InInterpolation);
|
|
Assert.Equal(source.OutInterpolation, target.OutInterpolation);
|
|
Assert.Equal(source.InTangentAngle, target.InTangentAngle);
|
|
Assert.Equal(source.OutTangentAngle, target.OutTangentAngle);
|
|
Assert.Equal(source.Weighted, target.Weighted);
|
|
Assert.Equal(source.BrokenTangents, target.BrokenTangents);
|
|
}
|
|
|
|
[Fact]
|
|
public void CopyValuesFromDoesNotCopyUniqueId()
|
|
{
|
|
var source = CreateNonDefaultVDefinition();
|
|
var target = new VDefinition();
|
|
var originalTargetId = target.UniqueId;
|
|
|
|
target.CopyValuesFrom(source);
|
|
|
|
Assert.Equal(originalTargetId, target.UniqueId);
|
|
Assert.NotEqual(source.UniqueId, target.UniqueId);
|
|
}
|
|
|
|
[Fact]
|
|
public void CopyValuesFromUpdatesExistingValues()
|
|
{
|
|
var source = new VDefinition { BrokenTangents = true, Weighted = true };
|
|
var target = new VDefinition();
|
|
|
|
target.CopyValuesFrom(source);
|
|
Assert.True(target.BrokenTangents);
|
|
Assert.True(target.Weighted);
|
|
|
|
source.BrokenTangents = false;
|
|
source.Weighted = false;
|
|
target.CopyValuesFrom(source);
|
|
Assert.False(target.BrokenTangents);
|
|
Assert.False(target.Weighted);
|
|
}
|
|
|
|
private static VDefinition CreateNonDefaultVDefinition()
|
|
{
|
|
return new VDefinition
|
|
{
|
|
U = 10.5,
|
|
Value = 42.0,
|
|
InInterpolation = VDefinition.KeyInterpolation.Smooth,
|
|
OutInterpolation = VDefinition.KeyInterpolation.Horizontal,
|
|
InTangentAngle = 1.5,
|
|
OutTangentAngle = 2.7,
|
|
Weighted = true,
|
|
BrokenTangents = true
|
|
};
|
|
}
|
|
}
|