Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,17 @@ public IEnumerator CreateComponent_And_Graph_Restart_Component_Expected()
yield return new ExitPlayMode();
}

[UnityTest]
public IEnumerator Check_VFXRenderer_DefaultRenderingLayerNames()
{
//The content of default rendering layer names is retrieved by reflection.
var layerNames = VisualEffectEditor.RendererEditor.s_DefaultRenderingLayerNames;
Assert.IsNotNull(layerNames);
Assert.IsTrue(layerNames.Length != 0);
Assert.IsFalse(layerNames.Any(o => string.IsNullOrEmpty(o)));
yield return null;
}

[UnityTest]
public IEnumerator CreateComponent_And_Graph_Modify_It_To_Generate_Expected_Exception()
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -637,7 +637,119 @@ public void CheckBuiltinExpressionListed([ValueSource("CheckAllBuiltinExpression
var operation = (UnityEngine.VFX.VFXExpressionOperation)Enum.Parse(typeof(UnityEngine.VFX.VFXExpressionOperation), expressionName);
var referenceExpression = VFXBuiltInExpression.Find(operation);
Assert.IsTrue(VFXDynamicBuiltInParameter.s_BuiltInInfo.Values.Any(o => o.expression == referenceExpression));
}

public struct ApplyAddressingModeTestCase
{
public ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode _mode, uint _count)
{
mode = _mode;
count = _count;
expectedSequence = new uint[Mathf.Max(50, 7 * (int)_count)];

//Naive implementation for reference
if (mode == VFXOperatorUtility.SequentialAddressingMode.Clamp)
{
for (uint i = 0; i < expectedSequence.Length; ++i)
{
expectedSequence[i] = i < count ? i : count - 1;
}
}
else if (mode == VFXOperatorUtility.SequentialAddressingMode.Wrap)
{
uint current = 0u;
for (uint i = 0; i < expectedSequence.Length; ++i)
{
expectedSequence[i] = current;
current++;
if (current >= count)
current = 0u;
}
}
else if (mode == VFXOperatorUtility.SequentialAddressingMode.Mirror)
{
uint current = 0u;
bool increment = true;
for (uint i = 0; i < expectedSequence.Length; ++i)
{
expectedSequence[i] = current;
if (increment)
{
current++;
if (current >= count)
{
increment = false;
current = count > 2u ? count - 2u : 0u;
}
}
else
{
if (current == 0u)
{
increment = true;
current = count == 1u ? 0u : 1u;
}
else
{
current--;
}
}
}
}
}

public VFXOperatorUtility.SequentialAddressingMode mode;
public uint count;
public uint[] expectedSequence;

public override string ToString()
{
return string.Format("{0}_{1}_{2}", mode.ToString(), count, expectedSequence.Length);
}
}


static readonly ApplyAddressingModeTestCase[] ApplyAddressingModeTestCase_ValueSource =
{
//The 0 case is always undefined
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Wrap, 1u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Wrap, 4u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Clamp, 1u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Clamp, 4u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 1u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 2u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 3u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 4u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 7u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 8u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 9u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 13u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 15u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 27u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 32u),
new ApplyAddressingModeTestCase(VFXOperatorUtility.SequentialAddressingMode.Mirror, 33u),
};

[Test]
public void CheckExpectedSequence_ApplyAddressingMode([ValueSource("ApplyAddressingModeTestCase_ValueSource")] ApplyAddressingModeTestCase addressingMode)
{
var computedSequence = new uint[addressingMode.expectedSequence.Length];
for (uint index = 0u; index < computedSequence.Length; ++index)
{
var indexExpr = VFXValue.Constant(index);
var countExpr = VFXValue.Constant(addressingMode.count);
var computed = VFXOperatorUtility.ApplyAddressingMode(indexExpr, countExpr, addressingMode.mode);

var context = new VFXExpression.Context(VFXExpressionContextOption.CPUEvaluation);
var result = context.Compile(computed);

computedSequence[index] = result.Get<uint>();
}

for (uint index = 0u; index < computedSequence.Length; ++index)
{
Assert.AreEqual(addressingMode.expectedSequence[index], computedSequence[index]);
}
}
}
}
Expand Down
Loading