ds5678 a9f01e0536 Refactor assertions to use EnterMultipleScope
Replaced `Assert.Multiple` with `using (Assert.EnterMultipleScope())` in various test methods across multiple test classes. This change improves the readability and structure of assertions, allowing for better management of multiple assertions within a single test case. Affected classes include `AssetResolutionTests`, `FileResolutionTests`, `PPtrTests`, `SmartStreamTests`, and others, enhancing the organization of test result outputs.
2025-06-23 00:05:28 -07:00

106 lines
3.4 KiB
C#

using AssetRipper.Primitives;
using AssetRipper.SourceGenerated.Classes.ClassID_1006;
using AssetRipper.SourceGenerated.Extensions;
using NUnit.Framework.Internal;
using Swizzle = AssetRipper.SourceGenerated.Enums.TextureImporterSwizzle;
namespace AssetRipper.Tests;
internal class TextureImporterTests
{
[Test]
public void DefaultSwizzleIsZero()
{
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithSwizzleField();
Assert.That(importer.Has_Swizzle(), Is.True);
Assert.That(importer.Swizzle, Is.Zero);
}
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithoutSwizzleField();
Assert.That(importer.Has_Swizzle(), Is.False);
Assert.That(importer.Swizzle, Is.Zero);
}
}
[Test]
public void DefaultFieldSwizzleIsRRRR()
{
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithSwizzleField();
importer.GetSwizzle(out Swizzle channel0, out Swizzle channel1, out Swizzle channel2, out Swizzle channel3);
Assert.That(channel0, Is.EqualTo(Swizzle.R));
Assert.That(channel1, Is.EqualTo(Swizzle.R));
Assert.That(channel2, Is.EqualTo(Swizzle.R));
Assert.That(channel3, Is.EqualTo(Swizzle.R));
Assert.That(importer.Swizzle, Is.Zero);//Check that GetSwizzle hasn't changed the value.
}
}
[Test]
public void SwizzleHasCorrectRGBA()
{
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithSwizzleField();
importer.SetSwizzle(Swizzle.R, Swizzle.G, Swizzle.B, Swizzle.A);
Assert.That(importer.Swizzle, Is.EqualTo(0x_03_02_01_00));
}
}
[Test]
public void FieldlessSwizzleIsAlwaysRGBA()
{
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithoutSwizzleField();
importer.Swizzle = 534232;//arbitrary
Assert.That(importer.Swizzle, Is.Zero);
importer.SetSwizzle(Swizzle.One, Swizzle.OneMinusR, Swizzle.G, Swizzle.OneMinusA);//arbitrary
importer.GetSwizzle(out Swizzle channel0, out Swizzle channel1, out Swizzle channel2, out Swizzle channel3);
Assert.That(channel0, Is.EqualTo(Swizzle.R));
Assert.That(channel1, Is.EqualTo(Swizzle.G));
Assert.That(channel2, Is.EqualTo(Swizzle.B));
Assert.That(channel3, Is.EqualTo(Swizzle.A));
}
}
[TestCaseSource(nameof(GetRandomSwizzles), new object[] { 10 })]
public void GetSwizzleMatchesSetSwizzle(Swizzle s0, Swizzle s1, Swizzle s2, Swizzle s3)
{
using (Assert.EnterMultipleScope())
{
ITextureImporter importer = CreateImporterWithSwizzleField();
importer.SetSwizzle(s0, s1, s2, s3);
importer.GetSwizzle(out Swizzle channel0, out Swizzle channel1, out Swizzle channel2, out Swizzle channel3);
Assert.That(channel0, Is.EqualTo(s0));
Assert.That(channel1, Is.EqualTo(s1));
Assert.That(channel2, Is.EqualTo(s2));
Assert.That(channel3, Is.EqualTo(s3));
}
}
private static IEnumerable<Swizzle[]> GetRandomSwizzles(int count)
{
for (int i = 0; i < count; i++)
{
yield return new Swizzle[] { NextSwizzle(), NextSwizzle(), NextSwizzle(), NextSwizzle() };
}
static Swizzle NextSwizzle() => TestContext.CurrentContext.Random.NextEnum<Swizzle>();
}
private static ITextureImporter CreateImporterWithSwizzleField()
{
return AssetCreator.CreateTextureImporter(new UnityVersion(2022, 2));
}
private static ITextureImporter CreateImporterWithoutSwizzleField()
{
return AssetCreator.CreateTextureImporter(new UnityVersion(2020, 1));
}
}