You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

169 lines
6.6 KiB

using System;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.Rendering;
namespace UnityEditor.Rendering.Tests
{
class VolumeComponentCopyPasteTests
{
static T CreateComponent<T>() where T : CopyPasteTestComponent1 => ScriptableObject.CreateInstance<T>();
CopyPasteTestComponent1 m_Src1;
CopyPasteTestComponent2 m_Src2;
CopyPasteTestComponent3 m_Src3;
CopyPasteTestComponent1 m_Dst1;
CopyPasteTestComponent2 m_Dst2;
CopyPasteTestComponent3 m_Dst3;
CopyPasteTestComponent1 m_Default1;
CopyPasteTestComponent2 m_Default2;
CopyPasteTestComponent3 m_Default3;
[SetUp]
public void SetUp()
{
EditorGUIUtility.systemCopyBuffer = "";
m_Src1 = CreateComponent<CopyPasteTestComponent1>().WithModifiedValues();
m_Src2 = CreateComponent<CopyPasteTestComponent2>().WithModifiedValues();
m_Src3 = CreateComponent<CopyPasteTestComponent3>().WithModifiedValues();
m_Dst1 = CreateComponent<CopyPasteTestComponent1>();
m_Dst2 = CreateComponent<CopyPasteTestComponent2>();
m_Dst3 = CreateComponent<CopyPasteTestComponent3>();
m_Default1 = CreateComponent<CopyPasteTestComponent1>();
m_Default2 = CreateComponent<CopyPasteTestComponent2>();
m_Default3 = CreateComponent<CopyPasteTestComponent3>();
}
[Test]
public void CopyPasteSingle()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
m_Src1.AssertEquality(m_Dst1, Assert.AreNotEqual);
VolumeComponentCopyPaste.PasteSettings(m_Dst1);
m_Src1.AssertEquality(m_Dst1, Assert.AreEqual);
}
[Test]
public void CopyPasteSingleUndoRedo()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
VolumeComponentCopyPaste.PasteSettings(m_Dst1);
Undo.PerformUndo();
m_Dst1.AssertEquality(m_Default1, Assert.AreEqual); // paste target is unchanged
Undo.PerformRedo();
m_Dst1.AssertEquality(m_Src1, Assert.AreEqual); // paste target matches source
}
[Test]
public void CopyPasteMultiple()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1, m_Src2, m_Src3 });
m_Src1.AssertEquality(m_Dst1, Assert.AreNotEqual);
m_Src2.AssertEquality(m_Dst2, Assert.AreNotEqual);
m_Src3.AssertEquality(m_Dst3, Assert.AreNotEqual);
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst1, m_Dst2, m_Dst3 });
m_Src1.AssertEquality(m_Dst1, Assert.AreEqual);
m_Src2.AssertEquality(m_Dst2, Assert.AreEqual);
m_Src3.AssertEquality(m_Dst3, Assert.AreEqual);
}
[Test]
public void CopyPasteMultipleInDifferentOrder()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1, m_Src2, m_Src3 });
m_Src1.AssertEquality(m_Dst1, Assert.AreNotEqual);
m_Src2.AssertEquality(m_Dst2, Assert.AreNotEqual);
m_Src3.AssertEquality(m_Dst3, Assert.AreNotEqual);
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst3, m_Dst1, m_Dst2 });
m_Src1.AssertEquality(m_Dst1, Assert.AreEqual);
m_Src2.AssertEquality(m_Dst2, Assert.AreEqual);
m_Src3.AssertEquality(m_Dst3, Assert.AreEqual);
}
[Test]
public void CopyPasteMultipleToSingleComponent()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1, m_Src2, m_Src3 });
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst3 });
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst2 });
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst1 });
m_Src1.AssertEquality(m_Dst1, Assert.AreEqual);
m_Src2.AssertEquality(m_Dst2, Assert.AreEqual);
m_Src3.AssertEquality(m_Dst3, Assert.AreEqual);
}
[Test]
public void CopyPasteSingleToMultipleComponent()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1 });
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst3, m_Dst1, m_Dst2 });
m_Src1.AssertEquality(m_Dst1, Assert.AreEqual);
}
[Test]
public void CopyPasteMultipleUndoRedo()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1, m_Src2, m_Src3 });
VolumeComponentCopyPaste.PasteSettings(new List<VolumeComponent> { m_Dst1, m_Dst2, m_Dst3 });
Undo.PerformUndo();
// paste target is unchanged
m_Dst1.AssertEquality(m_Default1, Assert.AreEqual);
m_Dst2.AssertEquality(m_Default2, Assert.AreEqual);
m_Dst3.AssertEquality(m_Default3, Assert.AreEqual);
Undo.PerformRedo();
// paste target matches source
m_Dst1.AssertEquality(m_Src1, Assert.AreEqual);
m_Dst2.AssertEquality(m_Src2, Assert.AreEqual);
m_Dst3.AssertEquality(m_Src3, Assert.AreEqual);
}
[Test]
public void CannotPasteWithEmptyCopyBuffer()
{
Assert.False(VolumeComponentCopyPaste.CanPaste(m_Src1));
}
[Test]
public void CanPasteToSelf()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
Assert.True(VolumeComponentCopyPaste.CanPaste(m_Src1));
}
[Test]
public void CanPasteToMatchingType()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
Assert.True(VolumeComponentCopyPaste.CanPaste(m_Dst1));
}
[Test]
public void CannotPasteToDifferentType()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
Assert.False(VolumeComponentCopyPaste.CanPaste(m_Dst3));
}
[Test]
public void CanPasteIfSingleMatchingType()
{
VolumeComponentCopyPaste.CopySettings(m_Src1);
Assert.True(VolumeComponentCopyPaste.CanPaste(new List<VolumeComponent> { m_Dst1, m_Dst2, m_Dst3 }));
}
[Test]
public void CanPasteIfMultipleMatchingTypes()
{
VolumeComponentCopyPaste.CopySettings(new List<VolumeComponent> { m_Src1, m_Src2, m_Src3 });
Assert.True(VolumeComponentCopyPaste.CanPaste(new List<VolumeComponent> { m_Dst1, m_Dst3, m_Dst2 }));
}
}
}