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.
66 lines
2.7 KiB
66 lines
2.7 KiB
using NUnit.Framework;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using UnityEngine.Rendering;
|
|
|
|
namespace UnityEditor.Rendering.Tests
|
|
{
|
|
class SwapExtensionsTests
|
|
{
|
|
static TestCaseData[] s_ListTestsCaseDatas =
|
|
{
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 0, 5)
|
|
.SetName("Swap first for last")
|
|
.Returns(new int[] {6,2,3,4,5,1}),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 5, 0)
|
|
.SetName("Swap last for first")
|
|
.Returns(new int[] {6,2,3,4,5,1}),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 1, 2)
|
|
.SetName("Swap elements in the middle")
|
|
.Returns(new int[] {1,3,2,4,5,6}),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 0, 2)
|
|
.SetName("Swap first for something in the middle")
|
|
.Returns(new int[] {3,2,1,4,5,6}),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 5, 2)
|
|
.SetName("Swap last for something in the middle")
|
|
.Returns(new int[] {1,2,6,4,5,3}),
|
|
};
|
|
|
|
[Test, TestCaseSource(nameof(s_ListTestsCaseDatas))]
|
|
public int[] TrySwap(int[] ints, int from, int to)
|
|
{
|
|
int[] copy = new int[ints.Length];
|
|
Array.Copy(ints, 0, copy, 0, ints.Length);
|
|
|
|
Assert.IsTrue(copy.TrySwap(from, to, out var _));
|
|
return copy;
|
|
}
|
|
|
|
static TestCaseData[] s_ListTestsCaseDatasExceptions =
|
|
{
|
|
new TestCaseData(null, -1, 1).SetName("Null list").Returns(typeof(ArgumentNullException)),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, -1, 1).SetName("From negative").Returns(typeof(ArgumentOutOfRangeException)),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 6, 1).SetName("From larger than collection").Returns(typeof(ArgumentOutOfRangeException)),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 1, -1).SetName("To negative").Returns(typeof(ArgumentOutOfRangeException)),
|
|
new TestCaseData(new int[] {1,2,3,4,5,6}, 1, 6).SetName("To larger than collection").Returns(typeof(ArgumentOutOfRangeException)),
|
|
};
|
|
|
|
[Test, TestCaseSource(nameof(s_ListTestsCaseDatasExceptions))]
|
|
public Type ExceptionsAreCorrect(int[] ints, int from, int to)
|
|
{
|
|
if (ints != null)
|
|
{
|
|
int[] copy = new int[ints.Length];
|
|
Array.Copy(ints, 0, copy, 0, ints.Length);
|
|
|
|
copy.TrySwap(from, to, out var error);
|
|
return error.GetType();
|
|
}
|
|
else
|
|
{
|
|
ints.TrySwap(from, to, out var error);
|
|
return error.GetType();
|
|
}
|
|
}
|
|
}
|
|
}
|