mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-15 03:30:53 +01:00
Robust.UnitTesting was both ALL tests for RT, and also API surface for content tests. Tests are now split into separate projects as appropriate, and the API side has also been split off.
116 lines
3.3 KiB
C#
116 lines
3.3 KiB
C#
using System.Collections;
|
|
using System.Text;
|
|
using NetSerializer;
|
|
using NUnit.Framework;
|
|
using Robust.Shared.Serialization;
|
|
|
|
namespace Robust.Shared.Tests.Serialization;
|
|
|
|
[Parallelizable(ParallelScope.All)]
|
|
[TestFixture, TestOf(typeof(NetBitArraySerializer))]
|
|
internal sealed class NetSerializerBitArrayTest
|
|
{
|
|
// Test that BitArray serialization matches the behavior before .NET 10
|
|
// This test can be removed in future RT versions.
|
|
|
|
[Test]
|
|
[TestCase("little creature, have you ever heard about gay people?",
|
|
"AgAP2KWjxw7YlYOyDOSVi8YO6smrxgXAoIvmDsqByfcN6oGp5g7KyYOCDcqFk8cMwIST9g3q0YPyDMLlg4IOyr2Dxw3K/QHgBg==")]
|
|
[TestCase("", "AgABAA==")]
|
|
public void Test(string testData, string expected)
|
|
{
|
|
var bitData = Encoding.UTF8.GetBytes(testData);
|
|
var bitArray = new BitArray(bitData);
|
|
|
|
var serializer = new Serializer([typeof(BitArray)],
|
|
new Settings
|
|
{
|
|
CustomTypeSerializers = [new NetBitArraySerializer()]
|
|
});
|
|
|
|
var stream = new MemoryStream();
|
|
serializer.Serialize(stream, bitArray);
|
|
|
|
var base64 = Convert.ToBase64String(stream.ToArray());
|
|
|
|
TestContext.Out.WriteLine(base64);
|
|
|
|
Assert.That(base64, Is.EqualTo(expected));
|
|
|
|
stream.Position = 0;
|
|
var newBitArray = (BitArray)serializer.Deserialize(stream);
|
|
|
|
Assert.That(newBitArray, Is.EquivalentTo(bitArray));
|
|
}
|
|
|
|
[Test]
|
|
public void Unset()
|
|
{
|
|
var bitArray = new BitArray(16);
|
|
|
|
var serializer = new Serializer([typeof(BitArray)],
|
|
new Settings
|
|
{
|
|
CustomTypeSerializers = [new NetBitArraySerializer()]
|
|
});
|
|
|
|
var stream = new MemoryStream();
|
|
serializer.Serialize(stream, bitArray);
|
|
|
|
var base64 = Convert.ToBase64String(stream.ToArray());
|
|
|
|
TestContext.Out.WriteLine(base64);
|
|
|
|
Assert.That(base64, Is.EqualTo("AgACACA="));
|
|
|
|
stream.Position = 0;
|
|
var newBitArray = (BitArray)serializer.Deserialize(stream);
|
|
|
|
Assert.That(newBitArray, Is.EquivalentTo(bitArray));
|
|
}
|
|
|
|
[Test]
|
|
public void TestClass()
|
|
{
|
|
var obj = new FooBar
|
|
{
|
|
Real = 0x3005,
|
|
Heck = "omg",
|
|
Wawa = new BitArray("I miss my wife"u8.ToArray())
|
|
};
|
|
|
|
var serializer = new Serializer([typeof(BitArray), typeof(FooBar)],
|
|
new Settings
|
|
{
|
|
CustomTypeSerializers = [new NetBitArraySerializer()]
|
|
});
|
|
|
|
var stream = new MemoryStream();
|
|
serializer.Serialize(stream, obj);
|
|
|
|
var base64 = Convert.ToBase64String(stream.ToArray());
|
|
|
|
TestContext.Out.WriteLine(base64);
|
|
|
|
Assert.That(base64, Is.EqualTo("AgQDb21nisABAwAFkoHplg3mzYPSDfKBuZcNzJUD4AE="));
|
|
|
|
stream.Position = 0;
|
|
var newObject = (FooBar)serializer.Deserialize(stream);
|
|
|
|
Assert.Multiple(() =>
|
|
{
|
|
Assert.That(newObject.Real, Is.EqualTo(obj.Real));
|
|
Assert.That(newObject.Heck, Is.EqualTo(obj.Heck));
|
|
Assert.That(newObject.Wawa, Is.EquivalentTo(obj.Wawa));
|
|
});
|
|
}
|
|
|
|
[Serializable]
|
|
private sealed class FooBar
|
|
{
|
|
public required int Real;
|
|
public required string Heck;
|
|
public required BitArray Wawa;
|
|
}
|
|
}
|